線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:1537
推到 Plurk!
推到 Facebook!

請教這各錯誤訊息是怎麼了嗎?....

答題得分者是:st33chen
lovemari
中階會員


發表:134
回覆:224
積分:76
註冊:2005-08-18

發送簡訊給我
#1 引用回覆 回覆 發表時間:2008-09-18 11:03:08 IP:122.116.xxx.xxx 訂閱
想請教

以下小弟打的指令錯在那呢??

該如何修改呢??

TNAHKS

[code delphi]
procedure TForm1.FormCreate(Sender: TObject);
begin

ComboBox1.Items.Strings := 'SELECT B.EMP_NAME FROM SAJET.HR_EMP A,SAJET.SYS_EMP B WHERE A.EMP_ID = EMP_ID ORDER BY B.EMP_NAME';
end;
[/code]


附上錯誤訊息

[Error] Unit1.pas(74): '[' expected but ':=' found
[Fatal Error] Project1.dpr(5): Could not compile used unit 'Unit1.pas'
------
Program : Delphi 7
DataBase : Oracle 9i
Client : ClientDataSet
編輯記錄
lovemari 重新編輯於 2008-09-18 11:04:09, 註解 無‧
pceyes
尊榮會員


發表:70
回覆:657
積分:1140
註冊:2003-03-13

發送簡訊給我
#2 引用回覆 回覆 發表時間:2008-09-18 11:11:22 IP:122.118.xxx.xxx 訂閱
procedure TForm1.FormCreate(Sender: TObject);
begin
// XXX ComboBox1.Items.Strings := 'SELECT B.EMP_NAME FROM SAJET.HR_EMP A,SAJET.SYS_EMP B WHERE A.EMP_ID = EMP_ID ORDER BY B.EMP_NAME';
ComboBox1.Items.Add('SELECT B.EMP_NAME FROM SAJET.HR_EMP A,SAJET.SYS_EMP B WHERE A.EMP_ID = EMP_ID ORDER BY B.EMP_NAME');
end;
------
努力會更接近成功
lovemari
中階會員


發表:134
回覆:224
積分:76
註冊:2005-08-18

發送簡訊給我
#3 引用回覆 回覆 發表時間:2008-09-18 11:15:42 IP:122.116.xxx.xxx 訂閱
大大 我照你方式寫之後

程式可以RUN

可是 ComboBox1 的 Item 不是去SELECT EMP_NAME 而是顯示整段

"SELECT B.EMP_NAME FROM SAJET.HR_EMP A,SAJET.SYS_EMP B WHERE A.EMP_ID = EMP_ID ORDER BY B.EMP_NAME"

是不是那我打錯了???
------
Program : Delphi 7
DataBase : Oracle 9i
Client : ClientDataSet
pceyes
尊榮會員


發表:70
回覆:657
積分:1140
註冊:2003-03-13

發送簡訊給我
#4 引用回覆 回覆 發表時間:2008-09-18 11:21:30 IP:122.118.xxx.xxx 訂閱
因為我不知你目地何在,回的只是基本元件使用方式,一般TList類都是這樣用的。
如果是資料庫部分,你要把它加到
AdoQuery.close;
Sql := ComboBox1.items[ComboBox1.itemindex];
AdoQuery.Open;
才會執行Query。
------
努力會更接近成功
lovemari
中階會員


發表:134
回覆:224
積分:76
註冊:2005-08-18

發送簡訊給我
#5 引用回覆 回覆 發表時間:2008-09-18 11:35:20 IP:122.116.xxx.xxx 訂閱
痾....小弟是用 ClietDataSet + DataSource 耶

這樣的話該如何修改呢?

------
Program : Delphi 7
DataBase : Oracle 9i
Client : ClientDataSet
pceyes
尊榮會員


發表:70
回覆:657
積分:1140
註冊:2003-03-13

發送簡訊給我
#6 引用回覆 回覆 發表時間:2008-09-18 11:44:31 IP:122.118.xxx.xxx 訂閱
clientdataset1.close;
ClientDataSet1.CommandText := ComboBox1.Text;
clientdataset1.open;
------
努力會更接近成功
st33chen
尊榮會員


發表:15
回覆:591
積分:1201
註冊:2005-09-30

發送簡訊給我
#7 引用回覆 回覆 發表時間:2008-09-18 13:39:39 IP:122.116.xxx.xxx 訂閱
您好,

不知您為何這麼寫, 單從語法來討論,

要加一列字串給 combobox 的話
combobox1.items.add(' ............................................'); // 一次加一列

combobox1.items.text := '................................................'; // 一次擙掉所有文字, 可以是很多列字串

參考一下,

===================引 用 lovemari 文 章===================
想請教

以下小弟打的指令錯在那呢??

該如何修改呢??

TNAHKS

[code delphi]
procedure TForm1.FormCreate(Sender: TObject);
begin

ComboBox1.Items.Strings := 'SELECT B.EMP_NAME FROM SAJET.HR_EMP A,SAJET.SYS_EMP B WHERE A.EMP_ID = EMP_ID ORDER BY B.EMP_NAME';
end;
[/code]


附上錯誤訊息

