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

SQL語法請教

答題得分者是:cmj
cashxin2002
版主


發表:231
回覆:2555
積分:1937
註冊:2003-03-28

發送簡訊給我
#1 引用回覆 回覆 發表時間:2003-04-29 20:53:50 IP:63.84.xxx.xxx 未訂閱
各位前輩 小弟程式碼如下, 但出現出錯信息:[Error] Unit1.pas(75): Undeclared identifier: 'Query1Name' 請前輩指點. procedure TForm1.FormActivate(Sender: TObject); begin UpdateSQL1.InsertSQL.Clear; UpdateSQL1.InsertSQL.Add('Insert Into Test.Dbf'); UpdateSQL1.InsertSQL.Add('(Name,Good,Id)'); UpdateSQL1.InsertSQL.Add('Values'); UpdateSQL1.InsertSQL.Add('(:Name,:Good,:Id)'); UpdateSQL1.ModifySQL.Clear; UpdateSQL1.ModifySQL.Add('Update Test.Dbf'); UpdateSQL1.ModifySQL.Add('Set'); UpdateSQL1.ModifySQL.Add('Name=:Name,'); UpdateSQL1.ModifySQL.Add('Good=:Good,'); UpdateSQL1.ModifySQL.Add('Id=:Id'); UpdateSQL1.ModifySQL.Add('Where Id=:Old_Id'); UpdateSQL1.DeleteSQL.Clear; UpdateSQL1.DeleteSQL.Add('Delete From Test.Dbf'); UpdateSQL1.DeleteSQL.Add('Where Id=Old_Id'); Query1.CachedUpdates:=True; Query1.UpdateObject:=UpdateSQL1; Query1.DatabaseName:= GetCurrentDir; Query1.SQL.Clear; Query1.SQL.Add('Select * From Test.Dbf'); Query1.Close; Query1.Open; Button1.Enabled:=True; Button2.Enabled:=True; Button3.Enabled:=True; Button4.Enabled:=False; Button5.Enabled:=False; end; procedure TForm1.Button1Click(Sender: TObject); begin Query1.Append; Query1Name.Value := '' ; //出現錯誤處 Query1Good.Value := False; Query1Id.Value := '' ; Button1.Enabled:=False; Button2.Enabled:=False; Button3.Enabled:=False; Button4.Enabled:=True; Button5.Enabled:=True; end; end. Delphi新手﹐懇請各位前輩多多指教﹗謝謝您﹗ 忻晟
------
忻晟
ddy
站務副站長


發表:262
回覆:2105
積分:1169
註冊:2002-07-13

發送簡訊給我
#2 引用回覆 回覆 發表時間:2003-04-29 21:16:19 IP:211.74.xxx.xxx 未訂閱
Undeclared identifier: 'Query1Name' 很明顯,你不是打錯字就是form上沒有Query1Name元件 你再檢查檢查,這與SQL 語法無關     發表人 - ddy 於 2003/04/29 21:19:22
cashxin2002
版主


發表:231
回覆:2555
積分:1937
註冊:2003-03-28

發送簡訊給我
#3 引用回覆 回覆 發表時間:2003-04-29 21:34:34 IP:63.84.xxx.xxx 未訂閱
ddy大大, 小弟有查過了原始的程式碼, 發現小弟的程式碼中在Type區域少了如下程式碼: Type ... ... Query1Name: TStringFiled; Query1Good: TBooleanFiled; Query1Id: TStringFiled; ... ... 但小弟不知道這里的程式碼在表單中何處設定. 誠懇感謝您的指教! Delphi新手﹐懇請各位前輩多多指教﹗謝謝您﹗ 忻晟
------
忻晟
cmj
高階會員


發表:15
回覆:242
積分:226
註冊:2002-06-12

發送簡訊給我
#4 引用回覆 回覆 發表時間:2003-04-29 21:54:19 IP:211.76.xxx.xxx 未訂閱
引言: ddy大大, 小弟有查過了原始的程式碼, 發現小弟的程式碼中在Type區域少了如下程式碼: Type ... ... Query1Name: TStringFiled; Query1Good: TBooleanFiled; Query1Id: TStringFiled; 這些是Query1元件內定義的Field,在Query1以Mouse點二下去檢查是否被DELETE 了,新增即可 ... ... 但小弟不知道這里的程式碼在表單中何處設定. 誠懇感謝您的指教! Delphi新手﹐懇請各位前輩多多指教﹗謝謝您﹗ 忻晟
發表人 - cmj 於 2003/04/29 21:55:43
cashxin2002
版主


發表:231
回覆:2555
積分:1937
註冊:2003-03-28

