全國最多中醫師線上諮詢網站-台灣中醫網
發文 回覆 瀏覽次數:1887
推到 Plurk!
推到 Facebook!

班表查詢

答題得分者是:careychen
ru226531
一般會員


發表:12
回覆:10
積分:4
註冊:2008-05-06

發送簡訊給我
#1 引用回覆 回覆 發表時間:2008-10-14 16:36:10 IP:140.128.xxx.xxx 訂閱
我做了一個類似課表的班表

我寫了一段查詢 雖然可以執行 但當我搜尋之後便出錯

我是不是有什麼地方寫錯了呢?>"<

我有兩個資料表employees、clinic

在這裡所使用的EQuery1是zeos元件的ZQuery

我要查出employees.c_no=clinic.c_no的資料

而我在EQuery(employees的Query)上的SQL屬性上寫

var
Form13: TForm13;
c_no: array[0..21] of TEdit;
e_name: array[0..21] of TEdit;

uses Unit5, Unit1, Unit2, Unit10, Unit11, Unit12, Unit3, Unit4, Unit6,
Unit7, Unit8, Unit9;


procedure TForm13.BitBtn3Click(Sender: TObject);
var
m:integer;
begin


for m:=0 to 20 do
begin
c_no[m]:=TEdit.Create(module.EQuery1);
c_no[m].Parent:=Form1;
c_no[m].Text:='';
c_no[m].Left:=80 80*(m div 3);
c_no[m].Top:=80 40*(m mod 3);
c_no[m].Width:=80;
c_no[m].Height:=20;
c_no[m].Show;

label1.Caption:=module.EQuery1.fieldvalues['employees.c_no'] ;
m:=0;
while not module.EQuery1.Eof do
begin
c_no[m].text:=module.EQuery1.fieldvalues['employees.c_no'];
e_name[m].Text:=module.EQuery1.fieldvalues['employees.e_name']
' ' module.EQuery1.fields.fields[0].AsString;
module.EQuery1.next;
m:=m 1;
end;

end;


Undeclared identifier:'Parameters'

還有

Missing operator or semicolon


請問以上該怎麼解決呢

或是我少了什麼步驟?



編輯記錄
ru226531 重新編輯於 2008-10-15 13:46:17, 註解 無‧
ru226531 重新編輯於 2008-10-15 13:56:48, 註解 無‧
careychen
尊榮會員


發表:41
回覆:580
積分:959
註冊:2004-03-03

發送簡訊給我
#2 引用回覆 回覆 發表時間:2008-10-14 16:46:44 IP:60.248.xxx.xxx 訂閱
一下 EQuery 一下 ETable 你的程式還要再確認一下!!

===================引 用 ru226531 文 章===================
我做了一個類似課表的班表

我寫了一段查詢 雖然可以執行 但當我搜尋之後便出錯

我是不是有什麼地方寫錯了呢?>"<

我有兩個資料表employees、clinic

我要查出employees.c_no=clinic.c_no的資料

而我在EQuery(employees的Query)上的SQL屬性上寫

procedure TForm13.BitBtn3Click(Sender: TObject);
var
m:integer;
begin


for m:=0 to 20 do
begin
c_no[m]:=TEdit.Create(module.EQuery1);
c_no[m].Parent:=Form1;
c_no[m].Text:='';
c_no[m].Left:=80 80*(m div 3);
c_no[m].Top:=80 40*(m mod 3);
c_no[m].Width:=80;
c_no[m].Height:=20;
c_no[m].Show;

label1.Caption:=module.EQuery1.fieldvalues['employees.c_no'] ;
m:=0;
while not module.EQuery1.Eof do
begin
c_no[m].text:=module.EQuery1.fieldvalues['employees.c_no'];
e_name[m].Text:=module.EQuery1.fieldvalues['employees.e_name']
' ' module.EQuery1.fields.fields[0].AsString;
module.EQuery1.next;
m:=m 1;
end;

end;


Project Project1.exe raised exception class EDatabase Error with message 'EQuery1:Field'employees.c_no'not found'.Process stopped. Use Step or Run to continue.
這是班表的版面

班表版面

------
價值的展現,來自於你用哪一個角度來看待它!!
pedro
尊榮會員


發表:152
回覆:1187
積分:892
註冊:2002-06-12

