用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) 多步操作产生错误。请检查每一步的状态值初来乍到,请各位大侠指点迷经啊
先谢过了
有几处错误,不知道怎么解决,请大虾们指点
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) 多步操作产生错误。请检查每一步的状态值初来乍到,请各位大侠指点迷经啊
先谢过了
conn.execute "insert into 表名(字符字段,数值字段) values('"& 字符型变量 &"',"& 数值型变量 &")"
'修改记录用:
conn.execute " update 表名 set 字段=... where 字段=..."
'删除记录用:
conn.execute "delete from 表名 where 字段=..."
Qingdan是详细清单表
Tuhao 是清单里面的一列 在Tuhao表里面是唯一的
Kehu 也是清单表里面的一列 Kehu表自身也是唯一的
只是Tuhao和Kehu 在Qingdan中会一对多而已