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

數據庫查詢時的問題

尚未結案
danielldf
一般會員


發表:44
回覆:60
積分:20
註冊:2003-05-12

發送簡訊給我
#1 引用回覆 回覆 發表時間:2003-05-19 14:42:00 IP:218.16.xxx.xxx 未訂閱
我用的是SQL server 7.0 delphi7.0,現在我要設計查詢員工資料(數據表是T_empl)的入廠時間(字段是empl_in_date),語句是'select * from T_empl where empl_in_date>=date4.date and empl_in_date<=date2.Date'其中date4及date2都是tdatetimepicker,可是執行時卻出現‘the column prefix 'date4' does not match with a table name or alias name used in the query.’錯誤提示。我不知道是怎麼回事,請教各位先進解決辦法?不勝感激! 發表人 - danielldf 於 2003/05/19 14:47:28
channel
尊榮會員


發表:67
回覆:707
積分:854
註冊:2002-05-02

發送簡訊給我
#2 引用回覆 回覆 發表時間:2003-05-19 14:49:30 IP:211.21.xxx.xxx 未訂閱
引言: 我用的是SQL server 7.0 delphi7.0,現在我要設計查詢員工資料(數據表是T_empl)的入廠時間(字段是empl_in_time),語句是'select * from T_empl where edmpl_in_date>=date4.date and edmpl_in_date<=date2.Date'其中date4及date2都是tdatetimepicker,可是執行時卻出現‘the column prefix 'date4' does not match with a table name or alias name used in the query.’錯誤提示。我不知道是怎麼回事,請教各位先進解決辦法?不勝感激!
試試看:
with Query1 do
begin
  Close;
  SQL.Clear;
  SQL.Add('select * from T_empl where edmpl_in_date>= :Bdate and edmpl_in_date<= :Edate');
  ParamByName('Bdate').AsDateTime := date4.date;
  ParamByName('Edate').AsDateTime := date2.date;
  Open;
end;
~小弟淺見,參考看看~ 發表人 - channel 於 2003/05/19 14:52:25
------
~小弟淺見,參考看看~
T.J.B
版主


發表:29
回覆:532
積分:497
註冊:2002-08-14

發送簡訊給我
#3 引用回覆 回覆 發表時間:2003-05-19 16:10:48 IP:61.220.xxx.xxx 未訂閱
hi danielldf: 如果channel 兄所提供的答案無法解決 那麼是不是你有用database元件 如果有 去檢查query上的databaseName 是否 和database元件上的databaseName 名稱一樣 天行健 君子當自強不息~~@.@
------
天行健
君子當自強不息~~@.@
danielldf
一般會員


發表:44
回覆:60
積分:20
註冊:2003-05-12

發送簡訊給我
#4 引用回覆 回覆 發表時間:2003-05-19 19:23:13 IP:218.16.xxx.xxx 未訂閱
兩位先進,還是不行啊。照channel所說的程序又說ParamByName是無效的定義符(那個Bdate及Edate是隨便指定還是要是字段名);而且我沒有用什麼datebase元件啊,query上也沒有databasename這一屬性啊!小弟是菜鳥一級的,尚謝不吝賜教。先行謝過!
chih
版主


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

發送簡訊給我
#5 引用回覆 回覆 發表時間:2003-05-19 20:07:06 IP:61.216.xxx.xxx 未訂閱
date4是你的Table??我假設你是用DateTimePicker..上面channel兄的語法沒有錯.. with Query1 do begin Close; SQL.Clear; SQL.Add('select * from T_empl where edmpl_in_date>= :Bdate and edmpl_in_date<= :Edate'); ParamByName('Bdate').AsDateTime := DateTimePicker1.Date; ParamByName('Edate').AsDateTime := date2.Date; Open; end; 如果還是不行你要不要把程式上傳這樣大家才能幫你看錯在哪...
引言: 兩位先進,還是不行啊。照channel所說的程序又說ParamByName是無效的定義符(那個Bdate及Edate是隨便指定還是要是字段名);而且我沒有用什麼datebase元件啊,query上也沒有databasename這一屬性啊!小弟是菜鳥一級的,尚謝不吝賜教。先行謝過!
timhuang
尊榮會員


發表:78
回覆:1815
積分:1608
註冊:2002-07-15

發送簡訊給我
#6 引用回覆 回覆 發表時間:2003-05-19 21:47:16 IP:61.221.xxx.xxx 未訂閱
引言: 兩位先進,還是不行啊。照channel所說的程序又說ParamByName是無效的定義符(那個Bdate及Edate是隨便指定還是要是字段名);而且我沒有用什麼datebase元件啊,query上也沒有databasename這一屬性啊!
看你的回答. 好像你用的是 adoquery 是不是? 若是 adoquery 的話, 就這樣下:
'select * from T_empl where empl_in_date>='''+FormatDateTime('yyyy/mm/dd',date4.date)+''' and empl_in_date<='''+FormatDateTime('yyyy/mm/dd',date2.Date)+''''
或
'select * from T_empl where empl_in_date>='+QuotedStr(FormatDateTime('yyyy/mm/dd',date4.date))+' and empl_in_date<='+QuotedStr(FormatDateTime('yyyy/mm/dd',date2.Date))
試試看!!
wildchoi
一般會員


發表:8
回覆:15
積分:9
註冊:2003-05-20

發送簡訊給我
#7 引用回覆 回覆 發表時間:2003-05-21 15:47:12 IP:202.175.xxx.xxx 未訂閱
如果你用的真是adoquery 的話 還可以用以下的方法prepare; (始終變量用parameter 的方法比較好) with Query1 do begin Close; SQL.Clear; SQL.Add('select * from T_empl where edmpl_in_date>= :Bdate and edmpl_in_date<= :Edate'); parameters.parambyname('bdate').value:=FormatDateTime('yyyy/mm/dd',date4.date); parameters.parambyname('edate').value:=FormatDateTime('yyyy/mm/dd', date2.date); if not prepared then prepared; Open; end;
danielldf
一般會員


發表:44
回覆:60
積分:20
註冊:2003-05-12

發送簡訊給我
#8 引用回覆 回覆 發表時間:2003-05-22 17:01:32 IP:218.16.xxx.xxx 未訂閱
非常感謝各位先進的熱忱幫助,我已將此問題解決了。特別是timhuang,可惜我將得分指錯了,因為我是按你的做法實現的,其它我想也可以,只是我對parameters.parambyname('bdate').value這一方法不是很清楚怎樣使用,因為我照此做的話,系統說'bdate'是無效的資料行名稱。
系統時間:2024-07-02 4:12:06
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!