發送簡訊給我
#3 引用回覆 回覆 發表時間:2008-10-14 22:29:20 IP:61.217.xxx.xxx 未訂閱
看不出來EQuery1跟ETable1的關係
由錯誤訊息看來
module.Etable1.fieldByName('c_no').asstring:=edit1.text;
這段Etable1應該沒有c_no吧?
怪怪地,程式沒貼完整
===================引 用 ru226531 文 章===================
module.EQuery1.Clear;
module.EQuery1.Sql.Add('select * from employees where e_no=:e01');
module.Etable1.fieldByName('c_no').asstring:=edit1.text;
module.Etable1.Active:=True;
chih_kuan
中階會員


發表:38
回覆:82
積分:54
註冊:2003-02-20

發送簡訊給我
#4 引用回覆 回覆 發表時間:2008-10-15 09:55:10 IP:61.59.xxx.xxx 未訂閱
EQuery1 =>能否告知...是啥元件 ( ADOQuery? TQuery? or ...)
我是對這東西蠻感興趣的..
因為...似乎 ...沒有 Clear 這個東西
有 ClearField
我的看法是...
會不會一開始..你就把 欄位結構給全部刪除了..
導致後面..取不到?

------
叔叔有練過,初學者不要學。
編輯記錄
chih_kuan 重新編輯於 2008-10-15 09:57:35, 註解 無‧
ru226531
一般會員


發表:12
回覆:10
積分:4
註冊:2008-05-06

發送簡訊給我
#5 引用回覆 回覆 發表時間:2008-10-15 13:51:58 IP:140.128.xxx.xxx 訂閱
TO careychenpedro大大:

不好意思XD"我貼錯程式了

目前已用紅字表示重新修改


TO chih_kuan大大:

EQuery1是zeos元件的ZQuery

程式有貼錯 我已用紅字重新修正
chih_kuan
中階會員


發表:38
回覆:82
積分:54
註冊:2003-02-20

發送簡訊給我
#6 引用回覆 回覆 發表時間:2008-10-15 17:20:47 IP:61.59.xxx.xxx 未訂閱
Undeclared identifier:'Parameters' =>表示...EQuery 這東西..根本沒有 Parameters 這個屬性..

Missing operator or semicolon =>可能是 Paramaters 那行有誤.導致後面..Code 在編排上..被Compiler 認定為有問題..

------
叔叔有練過,初學者不要學。
ru226531
一般會員


發表:12
回覆:10
積分:4
註冊:2008-05-06

發送簡訊給我
#7 引用回覆 回覆 發表時間:2008-10-17 17:59:16 IP:140.128.xxx.xxx 訂閱
我去查資料說fieldbyname與parameters的用法差不多

如果要用zeos的ZQuery元件去寫fieldbyname

要如何寫呢>"<

我有嘗試寫了一段

procedure TForm13.BitBtn3Click(Sender: TObject);
var
m:integer;
begin
bn.EMPtable1.active:=false;
bn.Ctable1.fieldbyname('c_no').value:=edit1.text;
bn.EMPTable1.active:=true;
bn.ctable1.fieldByName('c_no').asstring:=edit1.text;
bn.ctable1.Active:=True;
Label1.Caption:=module.EQuery1.SQL.Text;

for m:=0 to 20 do
begin
c_no[m]:=TEdit.Create(module.EQuery1);
c_no[m].Parent:=Form1;
c_no[m].Text:='';
c_no[m].Left:=80 80*(m div 3);
c_no[m].Top:=80 40*(m mod 3);
c_no[m].Width:=80;
c_no[m].Height:=20;
c_no[m].Show;
e_name[m]:=TEdit.Create(module.EQuery1);
e_name[m].Parent:=Form1;
e_name[m].Text:='';
e_name[m].Left:=80 80*(m div 3);
e_name[m].Top:=100 40*(m mod 3);
e_name[m].Width:=80;
e_name[m].Height:=20;
e_name[m].font.size:=2;
e_name[m].Color:=clbtnface;
e_name[m].Show;
end;
label1.Caption:=module.ctable1.fieldvalues['clinic.c_no'] ;
m:=0;
while not module.EQuery1.Eof do
begin
c_no[m].text:=module.EQuery1.fieldvalues['employees.c_no'];
e_name[m].Text:=module.EQuery1.fieldvalues['employees.e_name']
' ' module.EQuery1.fields.fields[0].AsString;
module.EQuery1.next;
m:=m 1;
end;

