iT邦幫忙

0

請問要如何將ListView內部資料寫入到ACCESS 2003(BCB6)

void __fastcall TForm2::BitBtn26Click(TObject *Sender)
{
try
{
ADOTable1->Close();
ADOTable1->Edit();
ADOTable1->Post();
ADOTable1->FieldByName("編號")->AsVariant = ListView1->Items->Item[0]->Caption;
ADOTable1->FieldByName("商品名稱")->AsVariant =ListView1->Items->Item[0]->SubItems->Strings[1]
ADOTable1->FieldByName("數量")->AsVariant = ListView1->Items->Item[0]->SubItems->Strings[2];

ADOTable1->FieldByName("單價")->AsVariant = ListView1->Items->Item[0]->SubItems->Strings[3];

ADOTable1->Next();
ADOTable1->Active=true;
}
catch(...)
{

}

}

以上是我的程式碼 請各位高手幫幫忙 到底哪邊出錯

它顯示出
project Project1.exe raised exception class EDatabaseError with message 'ADOTable:Cannot perform this operation on a closed dataset'.
或是有哪些地方我沒設定到的 請各位幫幫忙

看更多先前的討論...收起先前的討論...
fillano iT邦超人 1 級 ‧ 2009-04-24 22:33:47 檢舉
很久沒碰BCB了(大概有八年?)不過我記得他的online help都有sample code的。
fillano iT邦超人 1 級 ‧ 2009-04-26 12:33:08 檢舉
如果急的話,我覺得你買書來看還比較快,也比較有個全貌。你這樣碰到問題就問,時間很難掌握吧?
kix42685 iT邦新手 5 級 ‧ 2009-04-26 16:10:32 檢舉
書有4本了= =(包含資料庫)
重點都沒有我想要的功能 所以我才PO出來請教各位
不過謝謝你的建議!!!
fillano iT邦超人 1 級 ‧ 2009-04-26 20:12:42 檢舉
了解。
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

2 個回答

10
pcboy
iT邦大師 6 級 ‧ 2009-04-24 20:33:36
最佳解答

兩個方案

  1. 如果你的ADOTable1目前的資料就是你要的
    不要一開始就 close, 後面會抓不到資料

  2. 如果你的ADOTable1目前的資料不是你要的, 所以先 Close
    那妳要重新去抓妳要的資料放入 ADOTable1 (請補這段程式碼), 然後才能去處理

8
bizpro
iT邦大師 1 級 ‧ 2009-04-24 20:07:20

我不懂BCB, 但是根據錯誤訊息:
raised exception class EDatabaseError with message 'ADOTable:Cannot perform this operation on a closed dataset
說不能在關閉狀態下的資料表完成這項操作. 看你的程式, 一開始的ADOTable1->Close();就是關閉了資料表, 是不是應該要先ADOTable1->Open(); 然後在完成
所有的更新後再用ADOTable1->Close();

我要發表回答

立即登入回答