SQL的日期 |
答題得分者是:timhuang
|
a6475
高階會員 發表:67 回覆:230 積分:154 註冊:2002-09-15 發送簡訊給我 |
請問大家:
我下這串SQL,一直不能用,結果我用SQL Monitor看,竟然Params[3],[4],[7]
都沒有代進SQL字串裡。為什麼會這樣>_<
RDAate,iDate,BDate在Access 2000的欄位都是設日期. SQL.Add('INSERT INTO Rent_Back (Guest_Code,Book_Code,Vol,RDate,IDate,New,piece,BDate) VALUES ');
SQL.Add('(:GuestCode,:BookCode,:Vol,:Rdate,:IDate,:New,:piece,:Bdate)');
Params[0].AsString := GuestCode;
Params[1].AsString := BookCode;
Params[2].AsInteger := Vol;
Params[3].AsDate := date(); //借書日
Params[4].AsDate := date() 6 ; //還書日,後6天
Params[3].AsString := '否'; //新書
Params[4].AsInteger := BookCost; //價格
Params[7].AsDate := date(); //實際還書日 -----------------------
PS:K.Top真是個好地方,還有感謝各位高手來幫忙^_^ 月夜 光明 藍更愁
------
月夜 光明 藍更愁 |
william
版主 發表:66 回覆:2535 積分:3048 註冊:2002-07-11 發送簡訊給我 |
3,4,7? Maybe you should try the datetime type:
SQL.Add('INSERT INTO Rent_Back (Guest_Code,Book_Code,Vol,RDate,IDate,New,piece,BDate) VALUES '); SQL.Add('(:GuestCode,:BookCode,:Vol,:Rdate,:IDate,:New,:piece,:Bdate)'); Params[0].AsString := GuestCode; Params[1].AsString := BookCode; Params[2].AsInteger := Vol; Params[3].AsDateTime := trunc(Date); //借書日 Params[4].AsDateTime := trunc(Date 6) ; //還書日,後6天 Params[5].AsString := '否'; //新書 Params[6].AsInteger := BookCost; //價格 Params[7].AsDateTime := trunc(Date); //實際還書日 |
a6475
高階會員 發表:67 回覆:230 積分:154 註冊:2002-09-15 發送簡訊給我 |
引言: 3,4,7? Maybe you should try the datetime type:不行耶! 程式依舊寫 project comicproject1.exe raised exception class EDatabaseError with message 'qryScan:Fild 'Rdate' is of an unknow type'. 月夜 光明 藍更愁SQL.Add('INSERT INTO Rent_Back (Guest_Code,Book_Code,Vol,RDate,IDate,New,piece,BDate) VALUES '); SQL.Add('(:GuestCode,:BookCode,:Vol,:Rdate,:IDate,:New,:piece,:Bdate)'); Params[0].AsString := GuestCode; Params[1].AsString := BookCode; Params[2].AsInteger := Vol; Params[3].AsDateTime := trunc(Date); //借書日 Params[4].AsDateTime := trunc(Date 6) ; //還書日,後6天 Params[5].AsString := '否'; //新書 Params[6].AsInteger := BookCost; //價格 Params[7].AsDateTime := trunc(Date); //實際還書日
------
月夜 光明 藍更愁 |
william
版主 發表:66 回覆:2535 積分:3048 註冊:2002-07-11 發送簡訊給我 |
引言:不行耶! 程式依舊寫 project comicproject1.exe raised exception class EDatabaseError with message 'qryScan:Fild 'Rdate' is of an unknow type'. 月夜 光明 藍更愁I have tested using BDE (since you're using SQL monitor, I assume you are using BDE) with Access 2000. Could you please post your complete code for inserting the record? |
a6475
高階會員 發表:67 回覆:230 積分:154 註冊:2002-09-15 發送簡訊給我 |
引言: I have tested using BDE (since you're using SQL monitor, I assume you are using BDE) with Access 2000. Could you please post your complete code for inserting the record?我的SQL Monitor的訊息: 3530 16:31:00 SQL Prepare: Driver do Microsoft Access (*.m - INSERT INTO Rent_Back (Guest_Code,Book_Code,Vol,RDate,IDate,New,piece,BDate) VALUES (?,?,?,?,?,?,?,?) 3531 16:31:00 SQL Data In: Driver do Microsoft Access (*.m - Param = 1, Name = , Type = fldZSTRING, Precision = 4, Scale = 0, Data = 0001 3532 16:31:00 SQL Data In: Driver do Microsoft Access (*.m - Param = 2, Name = , Type = fldZSTRING, Precision = 1, Scale = 0, Data = 1 3533 16:31:00 SQL Data In: Driver do Microsoft Access (*.m - Param = 3, Name = , Type = fldINT32, Precision = 0, Scale = 0, Data = 1 3534 16:31:00 SQL Data In: Driver do Microsoft Access (*.m - Param = 6, Name = , Type = fldZSTRING, Precision = 2, Scale = 0, Data = 否 3535 16:31:00 SQL Data In: Driver do Microsoft Access (*.m - Param = 7, Name = , Type = fldINT32, Precision = 0, Scale = 0, Data = 7 3536 16:31:00 SQL Execute: Driver do Microsoft Access (*.m - INSERT INTO Rent_Back (Guest_Code,Book_Code,Vol,RDate,IDate,New,piece,BDate) VALUES (?,?,?,?,?,?,?,?) 3548 16:31:00 SQL Error: Driver do Microsoft Access (*.m - [Microsoft][ODBC Microsoft Access Driver]無效的 datetime 格式 (null) 3549 16:31:00 SQL Vendor: ODBC - SQLError 3550 16:31:00 SQL Error: Driver do Microsoft Access (*.m - Unmapped SQL Error Code: 35 月夜 光明 藍更愁
------
月夜 光明 藍更愁 |
william
版主 發表:66 回覆:2535 積分:3048 註冊:2002-07-11 發送簡訊給我 |
Hi a6475, I think that your original post has some typing error? You only specify Params 0,1,2,3,4 and 7? Params[5].AsString := '否'; //新書
Params[6].AsInteger := BookCost; //價格 It could help if you could post your Delphi code for inserting a record
|
a6475
高階會員 發表:67 回覆:230 積分:154 註冊:2002-09-15 發送簡訊給我 |
引言: Hi a6475, I think that your original post has some typing error? You only specify Params 0,1,2,3,4 and 7? Params[5].AsString := '否'; //新書 Params[6].AsInteger := BookCost; //價格 It could help if you could post your Delphi code for inserting a record >>< face="Verdana, Arial, Helvetica"> 感謝william大大,不厭其煩的一直回等我的問題。 我的程式碼: var IText,BookCode : String; BookCost,Vol : Integer; begin inherited; IText := Edit2.Text; //新增租的書 with qryScan do //找書,並將找到的書放到租借的地方去 begin StatusBar1.Panels[1].Text := '『租書...』'; Close; SQL.Clear; SQL.Add('SELECT * FROM BookDetail WHERE Code = :Code'); Params[0].AsString := IText; Open; //showmessage(SQL.Text ); if RecordCount = 1 then //有一筆的話 begin BookCode := FieldByName('Code').AsString; //條碼號 BookCost := FieldByName('Cost_Old').AsInteger; // 舊租 Vol := FieldByName('Vol').AsInteger; // 集數 //放入Rent_Back資料表裡 Try Close; SQL.Clear; SQL.Add('INSERT INTO Rent_Back (Guest_Code,Book_Code,Vol,RDate,IDate,New,piece,BDate) VALUES '); SQL.Add('(:GuestCode,:BookCode,:Vol,:Rdate,:IDate,:New,:piece,:Bdate)'); Params[0].AsString := GuestCode; Params[1].AsString := BookCode; Params[2].AsInteger := Vol; Params[3].AsDate := date(); //借書日 Params[4].AsDate := date() 6 ; //還書日,後6天 Params[5].AsString := '否'; //新書 Params[6].AsInteger := BookCost; //價格 Params[7].AsDate := date(); //實際還書日 ExecSQL; end; end; -------------- 我把寫成這樣,就沒有問題耶。 SQL.Add('INSERT INTO Rent_Back (Guest_Code,Book_Code,Vol,RDate,IDate,New,piece,BDate) VALUES '); SQL.Add('(:GuestCode,:BookCode,:Vol,#' DateToStr(Date()) '#,#' DateToStr(Date() 6) '#,:New,:piece,#1980/1/1#)'); Params[0].AsString := GuestCode; Params[1].AsString := BookCode; Params[2].AsInteger := Vol; Params[3].AsString := '否'; //新書 Params[4].AsInteger := BookCost; //價格 月夜 光明 藍更愁
------
月夜 光明 藍更愁 |
a6475
高階會員 發表:67 回覆:230 積分:154 註冊:2002-09-15 發送簡訊給我 |
引言: Hi a6475, I think that your original post has some typing error? You only specify Params 0,1,2,3,4 and 7? Params[5].AsString := '否'; //新書 Params[6].AsInteger := BookCost; //價格 It could help if you could post your Delphi code for inserting a record >>< face="Verdana, Arial, Helvetica"> 感謝william大大,不厭其煩的一直回等我的問題。 我的程式碼: var IText,BookCode : String; BookCost,Vol : Integer; begin inherited; IText := Edit2.Text; //新增租的書 with qryScan do //找書,並將找到的書放到租借的地方去 begin StatusBar1.Panels[1].Text := '『租書...』'; Close; SQL.Clear; SQL.Add('SELECT * FROM BookDetail WHERE Code = :Code'); Params[0].AsString := IText; Open; //showmessage(SQL.Text ); if RecordCount = 1 then //有一筆的話 begin BookCode := FieldByName('Code').AsString; //條碼號 BookCost := FieldByName('Cost_Old').AsInteger; // 舊租 Vol := FieldByName('Vol').AsInteger; // 集數 //放入Rent_Back資料表裡 Try Close; SQL.Clear; SQL.Add('INSERT INTO Rent_Back (Guest_Code,Book_Code,Vol,RDate,IDate,New,piece,BDate) VALUES '); SQL.Add('(:GuestCode,:BookCode,:Vol,:Rdate,:IDate,:New,:piece,:Bdate)'); Params[0].AsString := GuestCode; Params[1].AsString := BookCode; Params[2].AsInteger := Vol; Params[3].AsDate := date(); //借書日 Params[4].AsDate := date() 6 ; //還書日,後6天 Params[5].AsString := '否'; //新書 Params[6].AsInteger := BookCost; //價格 Params[7].AsDate := date(); //實際還書日 ExecSQL; end; end; -------------- 我把寫成這樣,就沒有問題耶。 SQL.Add('INSERT INTO Rent_Back (Guest_Code,Book_Code,Vol,RDate,IDate,New,piece,BDate) VALUES '); SQL.Add('(:GuestCode,:BookCode,:Vol,#' DateToStr(Date()) '#,#' DateToStr(Date() 6) '#,:New,:piece,#1980/1/1#)'); Params[0].AsString := GuestCode; Params[1].AsString := BookCode; Params[2].AsInteger := Vol; Params[3].AsString := '否'; //新書 Params[4].AsInteger := BookCost; //價格 月夜 光明 藍更愁
------
月夜 光明 藍更愁 |
timhuang
尊榮會員 發表:78 回覆:1815 積分:1608 註冊:2002-07-15 發送簡訊給我 |
你可以試試看:
SQL.Add('INSERT INTO Rent_Back (Guest_Code,Book_Code,Vol,RDate,IDate,New,piece,BDate) VALUES '); SQL.Add('(:GuestCode,:BookCode,:Vol,:Rdate,:IDate,:New,:piece,:Bdate)'); Params[0].AsString := GuestCode; Params[1].AsString := BookCode; Params[2].AsInteger := Vol; Params[3].Value := date(); //借書日 Params[4].Value := date() 6 ; //還書日,後6天 Params[3].AsString := '否'; //新書 Params[4].AsInteger := BookCost; //價格 Params[7].Value := date(); //實際還書日發表人 - timhuang 於 2003/02/05 19:16:56 |
william
版主 發表:66 回覆:2535 積分:3048 註冊:2002-07-11 發送簡訊給我 |
|
ko
資深會員 發表:28 回覆:785 積分:444 註冊:2002-08-14 發送簡訊給我 |
|
a6475
高階會員 發表:67 回覆:230 積分:154 註冊:2002-09-15 發送簡訊給我 |
引言: 你可以試試看:謝謝,修正後以經能夠使用。 只是我還是不懂為什麼不能使用asDate呢? 月夜 光明 藍更愁SQL.Add('INSERT INTO Rent_Back (Guest_Code,Book_Code,Vol,RDate,IDate,New,piece,BDate) VALUES '); SQL.Add('(:GuestCode,:BookCode,:Vol,:Rdate,:IDate,:New,:piece,:Bdate)'); Params[0].AsString := GuestCode; Params[1].AsString := BookCode; Params[2].AsInteger := Vol; Params[3].Value := date(); //借書日 Params[4].Value := date() 6 ; //還書日,後6天 Params[3].AsString := '否'; //新書 Params[4].AsInteger := BookCost; //價格 Params[7].Value := date(); //實際還書日發表人 - timhuang 於 2003/02/05 19:16:56
------
月夜 光明 藍更愁 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |