用VB+ACCESS编了个小程序 用来添加、删除记录
有几处错误,不知道怎么解决,请大虾们指点
Option Explicit
Dim rsTuhao As ADODB.Recordset
Dim rsQingdan As New ADODB.Recordset
Dim rsKehu As ADODB.Recordset
Dim Kehu As String
Dim Tuhao As StringPrivate Sub dgrTuhao_DblClick()
Dim ActiveRow     As String
Dim SqlString As String
On Error GoTo ErrHandle
ActiveRow = dgrTuhao.Columns(0).Value
chaQingdan.Label2.Caption = dgrTuhao.Columns(1).Value
chaQingdan.Label4.Caption = ActiveRow
chaQingdan.dtcTuhao.Text = ActiveRow
SqlString = "SELECT * FROM Qingdan WHERE " & " (((Qingdan.产品图号)= '" & ActiveRow & "'))"
chaQingdan.adoQingdan.RecordSource = SqlString
chaQingdan.adoQingdan.Refresh
chaQingdan.Show
Exit Sub
ErrHandle:
        MsgBox "错误提示: " & Err.Description
End SubPrivate Sub Form_Load()
Set rsTuhao = adoTuhao.Recordset
Set rsTuhao1 = adoTuhao1.Recordset
Set rsQingdan = adoQingdan.Recordset
Set rsKehu = adoKehu.Recordset
'Set rsData = adoData.Recordset
rsTuhao.MoveLast
rsKehu.MoveLast
rsQingdan.MoveLast
QingdanID = rsQingdan!序号
Set rsQingdan = adoQingdan.Recordset
End SubPrivate Sub Form_Unload(Cancel As Integer)
rsTuhao.Close
Set rsTuhao = Nothing
rsQingdan.Close
Set rsQingdan = Nothing
End Sub
Private Sub qingdanAdd_Click()
'添加记录 序号用的自动编号
Dim NewID As Integer
rsQingdan.AddNew
End SubPrivate Sub qingdanBack_Click()
frmMain.Show
chaQingdan.Hide
End SubPrivate Sub qingdanCancel_Click()
'取消修改
rsQingdan.CancelUpdate
End SubPrivate Sub qingdanDelete_Click()
'删除记录
Dim ActiveRow     As String
Dim Response As Integer
Response = MsgBox("是否删除记录?", vbQuestion + vbOKCancel, "删除记录")
If Response Then
'ActiveRow = dgrQingdan.Columns(9).Value
'rsQingdan.Find ("产品图号='" & ActiveRow & "'")
rsTuhao.Find ("产品图号='" & rsQingdan!产品图号 & "'")
rsKehu.Find ("客户名称='" & rsQingdan!客户名称 & "'")
'将Tuhao表中的相应记录删除
'Text1.Text = ActiveRow
If Not rsTuhao.EOF Then
rsTuhao.Delete
End If
If Not rsKehu.EOF Then
rsKehu.Delete
End If
rsQingdan.Delete
dgrQingdan.Refresh
End If
End SubPrivate Sub dgrQingdan_Error(ByVal DataError As Integer, Response As Integer)
'新记录图号必须输入
Response = 0
MsgBox "请输入产品图号", , "输入出错!"
dgrQingdan.SetFocus
End Sub
Private Sub dgrQingdan_AfterUpdate()
'将新记录添加到清单列表中
Dim a As Integer
Dim SqlTuhao As String
Dim SqlKehu As String
Dim rs1 As New ADODB.Recordset
Dim rs2 As New ADODB.Recordset
rs1.Open "select * from Tuhao WHERE 产品编号= '" & rsQingdan!产品图号 & "'", cnn, adOpenKeyset, adLockOptimistic
rs2.Open "select * from Kehu WHERE 客户名称= '" & rsQingdan!客户名称 & "'", cnn, adOpenKeyset, adLockOptimistic
If rs1.RecordCount = 0 Then
rsTuhao.AddNew
rsTuhao!产品编号 = rsQingdan!产品编号
rsTuhao!产品图号 = rsQingdan!产品图号
rsTuhao!客户名称 = rsQingdan!客户名称
rsTuhao!客户编号 = rsQingdan!客户编号
If rs2.RecordCount = 0 Then
rsKehu.AddNew
rsKehu!客户名称 = rsQingdan!客户名称
rsKehu!客户编号 = rsQingdan!客户编号
End If
End IfrsQingdan.MoveLast
QingdanID = rsQingdan!序号End Sub以上是添加 删除部分的代码了 
模块中定义了cnn
Qingdan表中序号用的自动编号
1、点击添加的时候 有时候会出现(不是每次都有) 实时错误 2147467259 (80004005)
2、点击‘删除’ 会出现 实时错误 2147217885(80040e23) 行句柄引用了一个已被删除的行或被标识为删除的行
3、点击‘取消修改’ 会出现 实时错误 2147217887(80040e21) 多步操作产生错误。请检查每一步的状态值初来乍到,请各位大侠指点迷经啊
先谢过了

解决方案 »

  1.   

    '增加记录用:
    conn.execute "insert into 表名(字符字段,数值字段) values('"& 字符型变量 &"',"& 数值型变量 &")"
    '修改记录用:
    conn.execute " update 表名 set 字段=... where 字段=..."
    '删除记录用:
    conn.execute "delete from 表名 where 字段=..."
      

  2.   

    恩 有的 有三个表  Kehu Tuhao Qingdan
    Qingdan是详细清单表
    Tuhao 是清单里面的一列 在Tuhao表里面是唯一的
    Kehu 也是清单表里面的一列 Kehu表自身也是唯一的
    只是Tuhao和Kehu 在Qingdan中会一对多而已