全國最多中醫師線上諮詢網站-台灣中醫網
發文 回覆 瀏覽次數:2275
推到 Plurk!
推到 Facebook!

請教日期字串已經轉為數字為與Table index k值一樣Type為何不行?

答題得分者是:adonis
K1086
初階會員


發表:63
回覆:148
積分:42
註冊:2007-04-09

發送簡訊給我
#1 引用回覆 回覆 發表時間:2007-05-23 22:40:13 IP:220.131.xxx.xxx 訂閱
<textarea class="delphi" rows="10" cols="60" name="code">procedure TForm1.Date_1Change(Sender: TObject); Var SQL:string; TS1:INTEGER;//日期號碼字串轉數字 S:string[8]; begin S:= FormatDateTime('yyyyMMdd',Date_1.DateTime); showmessage(S); TS1:=STRTOINT(S); //字串轉數字 QUERY1.Close; QUERY1.SQL.CLEAR; QUERY1.SQL.ADD('SELECT * FROM Twn_Date.dbf WHERE '); QUERY1.SQL.ADD('Date_W <= TS1'); //比對Table index k值 // QUERY1.SQL.ADD('Date_w <= 20070523'); //這樣測試可以正常 RUN QUERY1.SQL.ADD('ORDER BY Date_w ASC'); QUERY1.OPEN; QUERY1.Last; //與 ASC 對應處理 QUERY1.NEXT; Edit1.Text := QUERY1.FIELDBYNAME('Date1').Value; Lab_S.Caption:=QUERY1.FIELDBYNAME('NAME1').Value; Lab_T.Caption:=QUERY1.FIELDBYNAME('NAME2').Value; Lab_G.Caption:=QUERY1.FIELDBYNAME('NAME3').Value; end; end.</textarea><br /> 請教各位先進... 小弟用這種方式去比對 dBASE 是那裡錯誤 ??編譯會通過 RUN 出錯
Stallion
版主


發表:52
回覆:1600
積分:1995
註冊:2004-09-15

發送簡訊給我
#2 引用回覆 回覆 發表時間:2007-05-23 23:27:39 IP:211.22.xxx.xxx 未訂閱
<textarea class="delphi" rows="10" cols="60" name="code"> procedure TForm1.Date_1Change(Sender: TObject); var SQL,S:string; TS1:INTEGER;//日期號碼字串轉數字 begin S:= FormatDateTime('yyyyMMdd',Date_1.DateTime); Showmessage(S); TS1:=STRTOINT(S); //字串轉數字 QUERY1.Close; QUERY1.SQL.CLEAR; QUERY1.SQL.Parameter.Clear; QUERY1.SQL.ADD('SELECT * FROM Twn_Date.dbf WHERE Date_W <= :aValue ORDER BY Date_w ASC'); QUERY1.SQL.ParameterValue['aValue'] := TS1; QUERY1.OPEN; if ( QUERY1.RecordCount > 0 ) then begin Edit1.Text := QUERY1.FIELDBYNAME('Date1').Value; Lab_S.Caption:=QUERY1.FIELDBYNAME('NAME1').Value; Lab_T.Caption:=QUERY1.FIELDBYNAME('NAME2').Value; Lab_G.Caption:=QUERY1.FIELDBYNAME('NAME3').Value; end; end; </textarea>
編輯記錄
Stallion 重新編輯於 2007-05-23 23:37:43, 註解 無‧
K1086
初階會員


發表:63
回覆:148
積分:42
註冊:2007-04-09

發送簡訊給我
#3 引用回覆 回覆 發表時間:2007-05-24 10:44:26 IP:220.131.xxx.xxx 訂閱

===================引 用 Stallion 文 章===================
<textarea class="delphi" rows="10" cols="60" name="code">procedure TForm1.Date_1Change(Sender: TObject); var SQL,S:string; TS1:INTEGER;//日期號碼字串轉數字 begin S:= FormatDateTime('yyyyMMdd',Date_1.DateTime); Showmessage(S); TS1:=STRTOINT(S); //字串轉數字 QUERY1.Close; QUERY1.SQL.CLEAR; QUERY1.SQL.Parameter.Clear; QUERY1.SQL.ADD('SELECT * FROM Twn_Date.dbf WHERE Date_W <= :aValue ORDER BY Date_w ASC'); QUERY1.SQL.ParameterValue['aValue'] := TS1; QUERY1.OPEN; if ( QUERY1.RecordCount > 0 ) then begin Edit1.Text := QUERY1.FIELDBYNAME('Date1').Value;???? Lab_S.Caption:=QUERY1.FIELDBYNAME('NAME1').Value;???? Lab_T.Caption:=QUERY1.FIELDBYNAME('NAME2').Value;???? Lab_G.Caption:=QUERY1.FIELDBYNAME('NAME3').Value; end; end; </textarea><br /> 請問 尊榮會員 依上列程式 執行 為何出現 undeclared identifier 'Parameter' 及
undeclared identifier 'ParameterValue' 是否在 var 區要宣告什麼??
adonis
高階會員


發表:140
回覆:258
積分:159
註冊:2002-04-15

發送簡訊給我
#4 引用回覆 回覆 發表時間:2007-05-24 11:02:08 IP:210.201.xxx.xxx 訂閱
試看看,將
QUERY1
.SQL.ParameterValue['aValue'] := TS1; --> 改成 QUERY1.ParamByName('aValue').AsInteger := TS1;

不過,不太了解的是你的這段寫法...
  • QUERY1.OPEN;
  • QUERY1.Last; //與 ASC 對應處理
  • QUERY1.NEXT;
  • 只要取最後一筆嗎( Last)??為何在未取值出來之前又作 Next 的操作?


    我也在努力學習中,若有錯謬請見諒 ~
    ------
    我也在努力學習中,若有錯謬請見諒。
    編輯記錄
    adonis 重新編輯於 2007-05-24 11:12:08, 註解 無‧
    K1086
    初階會員


    發表:63
    回覆:148
    積分:42
    註冊:2007-04-09

    發送簡訊給我
    #5 引用回覆 回覆 發表時間:2007-05-24 12:11:11 IP:220.131.xxx.xxx 訂閱
    謝謝 高階會員
    您說改成 QUERY1.ParamByName('aValue').AsInteger := TS1;
    確實沒有錯誤 可以執行正常抓到跟 TS1 值 一樣的 Value 謝謝囉
    本次 結案得分 那就選擇你囉!
    對於 尊榮會員 小弟還是非常感謝您!
    是否最後解決問題的會員得分,小弟不是很瞭解,如果有閃失請告知...
    總的說謝謝 大家啦!!

    系統時間:2024-11-23 6:03:37
    聯絡我們 | Delphi K.Top討論版
    本站聲明
    1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
    2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
    3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!