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

兩個表格查詢方法

尚未結案
jacosun
一般會員


發表:42
回覆:64
積分:21
註冊:2003-04-18

發送簡訊給我
#1 引用回覆 回覆 發表時間:2005-10-25 22:32:24 IP:210.64.xxx.xxx 未訂閱
各位大大,在下有兩個表格 USERINFO(表格名稱)欄位有 NUMBER、NAME、USERID CHECKINOUT(表格名稱)欄位有 USERID、CHECKTIME、CHECKTYPE ================================== 小弟的語法如下請問出在那?? ADOQuery1.Close; ADOQuery1.SQL.Clear; ADOQuery1.SQL.Add('Select NUMBER,NAME,CHECKTIME,CHECKTYPE FROM USERINFO RIGHT JOIN CHECKINOUT'); ADOQuery1.SQL.Add('on USERINFO.USERID = CHECKINOUT.USERID'); ADOQuery1.SQL.Add('where USERINFO.NUMBER="' Edit1.Text '" and CHECKINOUT.CHECKTIME >="#DateTimePicker1.DateTime#" and CHECKINOUT.CHECKTIME >="#DateTimePicker2.DateTime#"'); ADOQuery1.Open; 為啥會出現準則運算式的資料型類不符合??CHECKINOUT.CHECKTIME<==這個欄位的型態為日期/時間丫,資料庫為access。
StrongLemon
高階會員


發表:10
回覆:166
積分:105
註冊:2004-04-18

發送簡訊給我
#2 引用回覆 回覆 發表時間:2005-10-25 23:58:38 IP:211.74.xxx.xxx 未訂閱
您沒有把DateTimePicker1.DateTime轉成Str....而且沒有用+
huwk
資深會員


發表:26
回覆:340
積分:323
註冊:2002-04-03

發送簡訊給我
#3 引用回覆 回覆 發表時間:2005-10-26 00:11:44 IP:211.76.xxx.xxx 未訂閱
建議你改用動態參數的方式 ADOQuery1.SQL.Add('where USERINFO.NUMBER= :P1 and CHECKINOUT.CHECKTIME >=:P2 and CHECKINOUT.CHECKTIME >= :P3'); ADOQuery1.Parameters.ParamByName('P1').Value := Edit1.Text; ADOQuery1.Parameters.ParamByName('P2').Value := DateTimePicker1.DateTime; ADOQuery1.Parameters.ParamByName('P3').Value := DateTimePicker2.DateTime; 依此即可
------
熊的學習 http://huwk.blogspot.com
jacosun
一般會員


發表:42
回覆:64
積分:21
註冊:2003-04-18

發送簡訊給我
#4 引用回覆 回覆 發表時間:2005-10-26 00:59:07 IP:210.64.xxx.xxx 未訂閱
引言: 建議你改用動態參數的方式 ADOQuery1.SQL.Add('where USERINFO.NUMBER= :P1 and CHECKINOUT.CHECKTIME >=:P2 and CHECKINOUT.CHECKTIME >= :P3'); ADOQuery1.Parameters.ParamByName('P1').Value := Edit1.Text; ADOQuery1.Parameters.ParamByName('P2').Value := DateTimePicker1.DateTime; ADOQuery1.Parameters.ParamByName('P3').Value := DateTimePicker2.DateTime; 依此即可
真得是殘念,照大大的寫法他就死給我看 一動也不動 @@! 真不知問題出在那?
StrongLemon
高階會員


發表:10
回覆:166
積分:105
註冊:2004-04-18

發送簡訊給我
#5 引用回覆 回覆 發表時間:2005-10-26 01:34:05 IP:211.74.xxx.xxx 未訂閱
用下面的範例吧,回想之前碰到#->AdoQuery會粉怪出問題不行.. 這我試過了..logindate是日期格式。    
ADOQuery1.SQL.Add('select * from [sys_usedlog] where [logindate]>= ' FloatToStr(DateTimePicker1.DateTime) '');    
deity
尊榮會員


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

發送簡訊給我
#6 引用回覆 回覆 發表時間:2005-10-26 09:22:28 IP:218.15.xxx.xxx 未訂閱
插个花:   show show你的SQL语句就可以知道问题所在,改为如下:
begin
  ADOQuery1.Close;
  ADOQuery1.SQL.Clear;
  ADOQuery1.SQL.Add('Select NUMBER,NAME,CHECKTIME,CHECKTYPE FROM USERINFO RIGHT JOIN CHECKINOUT');
  ADOQuery1.SQL.Add('on USERINFO.USERID = CHECKINOUT.USERID');
  ADOQuery1.SQL.Add('where USERINFO.NUMBER="' Edit1.Text '" and CHECKINOUT.CHECKTIME >= #' datetostr(DateTimePicker1.DateTime) '# and CHECKINOUT.CHECKTIME <= #' datetostr(DateTimePicker2.DateTime) '#');
//另用formatdatetime也行,
//如CHECKINOUT.CHECKTIME >= #' formatdatetime('yyyy-MM-    dd',DateTimePicker1.DateTime) '#
//  showmessage(ADOQuery1.SQL.Text); <<--show出SQL语句
  ADOQuery1.Open;
end;
另如果要用动态参数也行,参考
ADOQuery1.SQL.Add('where USERINFO.NUMBER= :P1 and CHECKINOUT.CHECKTIME >=:P2 and CHECKINOUT.CHECKTIME <= :P3');
 ADOQuery1.Parameters.ParamByName('P1').DataType:=ftstring;
  ADOQuery1.Parameters.ParamByName('P1').Value := Edit1.Text;
  ADOQuery1.Parameters.ParamByName('P2').DataType:=ftdatetime;
  ADOQuery1.Parameters.ParamByName('P2').Value := DateTimePicker1.DateTime;
  ADOQuery1.Parameters.ParamByName('P3').DataType:=ftdatetime;//根据你的类型来定,是date就ftdate是datetime就ftdatetime
  ADOQuery1.Parameters.ParamByName('P3').Value := DateTimePicker2.DateTime;    注意蓝色部分
试试看
<> ============================ 为什么经过多年以后,得失的过程如此冷漠 ============================ 發表人 -
系統時間:2024-07-04 23:33:50
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!