
如果資料庫為*.MDB
Table1->Post();
int a=Table1->FieldByName("Id")->AsInteger;
結果a=29;
我現在想換位paradox
資料庫為*.DB,資料庫見上圖
Table1->Last();
Table1->Prior();
int a=Table1->FieldByName("Id")->AsInteger;
結果a=28;
Table1->Last();
int a=Table1->FieldByName("Id")->AsInteger;
結果a=0;
Table1->Post();
int a=Table1->FieldByName("Id")->AsInteger;
結果a=0;
Table1->Post();
Table1->Prior();
int a=Table1->FieldByName("Id")->AsInteger;
結果a=28;
我其實想讀取的是最后一排數,即29.
但指標指向最后一排時結果總為0;
有高人能看出問題出在哪嗎?
uj5u.com熱心網友回復:
補充一下:paradox 中 id 是自增欄位2到19到26中間不連續是我洗掉的,我用的是自增變數
uj5u.com熱心網友回復:
我先Table1->Insert();在編輯框輸入數值后,后呼叫Table1->Post();進行保存,再Table1->Fields->FieldByNumber(1)->AsInteger;取出存的結果只要不查最后一行,查其他行什么問題沒有,最后一行一查,為0。再添加數值再查,倒數第二行正常最后一行為0;再添加再查,倒數第二行正常最后一行還是為0;
如果不執行Table1->Insert();查最后一行結果正常。
uj5u.com熱心網友回復:
實在不行就再Post一次,然后Prior讀資料,要不就不要自動增量的id,人工維護id,這樣就不用翻回頭讀id值uj5u.com熱心網友回復:
在我自己的電腦上讀取寫入都正常,將我的程式安裝到另外的機子(沒裝BCB)也可以讀取寫入*.DB資料庫,但就是最后蹦出個[Microsoft][ODBC 驅動程式管理器] 未發現資料源名稱并且未指定默認驅動程式對話框
在自己的電腦上則不會。
我在在“ODBC資料源管理器”中,設定用于連接資料庫的DSN用的是系統DSN。不是用戶DSN所以不是這個原因。
有人經歷過類似的問題嗎?
uj5u.com熱心網友回復:
其實對于資料量不大的應用,用Sqlite很方便,沒必要用access、paradox這類的檔案資料庫uj5u.com熱心網友回復:
這個問題可能太怪,沒人知道,放棄。我有新問題再次提出不然就這樣把分散出太不值,我想在文本txt檔案,輸出一行字符1234后換行,再輸出一行字符abcdef換行,再輸出一行字符“統計結果
”后換行,但結果總是出現黑點。
uj5u.com熱心網友回復:
int hfile;AnsiString s="1234\r";
AnsiString s1=" abcdef\r";
AnsiString s2="統計結果\n";
hfile=FileOpen("TEST.txt",1);
FileSeek(hfile,10,2);
FileWrite(hfile,s.c_str(),s.Length());
FileWrite(hfile,s1.c_str(),s1.Length());
FileWrite(hfile,s2.c_str(),s2.Length());
FileClose(hfile);
uj5u.com熱心網友回復:
AnsiString s="1234\r\n";二進制寫入檔案換行要\r\n
文本寫入自動把\n轉換為\r\n,讀取的時候相反
uj5u.com熱心網友回復:
換行符‘\n’和回車符‘\r’顧名思義,換行符就是另起一行,回車符就是回到一行的開頭,所以我們平時撰寫檔案的回車符應該確切來說叫做回車換行符
'\n' 10 換行(newline)
'\r' 13 回車(return)
也可以表示為'\x0a'和'\x0d'.(16進制)
在windows系統下,回車換行符號是"\r\n".
uj5u.com熱心網友回復:
Table1->Last();
if(Table1->Eof)
Table1->Prior();
你可以這樣看資料集指標:
BOF
Record1
...
RecordN
EOF
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/72744.html
標籤:VCL組件使用和開發