end;


但這樣還是出現了錯誤訊息

這次是

CTable1:Field 'clinic.c_no' not found

不好意思麻煩大大了Q_Q
===================引 用 chih_kuan 文 章===================
Undeclared identifier:'Parameters' =>表示...EQuery 這東西..根本沒有 Parameters 這個屬性..

Missing operator or semicolon =>可能是 Paramaters 那行有誤.導致後面..Code 在編排上..被Compiler 認定為有問題..

careychen
尊榮會員


發表:41
回覆:580
積分:959
註冊:2004-03-03

發送簡訊給我
#8 引用回覆 回覆 發表時間:2008-10-17 18:42:10 IP:60.248.xxx.xxx 訂閱
你去哪查到的資料寫 FieldByName 和 Parameters 的用法差不多的呢??

寫 Parameters 的用法是在當你的 sql 語法內容是不固定的,需要在程式的部份代入 Parameters
然後把整個串好的 SQL 指令送給資料庫

而 FieldByName 是當資料回傳時,讀出回傳的資料內容用的,一去一回的用法不同要注意!!

你這次丟出來的程式,跟你第一次丟出來時不是差不多嗎?
元件已經混用了,沒辦法查出正確的資料!!

bn.EMPtable1.active:=false;
bn.Ctable1.fieldbyname('c_no').value:=edit1.text; // 尚未 Open ,而且這種寫法是把值寫回資料庫
bn.EMPTable1.active:=true;
bn.ctable1.fieldByName('c_no').asstring:=edit1.text;
bn.ctable1.Active:=True;

你後來修正的結果應該是對的,但出現的那個錯誤訊息
Missing operator or semicolon <== 這應該是有停在錯誤的那一行,是哪一行?

===================引 用 ru226531 文 章===================
我去查資料說fieldbyname與parameters的用法差不多

如果要用zeos的ZQuery元件去寫fieldbyname

要如何寫呢>"<

我有嘗試寫了一段

procedure TForm13.BitBtn3Click(Sender: TObject);
var
m:integer;
begin
bn.EMPtable1.active:=false;
bn.Ctable1.fieldbyname('c_no').value:=edit1.text;
bn.EMPTable1.active:=true;
bn.ctable1.fieldByName('c_no').asstring:=edit1.text;
bn.ctable1.Active:=True;
Label1.Caption:=module.EQuery1.SQL.Text;

for m:=0 to 20 do
begin
c_no[m]:=TEdit.Create(module.EQuery1);
c_no[m].Parent:=Form1;
c_no[m].Text:='';
c_no[m].Left:=80 80*(m div 3);
c_no[m].Top:=80 40*(m mod 3);
c_no[m].Width:=80;
c_no[m].Height:=20;
c_no[m].Show;
e_name[m]:=TEdit.Create(module.EQuery1);
e_name[m].Parent:=Form1;
e_name[m].Text:='';
e_name[m].Left:=80 80*(m div 3);
e_name[m].Top:=100 40*(m mod 3);
e_name[m].Width:=80;
e_name[m].Height:=20;
e_name[m].font.size:=2;
e_name[m].Color:=clbtnface;
e_name[m].Show;
end;
label1.Caption:=module.ctable1.fieldvalues['clinic.c_no'] ;
m:=0;
while not module.EQuery1.Eof do
begin
c_no[m].text:=module.EQuery1.fieldvalues['employees.c_no'];
e_name[m].Text:=module.EQuery1.fieldvalues['employees.e_name']
' ' module.EQuery1.fields.fields[0].AsString;
module.EQuery1.next;
m:=m 1;
end;

end;


但這樣還是出現了錯誤訊息

這次是

CTable1:Field 'clinic.c_no' not found

不好意思麻煩大大了Q_Q
===================引 用 chih_kuan 文 章===================
Undeclared identifier:'Parameters' =>表示...EQuery 這東西..根本沒有 Parameters 這個屬性..

Missing operator or semicolon =>可能是 Paramaters 那行有誤.導致後面..Code 在編排上..被Compiler 認定為有問題..

------
價值的展現,來自於你用哪一個角度來看待它!!
系統時間:2024-11-24 19:31:50
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!