[Error] Unit1.pas(74): '[' expected but ':=' found
[Fatal Error] Project1.dpr(5): Could not compile used unit 'Unit1.pas'
------
IS IT WHAT IT IS
我是 李慕白 請倒著唸.
又想把老話拿出來說, 請用台語發音 : 專家專家全是ROBOT CAR (滷肉腳啦);
都已接手這麼久了, 績效還是那麼爛, 講話還那麼大聲.
st33chen
尊榮會員


發表:15
回覆:591
積分:1201
註冊:2005-09-30

發送簡訊給我
#8 引用回覆 回覆 發表時間:2008-09-18 13:46:59 IP:122.116.xxx.xxx 訂閱
您好, 
我想我了解您的需求了

query1.sql.text :='select ...................................';
query1.open;
combobox1.clear;
while not query1.eof do begin
combobox1.add(query1.fieldbyname('emp_name').asstring;
query1.next;
end;
query1.close;

是不是您所想要的?

另外, 用 DBcombobox 也可吧, 請自行試試


===================引 用 lovemari 文 章===================
大大 我照你方式寫之後

程式可以RUN

可是 ComboBox1 的 Item 不是去SELECT EMP_NAME 而是顯示整段

"SELECT B.EMP_NAME FROM SAJET.HR_EMP A,SAJET.SYS_EMP B WHERE A.EMP_ID = EMP_ID ORDER BY B.EMP_NAME"

是不是那我打錯了???
------
IS IT WHAT IT IS
我是 李慕白 請倒著唸.
又想把老話拿出來說, 請用台語發音 : 專家專家全是ROBOT CAR (滷肉腳啦);
都已接手這麼久了, 績效還是那麼爛, 講話還那麼大聲.
lovemari
中階會員


發表:134
回覆:224
積分:76
註冊:2005-08-18

發送簡訊給我
#9 引用回覆 回覆 發表時間:2008-09-19 11:46:10 IP:122.116.xxx.xxx 訂閱
小弟改成以下方式寫法 放在 FormShow

csTemp2 = ClientDataSet

出現錯誤訊息

ORA-00900 SQL 敘述句無效

[code delphi]
procedure TForm1.FormShow(Sender: TObject);
var
S,SQL : String;
Begin
....................
....................
....................
....................

With csTemp2 do
begin
Close;

SQL := 'SELECT B.EMP_NAME '
'FROM SAJET.HR_EMP A, '
'SAJET.SYS_EMP B '

'WHERE A.EMP_ID = B.EMP_ID '
'ORDER BY B.EMP_NAME';

csTemp2.Open;
Combobox1.Clear;

while not csTemp2.eof do begin
Combobox1.Items.Add(csTemp2.fieldbyname('EMP_NAME').AsString);
csTemp2.Next;

end;
end;
[/code]
------
Program : Delphi 7
DataBase : Oracle 9i
Client : ClientDataSet
編輯記錄
lovemari 重新編輯於 2008-09-19 11:49:05, 註解 無‧
st33chen
尊榮會員


發表:15
回覆:591
積分:1201
註冊:2005-09-30

發送簡訊給我
#10 引用回覆 回覆 發表時間:2008-09-23 15:57:32 IP:122.116.xxx.xxx 訂閱
sorry, 我沒用過 clientdataset
不過, 我用 tquery 的經驗是

with query1 do begin
sql.TEXT := 'SELECT .....';
end;

不知您是否要試一下
SQL :=
改成 SQL.TEXT :=


===================引 用 lovemari 文 章===================
小弟改成以下方式寫法 放在 FormShow

csTemp2 = ClientDataSet

出現錯誤訊息

ORA-00900 SQL 敘述句無效

[code delphi]
procedure TForm1.FormShow(Sender: TObject);
var
S,SQL : String;
Begin
....................
....................
....................
....................

With csTemp2 do
begin
Close;

SQL := 'SELECT B.EMP_NAME '
'FROM SAJET.HR_EMP A, '
'SAJET.SYS_EMP B '

'WHERE A.EMP_ID = B.EMP_ID '
'ORDER BY B.EMP_NAME';

csTemp2.Open;
Combobox1.Clear;

while not csTemp2.eof do begin
Combobox1.Items.Add(csTemp2.fieldbyname('EMP_NAME').AsString);
csTemp2.Next;

end;
end;
[/code]
------
IS IT WHAT IT IS
我是 李慕白 請倒著唸.
又想把老話拿出來說, 請用台語發音 : 專家專家全是ROBOT CAR (滷肉腳啦);
都已接手這麼久了, 績效還是那麼爛, 講話還那麼大聲.
lovemari
中階會員


發表:134
回覆:224
積分:76
註冊:2005-08-18

發送簡訊給我
#11 引用回覆 回覆 發表時間:2008-09-25 15:16:23 IP:122.116.xxx.xxx 訂閱
我知道錯在哪了

我把 SQL 改成 commandtext := 'SELECT....'

or commandtext := SQL;

就可以了
------
Program : Delphi 7
DataBase : Oracle 9i
Client : ClientDataSet
系統時間:2024-05-06 1:21:11
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!