vc++ 数据库 插入记录 90
先介绍下程序的整体设计哈:程序界面如下图所示:我的需求是:点击刷新后,在一个Excel文档中插入一段记录(因为知识个自习用的模型,所以就没用Access或是别的更高端的数...
先介绍下程序的整体设计哈:
程序界面如下图所示:
我的需求是:点击刷新后,在一个Excel文档中插入一段记录(因为知识个自习用的模型,所以就没用Access或是别的更高端的数据库了哈)
Excel文档的表格结构如下图所示:
下面是点击刷新按钮后的代码:
void C数据库自习模型Dlg::OnBnClickedButton1()
{
if(DB_writer->CanAppend())
{
DB_writer->MoveFirst();
DB_writer->AddNew();
DB_writer->column1="aaaaaaaaaaa";
DB_writer->column2="1111111111";
DB_writer->column3=2;
//*****下面这行代码出现了问题*****//
DB_writer->Update();
}
}
这里的DB_writer变量为一个MFC ODBC使用者对象,此时已近与目标Excel文件建立了连接,并且可以正常读取文件中的信息,但每当运行到“DB_writer->Update();”这句代码的时候,都会弹出如下图所示的错误提示:
在实际操作中,我发现如果删除下面这几行代码:
DB_writer->column1="aaaaaaaaaaa";
DB_writer->column2="1111111111";
DB_writer->column3=2;
程序就不会报错,但这实际上就是什么都没修改啊。。。
小弟我实在水平有限,百度了很久都没有找到合适的解决方案,还求高手们不吝赐教啊。。。
上面的代码调用了检测代码后的结果如下所示哈:
bool i;
i=DB_writer->CanUpdate();//本句运行后,i=false
i=DB_writer->CanAppend();//本句运行后,i=true
另外DB_writer->open()函数的返回值始终为1,看似一切正常哈
open的代码如下(写在OnInitDialog()中):
DB_writer=new CSheet1;
int i=false;
i=DB_writer->Open(CRecordset::dynaset , _T("[Sheet1$]"),CRecordset::appendOnly);
//运行后i=true
还求高手不吝赐教呀。。。 展开
程序界面如下图所示:
我的需求是:点击刷新后,在一个Excel文档中插入一段记录(因为知识个自习用的模型,所以就没用Access或是别的更高端的数据库了哈)
Excel文档的表格结构如下图所示:
下面是点击刷新按钮后的代码:
void C数据库自习模型Dlg::OnBnClickedButton1()
{
if(DB_writer->CanAppend())
{
DB_writer->MoveFirst();
DB_writer->AddNew();
DB_writer->column1="aaaaaaaaaaa";
DB_writer->column2="1111111111";
DB_writer->column3=2;
//*****下面这行代码出现了问题*****//
DB_writer->Update();
}
}
这里的DB_writer变量为一个MFC ODBC使用者对象,此时已近与目标Excel文件建立了连接,并且可以正常读取文件中的信息,但每当运行到“DB_writer->Update();”这句代码的时候,都会弹出如下图所示的错误提示:
在实际操作中,我发现如果删除下面这几行代码:
DB_writer->column1="aaaaaaaaaaa";
DB_writer->column2="1111111111";
DB_writer->column3=2;
程序就不会报错,但这实际上就是什么都没修改啊。。。
小弟我实在水平有限,百度了很久都没有找到合适的解决方案,还求高手们不吝赐教啊。。。
上面的代码调用了检测代码后的结果如下所示哈:
bool i;
i=DB_writer->CanUpdate();//本句运行后,i=false
i=DB_writer->CanAppend();//本句运行后,i=true
另外DB_writer->open()函数的返回值始终为1,看似一切正常哈
open的代码如下(写在OnInitDialog()中):
DB_writer=new CSheet1;
int i=false;
i=DB_writer->Open(CRecordset::dynaset , _T("[Sheet1$]"),CRecordset::appendOnly);
//运行后i=true
还求高手不吝赐教呀。。。 展开
1个回答
展开全部
你都知道调用CanAppend,也应该要知道update前调用canupdate.
你这个问题,应该把Open的代码贴出来看看,我估计你是以readonly方式打开的文件。
因此无法更新。
virtual BOOL Open(
UINT nOpenType = AFX_DB_USE_DEFAULT_TYPE,
LPCTSTR lpszSQL = NULL,
DWORD dwOptions = none
);
看它的第三个参数dwOptions
你这个问题,应该把Open的代码贴出来看看,我估计你是以readonly方式打开的文件。
因此无法更新。
virtual BOOL Open(
UINT nOpenType = AFX_DB_USE_DEFAULT_TYPE,
LPCTSTR lpszSQL = NULL,
DWORD dwOptions = none
);
看它的第三个参数dwOptions
追问
canupdate函数返回值始终为false,我open的代码用的是默认值:
DB_writer=new CShe;
DB_writer->Open();
后我将其改为下面的样子,但依然失败
DB_writer->Open(CRecordset::dynaset, NULL,CRecordset::appendOnly);
上面的反回值为1
字数限制真讨厌哎
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询