dbf轉入access再檢查時發現代號不等於 |
尚未結案
|
nick167
中階會員 發表:86 回覆:133 積分:53 註冊:2003-02-12 發送簡訊給我 |
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 發送簡訊給我 |
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 發送簡訊給我 |
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 發送簡訊給我 |
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 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |