ACCESSS数据库更新问题

时间:2022-09-21 17:33:15
代码如下:
但是走到Update()时出错,请哪位高手解答一下,谢谢
try
{
m_pAccBaseRecordset->AddNew();
m_pAccBaseRecordset->PutCollect("字段名1", _variant_t(CString类型数据1));
m_pAccBaseRecordset->PutCollect("字段名2", _variant_t(CString类型数据2));
m_pAccBaseRecordset->PutCollect("字段名3", _variant_t(CString类型数据3));
m_pAccBaseRecordset->PutCollect("字段名4", _variant_t(CString类型数据4));
m_pAccBaseRecordset->PutCollect("字段名5", _variant_t(CString类型数据5));
m_pAccBaseRecordset->PutCollect("字段名6", _variant_t(CString类型数据6));
m_pAccBaseRecordset->PutCollect("字段名7", _variant_t(CString类型数据7));
m_pAccBaseRecordset->PutCollect("字段名8", _variant_t(CString类型数据8));
m_pAccBaseRecordset->PutCollect("字段名9", _variant_t(CString类型数据9));
m_pAccBaseRecordset->Update();
}
catch(_com_error *e)//错误判断
{
AfxMessageBox(e->ErrorMessage());
}

20 个解决方案

#1


这些字段都是字符型?

#2


什么错误信息,检查字段类型是否与变量类型一致

#3


字段2,字段3是“日期/时间”,其余是文本型

#4


KERNEL32! 7c81eb33()
MSVCRTD! _CxxThrowException@8 + 57 bytes
_com_raise_error(long 0x80040e21, IErrorInfo * 0x016ea120) + 35 bytes
_com_issue_errorex(long 0x80040e21, IUnknown * 0x017063f8, const _GUID & {IID_IRecordset}) + 93 bytes
Recordset15::Update(const _variant_t & {0x80020004 VT_ERROR}, const _variant_t & {0x80020004 VT_ERROR}) line 699

这是错误。

汇编错误指向这一行:7C81EB33   pop         esi

#5


日期/时间:加##试试

#6


字段2,字段3是“日期/时间”

参见下例
COleDateTime m_time;
CComVariant  temp = m_time;
m_pRs->PutCollect(_variant_t("shijian"),(_variant_t)temp);

#7


谢谢各位我先试试。有问题我会再来的!谢谢各位

#8


我的是这样子的
CTime time_temp = CTime::GetCurrentTime();
CString strtime = time_temp.Format("%Y-%m-%d %H:%M:%S");

#9


本帖最后由 ACMAIN_CHM 于 2009-12-10 10:29:35 编辑
应该转成日期时间型,而不是字符型

#10


各位高手,我觉得不是写入数据类型的问题,我一直用得好好的,突然就这样子了,每次走到update就出错

#11


你压缩一下MDB试试,在ACCESS中查看这个表

#12


检查一下ACCESS中的默认日期格式和你提供的日期格式是否一致。是不是有人改过系统的日期格式了。

#13


我的日期格式是“常规日期格式”:例:2009-12-9 14:38:26
我也打断点了:其中要写入时间字段的也是这个格式。可是就是执行到update就出错
我试着吧写入数据库的那几句注释掉仍然是update出错!

至于wwwwb说的方法我不他太懂,怎么压缩?

#14


引用
怎么压缩?


压缩和修复 Access 文件
为确保实现最佳性能,应该定期压缩和修复 Microsoft Access 文件。而且,如果在用户使用 Access 文件过程中发生了严重的问题,并且 Access 试图恢复时,用户会收到一条消息,告知修复操作已取消,应该压缩并修复文件。

注意  压缩位于使用 NTFS 文件系统的卷上的 Microsoft Access 文件时,Access 会删除已有文件并用压缩文件进行替代。接着,Access 将默认文件权限应用于新的文件。如果文件是 Access 数据库,请使用 Access 用户级安全机制而不是文件级权限。否则,请使用文件夹权限。有关 NTFS 文件系统和文件夹权限的其他信息,请参阅 Windows“帮助”。

为了压缩和修复 Access 数据库,用户必须对该 Access 数据库具有“打开/运行”和“以独占方式打开”的权限。

 压缩和修复当前 Access 文件

如果要压缩位于服务器或共享文件夹上的共享 Microsoft Access 数据库,请确保没有其他用户打开它。 
在“工具”菜单上,指向“数据库实用工具”,然后单击“压缩和修复数据库”。 

#15


我刚在调试时发现debug框内有这样的提示:
Error: Missing 'ODBC' prefix on connect string.
会不会着这个原因?
怎么解决

#16


打开数据库的时候吧connectstring串加上去呀。

#17


同意楼上所说

#18


引用楼主 yusongleon 的回复:
代码如下:
但是走到Update()时出错,请哪位高手解答一下,谢谢
try
{
m_pAccBaseRecordset->AddNew();
m_pAccBaseRecordset->PutCollect("字段名1", _variant_t(CString类型数据1));
m_pAccBaseRecordset->PutCollect("字段名2", _variant_t(CStr……


楼主。这个问题解决了吗?是如何解决的。。能告诉下吗

#19


引用楼主 yusongleon 的回复:
代码如下:
但是走到Update()时出错,请哪位高手解答一下,谢谢
try
{
m_pAccBaseRecordset->AddNew();
m_pAccBaseRecordset->PutCollect("字段名1", _variant_t(CString类型数据1));
m_pAccBaseRecordset->PutCollect("字段名2", _variant_t(CStr……


楼主能告诉这个问题的解决办法吗?

#20


重新装一下access吧 微软的东西用久了有些问题说不清

#1


这些字段都是字符型?

#2


什么错误信息,检查字段类型是否与变量类型一致

#3


字段2,字段3是“日期/时间”,其余是文本型

#4


KERNEL32! 7c81eb33()
MSVCRTD! _CxxThrowException@8 + 57 bytes
_com_raise_error(long 0x80040e21, IErrorInfo * 0x016ea120) + 35 bytes
_com_issue_errorex(long 0x80040e21, IUnknown * 0x017063f8, const _GUID & {IID_IRecordset}) + 93 bytes
Recordset15::Update(const _variant_t & {0x80020004 VT_ERROR}, const _variant_t & {0x80020004 VT_ERROR}) line 699

这是错误。

汇编错误指向这一行:7C81EB33   pop         esi

#5


日期/时间:加##试试

#6


字段2,字段3是“日期/时间”

参见下例
COleDateTime m_time;
CComVariant  temp = m_time;
m_pRs->PutCollect(_variant_t("shijian"),(_variant_t)temp);

#7


谢谢各位我先试试。有问题我会再来的!谢谢各位

#8


我的是这样子的
CTime time_temp = CTime::GetCurrentTime();
CString strtime = time_temp.Format("%Y-%m-%d %H:%M:%S");

#9


本帖最后由 ACMAIN_CHM 于 2009-12-10 10:29:35 编辑
应该转成日期时间型,而不是字符型

#10


各位高手,我觉得不是写入数据类型的问题,我一直用得好好的,突然就这样子了,每次走到update就出错

#11


你压缩一下MDB试试,在ACCESS中查看这个表

#12


检查一下ACCESS中的默认日期格式和你提供的日期格式是否一致。是不是有人改过系统的日期格式了。

#13


我的日期格式是“常规日期格式”:例:2009-12-9 14:38:26
我也打断点了:其中要写入时间字段的也是这个格式。可是就是执行到update就出错
我试着吧写入数据库的那几句注释掉仍然是update出错!

至于wwwwb说的方法我不他太懂,怎么压缩?

#14


引用
怎么压缩?


压缩和修复 Access 文件
为确保实现最佳性能,应该定期压缩和修复 Microsoft Access 文件。而且,如果在用户使用 Access 文件过程中发生了严重的问题,并且 Access 试图恢复时,用户会收到一条消息,告知修复操作已取消,应该压缩并修复文件。

注意  压缩位于使用 NTFS 文件系统的卷上的 Microsoft Access 文件时,Access 会删除已有文件并用压缩文件进行替代。接着,Access 将默认文件权限应用于新的文件。如果文件是 Access 数据库,请使用 Access 用户级安全机制而不是文件级权限。否则,请使用文件夹权限。有关 NTFS 文件系统和文件夹权限的其他信息,请参阅 Windows“帮助”。

为了压缩和修复 Access 数据库,用户必须对该 Access 数据库具有“打开/运行”和“以独占方式打开”的权限。

 压缩和修复当前 Access 文件

如果要压缩位于服务器或共享文件夹上的共享 Microsoft Access 数据库,请确保没有其他用户打开它。 
在“工具”菜单上,指向“数据库实用工具”,然后单击“压缩和修复数据库”。 

#15


我刚在调试时发现debug框内有这样的提示:
Error: Missing 'ODBC' prefix on connect string.
会不会着这个原因?
怎么解决

#16


打开数据库的时候吧connectstring串加上去呀。

#17


同意楼上所说

#18


引用楼主 yusongleon 的回复:
代码如下:
但是走到Update()时出错,请哪位高手解答一下,谢谢
try
{
m_pAccBaseRecordset->AddNew();
m_pAccBaseRecordset->PutCollect("字段名1", _variant_t(CString类型数据1));
m_pAccBaseRecordset->PutCollect("字段名2", _variant_t(CStr……


楼主。这个问题解决了吗?是如何解决的。。能告诉下吗

#19


引用楼主 yusongleon 的回复:
代码如下:
但是走到Update()时出错,请哪位高手解答一下,谢谢
try
{
m_pAccBaseRecordset->AddNew();
m_pAccBaseRecordset->PutCollect("字段名1", _variant_t(CString类型数据1));
m_pAccBaseRecordset->PutCollect("字段名2", _variant_t(CStr……


楼主能告诉这个问题的解决办法吗?

#20


重新装一下access吧 微软的东西用久了有些问题说不清