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

複合查詢(like)

答題得分者是:ko
larryleu
初階會員


發表:39
回覆:67
積分:38
註冊:2002-06-19

發送簡訊給我
#1 引用回覆 回覆 發表時間:2002-12-07 11:26:56 IP:203.73.xxx.xxx 未訂閱
請問各位前輩 若希望能查詢符合ID前兩碼之資料 應該如何改 procedure TForm10.Button1Click(Sender: TObject); begin DataSource1.DataSet := Query1; DBGrid1.DataSource := DataSource1; with Query1 do begin DataBaseName := 'Sale'; Close; SQL.Clear; SQL.Add('Select * from Member where ID = :ID '); Params[0].DataType := ftString; Params[0].ParamType := ptInput; Params[0].Value := Edit1.Text; Prepare; Open; end; end;
anderslee
初階會員


發表:2
回覆:32
積分:26
註冊:2002-06-03

發送簡訊給我
#2 引用回覆 回覆 發表時間:2002-12-07 12:24:11 IP:202.64.xxx.xxx 未訂閱
尋找資料內有字串 XY Select * from Member where ID Like '%XY%' 尋找資料中首二字為 XY Select * from Member where substring(ID from 1 for 2)='XY' 不同的 SQL server 在 syntax 上可能有些出入
larryleu
初階會員


發表:39
回覆:67
積分:38
註冊:2002-06-19

發送簡訊給我
#3 引用回覆 回覆 發表時間:2002-12-07 12:35:27 IP:203.73.xxx.xxx 未訂閱
有沒有什麼方法 在輸入欄位中只輸入前幾碼而不用加% 另在表格欄位中有加入日期此一欄位 若要查詢幾年幾月幾號 到 幾年幾月幾號(如 2002/11/01 -2002/12/15) 用 between 的方式要如何使用 也就說可以查全部符合此日期 也可以查抹編號符合此日期 上面問題麻煩各位前輩
chih
版主


發表:48
回覆:1186
積分:639
註冊:2002-04-02