發送簡訊給我
#5 引用回覆 回覆 發表時間:2003-04-29 22:08:15 IP:63.84.xxx.xxx 未訂閱
此問題已解決,謝謝cmj先進的指點. 但小弟在新增一筆資料時出現此錯誤信息.No User Transaction is Currently in Progress. 小弟完整程式碼如下, 請問先進, 此問題是何處引起的. unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, Grids, DBGrids, DB, DBTables; type TForm1 = class(TForm) Database1: TDatabase; Query1: TQuery; UpdateSQL1: TUpdateSQL; DataSource1: TDataSource; DBGrid1: TDBGrid; Button1: TButton; Button2: TButton; Button3: TButton; Button4: TButton; Button5: TButton; Query1NAME: TStringField; Query1GOOD: TBooleanField; Query1ID: TStringField; procedure FormActivate(Sender: TObject); procedure Button1Click(Sender: TObject); procedure Button2Click(Sender: TObject); procedure Button3Click(Sender: TObject); procedure Button4Click(Sender: TObject); procedure Button5Click(Sender: TObject); private { Private declarations } public { Public declarations } end; var Form1: TForm1; implementation {$R *.dfm} procedure TForm1.FormActivate(Sender: TObject); begin UpdateSQL1.InsertSQL.Clear; UpdateSQL1.InsertSQL.Add('Insert Into Test.Dbf'); UpdateSQL1.InsertSQL.Add('(Name,Good,Id)'); UpdateSQL1.InsertSQL.Add('Values'); UpdateSQL1.InsertSQL.Add('(:Name,:Good,:Id)'); UpdateSQL1.ModifySQL.Clear; UpdateSQL1.ModifySQL.Add('Update Test.Dbf'); UpdateSQL1.ModifySQL.Add('Set'); UpdateSQL1.ModifySQL.Add('Name=:Name,'); UpdateSQL1.ModifySQL.Add('Good=:Good,'); UpdateSQL1.ModifySQL.Add('Id=:Id'); UpdateSQL1.ModifySQL.Add('Where Id=:Old_Id'); UpdateSQL1.DeleteSQL.Clear; UpdateSQL1.DeleteSQL.Add('Delete From Test.Dbf'); UpdateSQL1.DeleteSQL.Add('Where Id=Old_Id'); Query1.CachedUpdates:=True; Query1.UpdateObject:=UpdateSQL1; Query1.DatabaseName:= GetCurrentDir; Query1.SQL.Clear; Query1.SQL.Add('Select * From Test.Dbf'); Query1.Close; Query1.Open; Button1.Enabled:=True; Button2.Enabled:=True; Button3.Enabled:=True; Button4.Enabled:=False; Button5.Enabled:=False; end; procedure TForm1.Button1Click(Sender: TObject); begin Query1.Append; Query1Name.Value := '' ; Query1Good.Value := False; Query1Id.Value := '' ; Button1.Enabled:=False; Button2.Enabled:=False; Button3.Enabled:=False; Button4.Enabled:=True; Button5.Enabled:=True; end; procedure TForm1.Button2Click(Sender: TObject); begin Query1.Edit; Button1.Enabled:=False; Button2.Enabled:=False; Button3.Enabled:=False; Button4.Enabled:=True; Button5.Enabled:=True; end; procedure TForm1.Button3Click(Sender: TObject); begin Query1.Delete; Try DataBase1.StartTransaction; Query1.ApplyUpdates; Query1.CommitUpdates; DataBase1.Commit; Except DataBase1.Rollback; Query1.CancelUpdates; ShowMessage('存檔失敗'); end; end; procedure TForm1.Button4Click(Sender: TObject); begin Try Query1.Post; DataBase1.StartTransaction; Query1.ApplyUpdates; Query1.CommitUpdates; DataBase1.Commit; Except DataBase1.Rollback; Query1.CancelUpdates; ShowMessage('存檔失敗'); end; Button1.Enabled:=True; Button2.Enabled:=True; Button3.Enabled:=True; Button4.Enabled:=False; Button5.Enabled:=False; end; procedure TForm1.Button5Click(Sender: TObject); begin Query1.Cancel; Button1.Enabled:=True; Button2.Enabled:=True; Button3.Enabled:=True; Button4.Enabled:=False; Button5.Enabled:=False; end; end. Delphi新手﹐懇請各位前輩多多指教﹗謝謝您﹗ 忻晟
------
忻晟
cmj
高階會員


發表:15
回覆:242
積分:226
註冊:2002-06-12

發送簡訊給我
#6 引用回覆 回覆 發表時間:2003-04-29 23:12:40 IP:211.76.xxx.xxx 未訂閱
procedure TForm1.Button3Click(Sender: TObject); begin   Query1.Delete;      Try     //DataBase1.StartTransaction; Query1.ApplyUpdates; Query1.CommitUpdates; //DataBase1.Commit; Except //DataBase1.Rollback; Query1.CancelUpdates; ShowMessage('存檔失敗'); end; end; procedure TForm1.Button4Click(Sender: TObject); begin Try Query1.Post; //DataBase1.StartTransaction; Query1.ApplyUpdates; Query1.CommitUpdates; //DataBase1.Commit; Except //DataBase1.Rollback; Query1.CancelUpdates; ShowMessage('存檔失敗'); end; Button1.Enabled:=True; Button2.Enabled:=True; Button3.Enabled:=True; Button4.Enabled:=False; Button5.Enabled:=False; end; 因為你用dbf檔不支援交易,所以紅色部份程式不能用
cashxin2002
版主


發表:231
回覆:2555
積分:1937
註冊:2003-03-28

發送簡訊給我
#7 引用回覆 回覆 發表時間:2003-04-29 23:20:55 IP:63.84.xxx.xxx 未訂閱
明白了. 謝謝cmj先進的指教. Delphi新手﹐懇請各位前輩多多指教﹗謝謝您﹗ 忻晟
------
忻晟
系統時間:2024-06-29 13:07:01
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!