TClientDataSet Post 一筆新資料,如何取得該筆資料自動編的值. |
答題得分者是:GrandRURU
|
brook
資深會員 發表:57 回覆:323 積分:371 註冊:2002-07-12 發送簡訊給我 |
請教各位大大,我要取得剛新增資料的自動編號的值如何取得呢?
我用下列方式並不管用. [code cpp] 請在此區域輸入程式碼 ClientDataSet1->Append(); ClientDataSet1->Edit(); ClientDataSet1->FieldByName("A")->AsString = ""; ClientDataSet1->FieldByName("NAME")->AsString = "AA"; ClientDataSet1->Post(); ClientDataSet1->ApplyUpdates(1); int CusNo = DataSet->FieldByName("A")->AsInteger; [/code] |
sryang
尊榮會員 發表:39 回覆:762 積分:920 註冊:2002-06-27 發送簡訊給我 |
|
allen-86
一般會員 發表:28 回覆:44 積分:19 註冊:2008-02-01 發送簡訊給我 |
|
brook
資深會員 發表:57 回覆:323 積分:371 註冊:2002-07-12 發送簡訊給我 |
|
allen-86
一般會員 發表:28 回覆:44 積分:19 註冊:2008-02-01 發送簡訊給我 |
|
GrandRURU
站務副站長 發表:240 回覆:1680 積分:1874 註冊:2005-06-21 發送簡訊給我 |
關於「Unable to find record. No key specified.」,你可以參考
"Unable to find record. No key specified"错误分析及解决办法另外,看你的程式碼內容,建議把重複語句過濾處理一下,例如:[code cpp] ClientDataSet1->Append(); //ClientDataSet->Edit() . . . [/code] 這樣比較不會有誤處理的可能,你想想,又要append又要edit,那是要db做哪一件事呢? 再來,ClientDataSet->Refreash()這句確實有可能不動作。 比較安心的做法還是應該利用 ClientDataSet->Close() ClientDataSet->Open()來完成 最後,再利用eof指標找最後一筆的資料即可。 以上 ===================引 用 brook 文 章=================== 非常感謝sryang大大和allen-86大大的回答. 我發現用ClientDataSet1->Refresh();時, 資料一般會到剛剛Append的那筆資料, 但有時Append的那筆資料卻不在最後一筆時,就會出錯. 不過對於為什麼Append的那筆資料不是在最後一筆,我也是很納悶??? (我用的資料庫是DBMAKER) 而用Clientdataset1->RefreshRecord(); 則會出現Unable to find record. No key specified.
編輯記錄
GrandRURU 重新編輯於 2010-06-21 22:07:11, 註解 無‧
|
brook
資深會員 發表:57 回覆:323 積分:371 註冊:2002-07-12 發送簡訊給我 |
看來也只能這樣,簡單的事,複雜的做.
[code cpp] 請在此區域輸入程式碼 ClientDataSet1->Post(); ClientDataSet1->ApplyUpdates(1); Query1->Close(); Query1->SQL->Clear(); Query1->SQL->Add("SELECT MAX(A) AS AA FROM Customer"); Query1->Open(); int a = Query->FieldByName("AA")->AsInteger; ClientDataSet1->Close(); ClientDataSet1->Open(); ClientDataSet1->Locate("A",a,TLocateOptions()); [/code] |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |