如何把字串轉換日期(使用edit?.texe元件) |
答題得分者是:h@visli
|
davinici
一般會員 發表:3 回覆:3 積分:1 註冊:2007-01-14 發送簡訊給我 |
各位DELPHI的先進:
小弟我有一個問題需要急救! 問題說明: 我有一程式碼如下: procedure TForm1.Button2Click(Sender: TObject); begin ADOQuery2.SQL.Clear; ADOQuery2.SQL.Add('select sum(公升)/max(里程數) as 每公里總成本 from 行車記錄'); if (trim(edit1.text)<>'') then ADOQuery2.sql.add('where 車號=''' edit1.text ''''); ADOQuery2.sql.add('and 日期 =''' edit2.text '''and''' edit3.text ''''); ADOQuery2.Close; ADOQuery2.Open; end; 程式碼中可以看到我用了edit1.text、edit2.text、edit3.text三個元件, 我在edit2.text、edit3.text輸入字串(例:2003/1/10),但其為字串格式,我要如何將其轉為日期格式,我SQL的WHERE條件式如下: ADOQuery2.sql.add('where 車號=''' edit1.text ''''); ADOQuery2.sql.add('and 日期 =''' edit2.text '''and''' edit3.text ''''); 要怎麼修改才正確? 或是有更好的方式呢? 請各位程式高手、先進幫我解決吧!急需,因為是期末報告! 謝謝 程式新手 |
h@visli
資深會員 發表:103 回覆:429 積分:431 註冊:2004-02-13 發送簡訊給我 |
你如果用的是SQL Server數據庫,那你的代碼就是正確的(建議"and"保留字前後加上空格)。 不同的數據庫對日期類型字段的輸入表示可能不同。
還有一種方式,就是采用參數方法: ADOQuery1.SQL.Clear; ADOQuery1.SQL.Add('insert into tst values(:name, :dt)'); ADOQuery1.Parameters.ParamByName('name').Value := Edit1.Text; ADOQuery1.Parameters.ParamValues['dt'] := StrToDateTime( Edit2.Text); ADOQuery1.ExecSQL;
------
------------------------ 博采眾家之長,奉獻綿薄之力 ------------------------ |
davinici
一般會員 發表:3 回覆:3 積分:1 註冊:2007-01-14 發送簡訊給我 |
哇! 超感謝 h@visli 您的指導,
按照您的參數法我將我的程式碼作了下列修改: ADOQuery2.SQL.Clear; ADOQuery2.SQL.Add('select sum(金額)/max(里程數) as 每公里總成本 from 行車記錄'); if (trim(edit1.text)<>'') then ADOQuery2.SQL.Add('where 車號 =''' edit1.Text ''''); ADOQuery2.SQL.Add('and 日期 between (:da1) and (:da2)'); ADOQuery2.Parameters.ParamValues['da1'] := StrToDateTime( Edit2.Text); ADOQuery2.Parameters.ParamValues['da2'] := StrToDateTime( Edit3.Text); ADOQuery2.Close; ADOQuery2.Open; 就可以用了!! 原來還可以用參數法阿! 程式果然很深澳阿! 謝謝啦! P.S:我的程式碼與法修改成這樣是對的嗎?因為程式雖可跑,但還是有點擔心語法是錯的!! |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |