Access表中插入一行总失败

stevphen 2011-12-29 05:40:52
一个Access数据库中建一张表,该表只有一列,且为长整型自增类型。

使用ADO打开该表,AddNew无法增加记录,请高人指点。

谢了先。
...全文
219 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
wwwwb 2012-01-05
  • 打赏
  • 举报
回复
其中TT表为只有1个自增字段的表
wwwwb 2012-01-05
  • 打赏
  • 举报
回复
用VBA测试了一下,应该可以
Dim dd As New ADODB.Connection
Dim dd1 As New ADODB.Recordset
dd.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=Db1.mdb;Persist Security Info=False"
dd1.Open "select * from tt", dd, adOpenKeyset, adLockOptimistic
dd1.AddNew
dd1.Update
cnwin 2012-01-05
  • 打赏
  • 举报
回复
你就一列,也就是说只有自增列,我想原因就是这个,你必须还要有其他列才行.
wwwwb 2011-12-30
  • 打赏
  • 举报
回复
表中是否有主键,直接 INSERT INTO不行?是否有出错提示,检查表的设置(约束)、字段的有效性设置
详细说明
ACMAIN_CHM 2011-12-29
  • 打赏
  • 举报
回复
rsDst.AddNew();
rsDst.fields(0).value = null;

rsDst.Update();
stevphen 2011-12-29
  • 打赏
  • 举报
回复
是啊,这个表只有一列,且这一列是自增类型的。所以没法填写数据啊。
ACMAIN_CHM 2011-12-29
  • 打赏
  • 举报
回复

rsDst.AddNew();
中间没赋值?

rsDst.Update();
stevphen 2011-12-29
  • 打赏
  • 举报
回复
相同的方法打开数据库中的其他表,可以增加记录;现在这个表只有一列,且自增类别的。
插入时,报告“Row must have at least one column value set”
ACMAIN_CHM 2011-12-29
  • 打赏
  • 举报
回复
建议你查一下你的C中的ADO手册。 你打开rsDst没有指定CursorType, 如果没有则默认的应该是adOpenForwardOnly 0 默认值。使用仅向前游标。除了在记录中只能向前滚动外,与静态游标相同。当只需要在 Recordset 中进行一个传递时,用它可提高性能。

这个是不可更新的。
stevphen 2011-12-29
  • 打赏
  • 举报
回复
谢谢回复,请看一下我的代码:

CString sql;
CADODatabase dbDst;
sql.Format(_T("Provider=Microsoft.Jet.OLEDB.4.0;User ID=Admin; Jet OLEDB:DataBase Password=*****;Data Source=test.mdb; Mode=Share Deny Read|Share Deny Write"));
if (!dbDst.Open((LPCTSTR)sql))
{
MessageBox(_T("打开数据库失败。"), _T("提示"), MB_OK);
return 0;
}

CADORecordset rsDst(&dbDst);
sql.Format(_T("SELECT * FROM TableSample"));
if (!rsDst.Open((LPCTSTR)sql))
return 0;


rsDst.AddNew();
rsDst.Update();
ACMAIN_CHM 2011-12-29
  • 打赏
  • 举报
回复
recordset.Open Source, ActiveConnection, CursorType, LockType, Options

注意 CursorType, 有些是只读的。

adOpenDynamic 2 使用动态游标。其他用户所做的添加、更改或删除均可见,而且允许 Recordset 中的所有移动类型(如果提供者不支持书签,则书签除外)。
adOpenForwardOnly 0 默认值。使用仅向前游标。除了在记录中只能向前滚动外,与静态游标相同。当只需要在 Recordset 中进行一个传递时,用它可提高性能。
adOpenKeyset 1 使用键集游标。尽管从您的 Recordset 不能访问其他用户删除的记录,但除无法查看其他用户添加的记录外,它和动态游标相似。其他用户所做的数据更改依然可见。
adOpenStatic 3 使用静态游标。一组记录的静态副本,可用于查找数据或生成报告。其他用户所做的添加、更改或删除不可见。
adOpenUnspecified -1 不指定游标类型。
ACMAIN_CHM 2011-12-29
  • 打赏
  • 举报
回复
你的代码是什么? rs.open 时的代码是什么?

7,714

社区成员

发帖
与我相关
我的任务
社区描述
Microsoft Office Access是由微软发布的关系数据库管理系统。它结合了 MicrosoftJet Database Engine 和 图形用户界面两项特点。
社区管理员
  • Access
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