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

请教1个SQL查询?

尚未結案
yumena555
一般會員


發表:6
回覆:7
積分:2
註冊:2005-10-20

發送簡訊給我
#1 引用回覆 回覆 發表時間:2005-11-24 15:16:51 IP:211.136.xxx.xxx 未訂閱
各位大大好,小弟初学DELPHI,请大家帮忙看看下面代码有什么问题: str1:=''; str2:=''; str1:=str1+quotedstr(edit4.Text)+'-'; str1:=str1+quotedstr(ComboBox1.Text)+'-'; str2:=str1+'31'; str1:=str1+'01'; str:=''; str:=str+'select * from 派工单 where 产品="'+ edit2.Text+'" and 日期 between '+quotedstr(str1)+'and'+quotedstr(str2); query1.Close; query1.SQL.Clear; query1.SQL.Add(str); query1.RequestLive:=true; query1.Open;  运行以后,提示下面的错误:
deity
尊榮會員


發表:90
回覆:876
積分:678
註冊:2003-05-09

發送簡訊給我
#2 引用回覆 回覆 發表時間:2005-11-24 16:27:55 IP:218.15.xxx.xxx 未訂閱
你好:
改成如下试试:
  str1:='';
  str2:='';
  str1:=str1 edit4.Text '-'; //去除quotedstr
  str1:=str1 ComboBox1.Text '-';//去除quotedstr
  str2:=str1 '31';
  str1:=str1 '01';
  str:='';
  str:=str 'select * from 派工单 where 产品="'  edit2.Text '" and 日期 between "' str1 '" and "' str2 '"';//去除quotedstr,str1\2前后加"",注意空格
  showmessage(str); //看看语句对否
  query1.Close;
  query1.SQL.Clear;
  query1.SQL.Add(str);
  query1.RequestLive:=true;
  query1.Open;
end;
不对的话,请说明为何种资料库
yumena555
一般會員


發表:6
回覆:7
積分:2
註冊:2005-10-20

發送簡訊給我
#3 引用回覆 回覆 發表時間:2005-11-24 17:19:03 IP:211.136.xxx.xxx 未訂閱
deity大大您好: 我用的资料库是access,照您的方法运行了一下,提示错误为“数据类型不匹配”,在资料库里日期字段的数据类型是日期类型,我把它改为文本类型后运行得到了正确的结果。不过我还想请问您,如果不更改日期字段的数据类型,那么程式码该怎么改呢?谢谢。
cashxin2002
版主


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

發送簡訊給我
#4 引用回覆 回覆 發表時間:2005-11-24 17:50:08 IP:202.62.xxx.xxx 未訂閱
您好﹗    首先您要确認Str1和Str2的字串值可以被正常的轉換為日期時間形態﹐若确認請試試如下程式碼﹕
begin
  str1 := quotedstr(edit4.Text)+'-';
  str1 := str1 + quotedstr(ComboBox1.Text)+'-';
  str2 := str1 + '31';
  str1 := str1 + '01';
  str:='select * from 派工单 where 产品='''+edit2.Text+''' and 日期 between :DateTemp1 and :DateTemp2';
  query1.Close;
  query1.SQL.Clear;
  query1.SQL.Add(str);
  query1.Params[0].AsDateTime := StrToDateTime(Str1);
  query1.Params[1].AsDateTime := StrToDateTime(Str2);
  query1.RequestLive:=true;
  query1.Open;
end;
================================= 有空來瞅瞅我﹗因為我是您的朋友﹐有您真好﹗ ================================
------
忻晟
yumena555
一般會員


發表:6
回覆:7
積分:2
註冊:2005-10-20

發送簡訊給我
#5 引用回覆 回覆 發表時間:2005-11-25 08:28:50 IP:211.136.xxx.xxx 未訂閱
您好,照您的方法运行了一下,果然运行正确,请问Params[0],Params[1]是 什么意思?有什么作用?谢谢。
cashxin2002
版主


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

發送簡訊給我
#6 引用回覆 回覆 發表時間:2005-11-25 09:03:25 IP:202.62.xxx.xxx 未訂閱
您好﹗    請注意看如下SQL敘述句中紅色的部分﹕ str:='select * from 派工单 where 产品='''+edit2.Text+''' and 日期 between :DateTemp1 and :DateTemp2'; 在SQL敘述句中可利用如上的方法在Params建立變數﹐而其順序就是Params[0]..Params[1]..Params[2]..以此類推﹐以上SQL敘述句中利用BDE資料集元件建立了兩個變數﹐所以對應的Params變數順序即是﹕ DateTemp1 = Params[0] DateTemp2 = Params[1] 然后在資料集元件Open之前﹐先賦值給Params[0]和Params[1]變數﹒ ================================= 有空來瞅瞅我﹗因為我是您的朋友﹐有您真好﹗ ================================
------
忻晟
系統時間:2024-07-01 20:46:03
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!