2014-11-03 110 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