發送簡訊給我
#4 引用回覆 回覆 發表時間:2002-12-07 13:13:57 IP:61.217.xxx.xxx 未訂閱
1.輸入欄位本來就不用加入%,而是應該加入你的SQL語法... 比如你要以輸入欄位查前幾碼的話應該是這樣.. SQL.Add('Select * from Member where ID LIKE ' #39 Edit1.text #39 '%'); //Edit1是輸入欄位 2.有關日期.你可能會有二個日期輸入欄位吧.. SQL.Add('Select * from Member where xx BETWEEN ' #39 Edit2.text #39 ' AND ' #39 Edit3.text #39); // xx是你的Table要查詢的日期欄位..Edit2,Edit3是日期輸入欄位 自己再組合一下你要的條件吧.. 有問題在POST上來..還有不知道你的DataBase是什麼..上述方法在MSSQL及Oracle可以...
引言: 有沒有什麼方法 在輸入欄位中只輸入前幾碼而不用加% 另在表格欄位中有加入日期此一欄位 若要查詢幾年幾月幾號 到 幾年幾月幾號(如 2002/11/01 -2002/12/15) 用 between 的方式要如何使用 也就說可以查全部符合此日期 也可以查抹編號符合此日期 上面問題麻煩各位前輩
發表人 - chih 於 2002/12/07 13:16:04
larryleu
初階會員


發表:39
回覆:67
積分:38
註冊:2002-06-19

發送簡訊給我
#5 引用回覆 回覆 發表時間:2002-12-09 11:21:35 IP:203.73.xxx.xxx 未訂閱
chin您好 我用的資料庫為Access 按照您的範例會出現錯誤 List index out of bounds(0) 程式如下 procedure TForm11.Button1Click(Sender: TObject); begin DataSource1.DataSet := Query1; DBGrid1.DataSource := DataSource1; with Query1 do begin DataBaseName := 'Sale'; Close; SQL.Clear; SQL.Add('Select * from Member where Consumer BETWEEN ' #39 Edit1.text #39 ' AND ' #39 Edit2.text #39); Params[0].DataType := ftString; Params[0].ParamType := ptInput; Params[0].Value := Edit1.Text; Params[0].Value := Edit2.Text; Prepare; Open; end; end; 不知問題出在哪裡(包括之前會員資料的部分一樣->ID) 另 #39代表什麼意思 麻煩您 謝謝您
Miles
尊榮會員


發表:27
回覆:662
積分:622
註冊:2002-07-12

發送簡訊給我
#6 引用回覆 回覆 發表時間:2002-12-09 11:35:43 IP:210.58.xxx.xxx 未訂閱
引言: chin您好 我用的資料庫為Access 按照您的範例會出現錯誤 List index out of bounds(0) 程式如下 procedure TForm11.Button1Click(Sender: TObject); begin DataSource1.DataSet := Query1; DBGrid1.DataSource := DataSource1; with Query1 do begin DataBaseName := 'Sale'; Close; SQL.Clear; SQL.Add('Select * from Member where Consumer BETWEEN ' #39 Edit1.text #39 ' AND ' #39 Edit2.text #39); Params[0].DataType := ftString; Params[0].ParamType := ptInput; Params[0].Value := Edit1.Text; Params[0].Value := Edit2.Text; Prepare; Open; end; end; 不知問題出在哪裡(包括之前會員資料的部分一樣->ID) 另 #39代表什麼意思 麻煩您 謝謝您
Hello larryleu 您好: 紅色部分刪除, #39=一個點 ' 我不是高手, 高手是正在銀幕前微笑的人.
------


我不是高手, 高手是正在銀幕前微笑的人.
larryleu
初階會員


發表:39
回覆:67
積分:38
註冊:2002-06-19

發送簡訊給我
#7 引用回覆 回覆 發表時間:2002-12-09 12:11:39 IP:203.73.xxx.xxx 未訂閱
還是不行 會出現錯誤訊息 參數太少 預期個數 1
ko
資深會員


發表:28
回覆:785
積分:444
註冊:2002-08-14

發送簡訊給我
#8 引用回覆 回覆 發表時間:2002-12-09 12:44:02 IP:61.221.xxx.xxx 未訂閱
引言: SQL.Add('Select * from Member where Consumer BETWEEN ' #39 Edit1.text #39 ' AND ' #39 Edit2.text #39);
其中' #39 Edit1.text #39 ' AND ' #39 Edit2.text #39 更改 #39 ''Edit1.text'' #39 AND #39 ''Edit2.text'' #39 發表人 - ko 於 2002/12/09 12:46:34
------
======================
昏睡~
不昏睡~
不由昏睡~
Miles
尊榮會員


發表:27
回覆:662
積分:622
註冊:2002-07-12

發送簡訊給我
#9 引用回覆 回覆 發表時間:2002-12-09 13:39:34 IP:210.58.xxx.xxx 未訂閱
Hello : 請確認DataSet的Params裡面是否有東西, 請將裡面的東西刪除. 我不是高手, 高手是正在銀幕前微笑的人.
------


我不是高手, 高手是正在銀幕前微笑的人.
larryleu
初階會員


發表:39
回覆:67
積分:38
註冊:2002-06-19

發送簡訊給我
#10 引用回覆 回覆 發表時間:2002-12-09 14:11:47 IP:203.73.xxx.xxx 未訂閱
還是不行
chih
版主


發表:48
回覆:1186
積分:639
註冊:2002-04-02

發送簡訊給我
#11 引用回覆 回覆 發表時間:2002-12-09 14:29:27 IP:211.74.xxx.xxx 未訂閱
這一句 SQL.Add('Select * from Member where Consumer BETWEEN ' #39 Edit1.text #39 ' AND ' #39 Edit2.text #39); 改成這樣試看看.. SQL.Add('Select * from Member where ID = :ID' ' AND Consumer BETWEEN ' #39 Edit1.text #39 ' AND ' #39 Edit2.text #39);
ko
資深會員


發表:28
回覆:785
積分:444
註冊:2002-08-14

發送簡訊給我
#12 引用回覆 回覆 發表時間:2002-12-09 14:58:04 IP:61.221.xxx.xxx 未訂閱
larryleu你好: 我分2個部分來說明: 1.like    With SQLQuery Do    begin     Close;     SQL.Clear;     SQL.Add(''Select * from Member where ID like :ID '); ParamByName('ID').AsString:='%' NameEdit.Text '%'; Open; end; 這樣就會找id有相同NameEdit.Text的字串 2.BETWEEN Sql.Add('Time Between :FirstDate And :EndDate '); ParamByName('FirstDate').AsDateTime:=DateTimePicker1.Date ; ParamByName('EndDate').AsDateTime:=DateTimePicker2.Date ; DateTimePicker1是元件
------
======================
昏睡~
不昏睡~
不由昏睡~
larryleu
初階會員


發表:39
回覆:67
積分:38
註冊:2002-06-19

發送簡訊給我
#13 引用回覆 回覆 發表時間:2002-12-09 15:16:08 IP:203.73.xxx.xxx 未訂閱
我將程式改為下列 出現錯誤訊息 準則運算試的資料型態不符合 在Table中日期(Date)的格式為時間型態 procedure TForm11.Button1Click(Sender: TObject); begin DataSource1.DataSet := Query1; DBGrid1.DataSource := DataSource1; with Query1 do begin DataBaseName := 'Sale'; Close; SQL.Clear; SQL.Add('Select * from Consumer where Date BETWEEN ' #39 Edit1.text #39 ' AND ' #39 Edit2.text #39); Prepare; Open; end; end;
chih
版主


發表:48
回覆:1186
積分:639
註冊:2002-04-02

發送簡訊給我
#14 引用回覆 回覆 發表時間:2002-12-09 15:31:26 IP:211.74.xxx.xxx 未訂閱
Edit1.text是string..你要自己把他轉成你要的日期型態阿... 比如Edit1.text='20021209'..你要先手動轉成這樣'2002/12/09'.. 而不是直接給Edit1.text..才符合日期型態阿... 不然你就直接用DateTimePicker來取代Edit1...
引言: 我將程式改為下列 出現錯誤訊息 準則運算試的資料型態不符合 在Table中日期(Date)的格式為時間型態 procedure TForm11.Button1Click(Sender: TObject); begin DataSource1.DataSet := Query1; DBGrid1.DataSource := DataSource1; with Query1 do begin DataBaseName := 'Sale'; Close; SQL.Clear; SQL.Add('Select * from Consumer where Date BETWEEN ' #39 Edit1.text #39 ' AND ' #39 Edit2.text #39); Prepare; Open; end; end;
發表人 - chih 於 2002/12/09 15:34:05
larryleu
初階會員


發表:39
回覆:67
積分:38
註冊:2002-06-19

發送簡訊給我
#15 引用回覆 回覆 發表時間:2002-12-09 16:41:27 IP:203.73.xxx.xxx 未訂閱
ko您好 謝謝您 最後還有一個問題想請教您 如何處理下列狀況 1)同時輸入編號及日期 選出符合的資料 2)只輸入日期而不輸入編號 選出符合資料 因為這兩種況況都會發生 另DateTimePicker所搜尋之時間點為何時 是以當日凌晨開始 還是以輸入時間為準 因為同樣式今天所Key in之資料 卻要將第一時間提前一天才找的到資料 最後謝謝您
ko
資深會員


發表:28
回覆:785
積分:444
註冊:2002-08-14

發送簡訊給我
#16 引用回覆 回覆 發表時間:2002-12-09 17:23:22 IP:61.221.xxx.xxx 未訂閱
引言: ko您好 謝謝您 最後還有一個問題想請教您 如何處理下列狀況 1)同時輸入編號及日期 選出符合的資料 2)只輸入日期而不輸入編號 選出符合資料 因為這兩種況況都會發生 另DateTimePicker所搜尋之時間點為何時 是以當日凌晨開始 還是以輸入時間為準 因為同樣式今天所Key in之資料 卻要將第一時間提前一天才找的到資料 最後謝謝您
with select do begin close; Sql.Clear; Sql.Add('select *'); Sql.Add('from Consumer where id<>0'); if Edit1.Text<>'' then//這裡是找Edit1.Text有沒有值 begin Sql.Add('and id like :Q0 '); ParamByName('Q0').AsString:=Edit1.Text; end; Sql.Add('and between :q1 and :q2'); ParamByName('q1').AsDateTime:=DateTimePicker1.DateTime-1; ParamByName('q2').AsDateTime:=DateTimePicker1.DateTime; open; end; 色部分 有沒有值--因為是if 判斷所以空值他就不會執行begin ..end所以只執行日期的 查詢! -1代表DateTimePicker1的日期減一天
------
======================
昏睡~
不昏睡~
不由昏睡~
larryleu
初階會員


發表:39
回覆:67
積分:38
註冊:2002-06-19

發送簡訊給我
#17 引用回覆 回覆 發表時間:2002-12-10 10:37:23 IP:203.73.xxx.xxx 未訂閱
ko您好 不好意思又要麻煩您我將程式改為如下 卻發生錯誤訊息 不知哪裡寫錯 procedure TForm11.Button4Click(Sender: TObject); begin DataSource1.DataSet := Query1; DBGrid1.DataSource := DataSource1; with Query1 do begin DataBaseName := 'Sale'; close; Sql.Clear; Sql.Add('select * '); Sql.Add('from Consumer where Reco_Number<>0'); if Edit1.Text <> '' then //這裡是找Edit1.Text有沒有值 begin Sql.Add('and Reco_Number like :Reco_Number '); ParamByName('Reco_Number').AsString := Edit1.Text; end; Sql.Add('and between :FirstDate and :EndDate'); ParamByName('FirstDate').AsDateTime := DateTimePicker1.DateTime - 1; ParamByName('EndDate').AsDateTime := DateTimePicker1.DateTime; open; end; end;
larryleu
初階會員


發表:39
回覆:67
積分:38
註冊:2002-06-19

發送簡訊給我
#18 引用回覆 回覆 發表時間:2002-12-11 06:57:49 IP:203.73.xxx.xxx 未訂閱
KO您好 謝謝您可以執行 但搜尋不到資料 麻煩您 謝謝 procedure TForm11.Button4Click(Sender: TObject); begin DataSource1.DataSet := Query1; DBGrid1.DataSource := DataSource1; with Query1 do begin DataBaseName := 'Sale'; close; Sql.Clear; Sql.Add('select * '); Sql.Add('from Consumer where Reco_Number'); if Edit1.Text <> '' then //這裡是找Edit1.Text有沒有值 begin Sql.Add('and Reco_Number like :Reco_Number '); ParamByName('Reco_Number').AsString := '%' Edit1.Text '%'; end; Sql.Add('and Date between :FirstDate and :EndDate'); ParamByName('FirstDate').AsDateTime := DateTimePicker1.DateTime ; ParamByName('EndDate').AsDateTime := DateTimePicker1.DateTime; open; end; end;
系統時間:2024-05-20 3:41:19
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!