要实现以下功能:已有一个数据录入窗体(有很多TEXT,COMBOBOX等),窗体一加载时,有的TEXT中已从数据库中加载了数据,有的要用户手工添加数据,然后按一个“保存按钮”,这条记录信息就添加到数据库中相应的数据表中,本人写了以下代码,但运行时出现一些错误,请各位帮忙看看!
Dim strSqlfitjc As String
strSqlfitjc = "select * from 配件进出表"
Set RSfitjc = New ADODB.Recordset
RSfitjc.Open strSqlfitjc, cn, adOpenKeyset, adLockOptimistic
With RSfitjc
'If .BOF Then
'.MoveFirst
'Else
'.MoveNext
'End If
.Fields("配件编号") = frmfitjc.Text1(0).Text
.Fields("名称") = IIf(IsNull(Text1(1).Text), "", Text1(1).Text)
.Fields("品牌") = IIf(IsNull(Text1(2).Text), "", Text1(2).Text)
.Fields("规格") = IIf(IsNull(Text1(3).Text), "", Text1(3).Text)
.Fields("型号") = IIf(IsNull(Text1(4).Text), "", Text1(4).Text)
.Fields("移交人") = Text1(5).Text
.Fields("领用人") = Text1(6).Text
.Fields("移交日期") = DTPicker1.Value
.Fields("进出") = Combo1.Text
.Fields("备注") = Text1(7).Text
.Update
.Close
End With
如果数据表开始是空的,运行时提示错误:实时错误:‘3021’BOF 或 EOF中有一个是“真”,或者当前的记录已被删除,但应用程序要求操作的是当前的记录
但是一旦我直接手工添加数据到数据表中后(也就是数据表中已有记录),运行时就不会提示错误,只是通过我上面代码添加进去的记录,就覆盖了数据表中原有记录中的第一条(我打开数据表查看了的)记录,每次调试后,数据表中记录不会增加,只是不断地替代数据表中第一条记录。请问各位到底哪里发生错误了?
---------------------------------------------------------------
1。 在With RSfitjc 后加
.Addnew '插入新记录
2。提取时若有记录,记录集默认在第一条记录
你的语句执行等于更新了第一条记录
---------------------------------------------------------------
1>对于“实时错误”可能是因为“strSqlfitjc = "select * from 配件进出表"”的错误,建议屏蔽select功能。
2>在With RSfitjc 后加 .Addnew '插入新记录 ,可解决“数据表中记录不会增加”的错误。
---------------------------------------------------------------
在 .Fields("配件编号") = frmfitjc.Text1(0).Text
之前添加:.AddNew