2014-11-03 59 views
0

我正在使用以下Tutorial創建簡單MFC應用程序,問題是在表中插入新行 應用程序顯示錯誤說記錄集是隻讀的。 是否有任何變量需要設置爲將Recordset更改爲寫入模式?記錄集更新和刪除失敗(ODBC)

void CSampleDBView::OnBnClickedInsert() 
{ 
    CStringW text; 
    m_input.GetWindowTextW(text); 
    m_pSet->m_student=text; 
    m_pSet->AddNew(); 
    m_pSet->Update(); 
    AfxMessageBox(text);  
} 

這是單擊按鈕時添加新行的代碼。 m_input是一個EditControl從其中插入的文本被接收。

回答

0

檢查CRecordset是如何打開的。如果您打算更新它,則需要輸入'CRecordset :: dynaset'或CRecordset :: dynamic'。您打開的電話可能有「快照」或其他類型。

發佈的代碼還有一個額外的問題。到的AddNew()的調用需要來之前分配線:

m_pSet->AddNew(); 
m_pSet->m_student=text; 

因爲調用的AddNew()初始化一個用來跟蹤其列具有改變的數據標誌。

+0

嗨是的,我是否正在使用SNAPSHOT,因此快照是隻讀的? – AAB 2014-11-04 05:25:07

+0

是的,快照意味着只讀。快照上不允許添加或編輯。 – 2014-11-04 05:27:58

+0

那麼,如果我選擇Dynaset而選擇數據源,問題就會消失?奇怪,但是當我讀取快照的細節時,他們從來沒有提到任何關於只讀的事情,只是說需要Requery()來顯示新的更新。 – AAB 2014-11-04 05:35:57