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

dbf轉入access再檢查時發現代號不等於

尚未結案
nick167
中階會員


發表:86
回覆:133
積分:53
註冊:2003-02-12

發送簡訊給我
#1 引用回覆 回覆 發表時間:2004-09-18 13:33:41 IP:61.228.xxx.xxx 未訂閱
var Form1: TForm1; S:String; implementation {$R *.dfm} procedure TForm1.Button1Click(Sender: TObject); var z,z1:string; begin z:= adoquery1.FieldByName('n5').Value+' '+adoquery1.FieldByName('n3').Value; adoquery1.Next; z1:= adoquery1.FieldByName('n5').Value+' '+adoquery1.FieldByName('n3').Value; if adoquery1.FieldByName('n5').Value <> S then Showmessage('Next '+z+' 不等於 '+z1); s:=adoquery1.FieldByName('n5').Value; end; procedure TForm1.FormActivate(Sender: TObject); begin s:=adoquery1.FieldByName('n5').Value; end; procedure TForm1.Button2Click(Sender: TObject); var z,z1:string; begin z:= adoquery1.FieldByName('n5').Value+' '+adoquery1.FieldByName('n3').Value; adoquery1.Prior; z1:= adoquery1.FieldByName('n5').Value+' '+adoquery1.FieldByName('n3').Value; if adoquery1.FieldByName('n5').Value <> S then Showmessage('Prior '+z+' 不等於 '+z1); s:=adoquery1.FieldByName('n5').Value; end; 在做判斷時才發現dbf轉入access資料時,在修改n5後,會發現 本筆n5與上下筆n5不等於 實際都是 1113
Chance36
版主


發表:31
回覆:1033
積分:792
註冊:2002-12-31

發送簡訊給我
#2 引用回覆 回覆 發表時間:2004-09-18 16:08:29 IP:203.204.xxx.xxx 未訂閱
nick167 你好
procedure TForm1.Button1Click(Sender: TObject);
var
  z,z1:string;
begin
  z:= adoquery1.FieldByName('n5').Value ' ' adoquery1.FieldByName('n3').Value;
  s:=adoquery1.FieldByName('n5').Value;
  adoquery1.Next;
  z1:= adoquery1.FieldByName('n5').Value ' ' adoquery1.FieldByName('n3').Value;
  if adoquery1.FieldByName('n5').Value <> S then
    Showmessage('Next ' z ' 不等於 ' z1);
end;    procedure TForm1.Button2Click(Sender: TObject);
var
  z,z1:string;
begin
  z:= adoquery1.FieldByName('n5').Value ' ' adoquery1.FieldByName('n3').Value;
  s:=adoquery1.FieldByName('n5').Value;
  adoquery1.Prior;
  z1:= adoquery1.FieldByName('n5').Value ' ' adoquery1.FieldByName('n3').Value;
  if adoquery1.FieldByName('n5').Value <> S then
    Showmessage('Prior ' z ' 不等於 ' z1);
end;
1.將程式成如上方式,S的變數值是即時取得的,不要讓S的變數值是取用上一次動作遺留下來的值,萬一中間有變恐怕不易察覺吧!(如按了Next之後再用dbGrid的捲軸移記錄指標後,S的值就是錯誤的值了,此時按下Next或Prior按鈕,結果皆是錯的) PS.欄位值的使用僅量少用FieldByName('FieldName').Value ;而應該很明確的指出取用的態,如FieldByName('FieldName').AsInteger;這樣比較好喔!如上程式就看不出S到底是何型態。 _______________________________________ 深藍的魚,祝您好運..........連連 發表人 - chance36 於 2004/09/18 16:10:16
nick167
中階會員


發表:86
回覆:133
積分:53
註冊:2003-02-12

發送簡訊給我
#3 引用回覆 回覆 發表時間:2004-09-18 16:54:19 IP:61.228.xxx.xxx 未訂閱
Chance36 版主 你好    謝謝上述觀念    s:=adoquery1.FieldByName('n5').Value;   adoquery1.Next; 沒有解決    全部欄位是varchar.    在判別n5的值是否相等,小弟如今疑惑是 排列 select * from test order by n5,n1,n4 當n5下一筆與上一筆不同時,(做其他程式,後再回到原record) 如果是一個新的access資料輸入資料,不會有上圖顯示問題, 但如今客戶資料是由dos版 dbf 轉入 access資料庫後,在新增或修改n5值後,就會出現上述狀況,難道早期dos的dbf轉入後會有如此問題 我發現此問題是用QuickRep,QRGroup(Expression....)判別n5值不一樣時印出合計,如下圖 我困惑多天可否?真不知所措
Chance36
版主


發表:31
回覆:1033
積分:792
註冊:2002-12-31

發送簡訊給我
#4 引用回覆 回覆 發表時間:2004-09-19 01:07:20 IP:203.204.xxx.xxx 未訂閱
nick167 你好
  由你貼出的ShowMessage中發現N5的欄位值好像含有空白字元,建議改成如下試試看    procedure TForm1.Button1Click(Sender: TObject);
var
  z,z1:string;
begin
  z:= adoquery1.FieldByName('n5').Value ' ' adoquery1.FieldByName('n3').Value;
  s:=Trim(adoquery1.FieldByName('n5').AsString); // 除去前後空白
  adoquery1.Next;
  z1:= adoquery1.FieldByName('n5').Value ' ' adoquery1.FieldByName('n3').Value;
  if Trim(adoquery1.FieldByName('n5').AsString) <> S then
    Showmessage('Next ' z ' 不等於 ' z1);
end;    PS:Button2.OnClick比照辦理。
 
_______________________________________ 深藍的魚,祝您好運..........連連
nick167
中階會員


發表:86
回覆:133
積分:53
註冊:2003-02-12

發送簡訊給我
#5 引用回覆 回覆 發表時間:2004-09-20 08:54:14 IP:61.228.xxx.xxx 未訂閱
Chance36 版主 你好 我在dbf轉入將該欄位有空白trim就解決 謝謝版主
系統時間:2024-09-29 6:18:26
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!