請問關於TSimpleDataSet的sql語法 |
尚未結案
|
mirage
初階會員 發表:40 回覆:101 積分:28 註冊:2004-01-05 發送簡訊給我 |
db1的l_no欄位資料如為:
2004/08/06 上午08:00
2004/08/06 上午09:00
….. 等 現要找今天的資料表資料
變數l_no:=datetostr(now);
sqltxt1:=’select * from db1 where l_no like:l_no‘;
With SimpleDataSet1 do
begin
close;
dataset.commandtext:='';
dataset.commandtext:=sqltxt1;
Params.ParamByName('l_no').AsString:=l_no '%';
Open;
End; 請問先進:
第一次執行時正確.
第2次執行時出現 'no value for parameter' ,
不知哪錯了???
|
Fishman
尊榮會員 發表:120 回覆:1949 積分:2163 註冊:2006-10-28 發送簡訊給我 |
Hi mirage, 試試以下寫法:
procedure TForm1.Button1Click(Sender: TObject); var Sqltxt : String; begin Sqltxt :='select * from db1 where l_no like :l_no'; with SimpleDataSet1 do begin Close; Params.Clear; DataSet.CommandText := Sqltxt; DataSet.Params.ParseSQL(SimpleDataSet1.DataSet.CommandText,True); DataSet.Params.ParamByName('l_no').AsString := DateToStr(now) '%'; Open; end;---------------------------------- 小弟才疏學淺,若有謬誤尚請不吝指教 ----------------------------------
------
Fishman |
mirage
初階會員 發表:40 回覆:101 積分:28 註冊:2004-01-05 發送簡訊給我 |
引言: Hi mirage, 試試以下寫法:procedure TForm1.Button1Click(Sender: TObject); var Sqltxt : String; begin Sqltxt :='select * from db1 where l_no like :l_no'; with SimpleDataSet1 do begin Close; Params.Clear; DataSet.CommandText := Sqltxt; DataSet.Params.ParseSQL(SimpleDataSet1.DataSet.CommandText,True); DataSet.Params.ParamByName('l_no').AsString := DateToStr(now) '%'; Open; end;---------------------------------- 小弟才疏學淺,若有謬誤尚請不吝指教 ---------------------------------- >>< face="Verdana, Arial, Helvetica"> 上述執行時出現錯誤 : SimpleDataSet1:parameter 'l_no' not found. 另 在SimpleDataSet1的 1.DataSet.CommandText輸入select * from db1 where l_no like :l_no 2.Params加入l_no with SimpleDataSet1 do begin Close; DataSet.Params.ParseSQL(SimpleDataSet1.DataSet.CommandText,True); DataSet.Params.ParamByName('l_no').AsString := DateToStr(now) '%'; Open; end; 第一次執行時正確. 第2次執行時出現: dbexpress reror:[0x0009]:invalid parameter |
Fishman
尊榮會員 發表:120 回覆:1949 積分:2163 註冊:2006-10-28 發送簡訊給我 |
Hi mirage, 奇怪,我用 D7 + SQL Server 2000 測試是沒問題啊!怪異!
如果真的不行,改為以下方法試試:
procedure TForm1.Button2Click(Sender: TObject); var Sqltxt : String; begin Sqltxt := 'select * from db1 where l_no like ' QuotedStr(DateToStr(Now) '%'); with SimpleDataSet1 do begin Close; DataSet.Params.Clear; DataSet.CommandText := Sqltxt; Open; end; end;ps:請問,db1中的 l_no 欄位 Type為何(DateTime,String...) ?DataBase 為何? ---------------------------------- 小弟才疏學淺,若有謬誤尚請不吝指教 ----------------------------------
------
Fishman |
mirage
初階會員 發表:40 回覆:101 積分:28 註冊:2004-01-05 發送簡訊給我 |
引言: Hi mirage, 奇怪,我用 D7 SQL Server 2000 測試是沒問題啊!怪異! 如果真的不行,改為以下方法試試:procedure TForm1.Button2Click(Sender: TObject); var Sqltxt : String; begin Sqltxt := 'select * from db1 where l_no like ' QuotedStr(DateToStr(Now) '%'); with SimpleDataSet1 do begin Close; DataSet.Params.Clear; DataSet.CommandText := Sqltxt; Open; end; end;ps:請問,db1中的l_no 欄位 Type為何(DateTime,String...) ?DataBase 為何? ---------------------------------- 小弟才疏學淺,若有謬誤尚請不吝指教 ---------------------------------- >>< face="Verdana, Arial, Helvetica"> Fishman先進您好: db為mysql , l_no 為 string . |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |