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

日期參數的傳遞問題

尚未結案
zhuna
一般會員


發表:26
回覆:39
積分:13
註冊:2003-05-19

發送簡訊給我
#1 引用回覆 回覆 發表時間:2003-11-17 17:11:40 IP:210.75.xxx.xxx 未訂閱
我在程序中執行由另一個程序所設定的sql語句,但是我在傳遞日期時總是會出錯。 請問我在設定時該怎麼寫參數? 我是這樣寫的:select * from smp10100 where plandate<''' sdate ''' 在程序執行之前定義sdate參數為string型態。 字段plandate為日期型態 互相幫助,共同進步
------
互相幫助,共同進步
hagar
版主


發表:143
回覆:4056
積分:4445
註冊:2002-04-14

發送簡訊給我
#2 引用回覆 回覆 發表時間:2003-11-17 17:31:50 IP:202.39.xxx.xxx 未訂閱
用一個引號就好了:
begin
  // ...
  Query1.SQL.Text := 'select * from smp10100 where plandate < '   sdate;
  // ..
end;
--- Everything I say is a lie.
huangeider
高階會員


發表:288
回覆:492
積分:231
註冊:2003-02-26

發送簡訊給我
#3 引用回覆 回覆 發表時間:2003-11-17 17:47:02 IP:61.231.xxx.xxx 未訂閱
http://delphi.ktop.com.tw/topic.php?TOPIC_ID=29375 「堅持」從洗馬桶做起 Aric
cashxin2002
版主


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

發送簡訊給我
#4 引用回覆 回覆 發表時間:2003-11-17 18:33:46 IP:63.84.xxx.xxx 未訂閱
您好﹗    也可使用Param來做﹐如下﹕
begin
  ADOQuery1.Close;
  ADOQuery1.SQL.Clear;
  ADOQuery1.SQL.Add('Select * From smp10100 Where ');
  ADOQuery1.SQL.Add('plandate < :Sdate');
  ADOQuery1.ParamByName('Sdate').Value := StrToDate(Sdate);
  ADOQuery1.Open;
end;
參考看看﹗ ===================== 努力,相信會獲得美麗! 忻晟
------
忻晟
zhuna
一般會員


發表:26
回覆:39
積分:13
註冊:2003-05-19

發送簡訊給我
#5 引用回覆 回覆 發表時間:2003-11-18 08:00:25 IP:210.75.xxx.xxx 未訂閱
引言: 您好﹗ 也可使用Param來做﹐如下﹕
begin
  ADOQuery1.Close;
  ADOQuery1.SQL.Clear;
  ADOQuery1.SQL.Add('Select * From smp10100 Where ');
  ADOQuery1.SQL.Add('plandate < :Sdate');
  ADOQuery1.ParamByName('Sdate').Value := StrToDate(Sdate);
  ADOQuery1.Open;
end;
參考看看﹗ ===================== 努力,相信會獲得美麗! 忻晟
可能你理解錯我的意思了,我的sql語句不是在程序內寫的,是我預先存在table里的.而且我要執行的也不是同樣的語句,所以參數的傳遞這樣是不行的。 互相幫助,共同進步
------
互相幫助,共同進步
ccchen
版主


發表:61
回覆:940
積分:1394
註冊:2002-04-15

發送簡訊給我
#6 引用回覆 回覆 發表時間:2003-11-18 08:25:44 IP:218.163.xxx.xxx 未訂閱
我想他不是誤會, 只是建議吧, 之前討論過很多 每一種不同的資料庫, 日期欄位之預設型態均不同,你沒有說明用何種資料庫,因此只好請你找找看之前的討論, 記得大部分都已列出過 大型資料庫的日期格式是可依需要更改設定 在不知資料庫的情形下, 最好的方法就是用paramter如上.
nancy
一般會員


發表:8
回覆:19
積分:10
註冊:2002-07-11

發送簡訊給我
#7 引用回覆 回覆 發表時間:2003-11-18 14:48:59 IP:203.70.xxx.xxx 未訂閱
你好像最後面漏了一個引號喔! 應該要這樣: select * from smp10100 where plandate<'''+sdate+''''    試試看...
zhuna
一般會員


發表:26
回覆:39
積分:13
註冊:2003-05-19

發送簡訊給我
#8 引用回覆 回覆 發表時間:2003-11-18 15:23:37 IP:210.75.xxx.xxx 未訂閱
引言: 你好像最後面漏了一個引號喔! 應該要這樣: select * from smp10100 where plandate<''' sdate '''' 試試看... < face="Verdana, Arial, Helvetica"> 這整個語句是當作一個字符串使用的,後面再加半個引號有什麼意義?我不明白。我這個程序是預警系統的一部分,可以自動設定sql語句,然後按照預先設定的排程執行。 互相幫助,共同進步
------
互相幫助,共同進步
uuujjj
一般會員


發表:31
回覆:59
積分:18
註冊:2002-09-28

發送簡訊給我
#9 引用回覆 回覆 發表時間:2003-12-06 18:52:31 IP:61.218.xxx.xxx 未訂閱
引言: 這整個語句是當作一個字符串使用的,後面再加半個引號有什麼意義?我不明白。我這個程序是預警系統的一部分,可以自動設定sql語句,然後按照預先設定的排程執行。 互相幫助,共同進步
可以請問一下您所使用的資料庫是何種嗎??? 您說的SQL是預存在table中?? 是指delphi的table中還是?? 上面的nancy前輩所說的sql再加引號是因為在程式下撰寫的。
begin
  sql:='select * from smp10100 where plandate<''' + sdate + ''''
  with ADOQuery1 do
  begin
    Close;
    SQL.Clear;
    SQL.Add()
    Open;
  end;
end;
這樣子,才能形成完整的SQL字串, SQL的 " (雙引號)等於delphi下的 ' ' (二個單引號)
系統時間:2024-04-27 3:26:27
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!