请教:请帮修改一下vb连接access数据库中删除的代码

我添加了一个DataGrid控件,用来显示数据库,并添加了四个Text1(0~3)控件数组,用来分别显示数据库中的值,为什么我编写的删除代码总是删除不了,请帮忙修改一下,... 我添加了一个DataGrid控件,用来显示数据库,并添加了四个Text1(0~3)控件数组,用来分别显示数据库中的值,为什么我编写的删除代码总是删除不了,请帮忙修改一下,谢谢!
SelectSQL(SQL, msg)函数那段代码我也不明白,能给解释一下吗?

Dim cn As New ADODB.Connection
Dim rs As New ADODB.Recordset
Dim msg As String
Dim Index As Integer

Private Sub CmdDelete_Click()
If rs.RecordCount > 0 Then
msg = MsgBox("删除该条记录吗?", vbYesNo)
If msg = vbYes Then
rs.Delete
Call LoadData
For Index = 0 To 3
Text1(Index).Text = ""
Text1(Index).Enabled = False
Next Index
If rs.RecordCount = 0 Then
For Index = 0 To 3
Command1(Index).Enabled = False
Next Index
End If
CmdAdd.Enabled = True: CmdModify.Enabled = False
CmdDelete.Enabled = True
CmdCancel.Enabled = True: CmdSave.Enabled = False
MsgBox ("成功删除数据!")
End If
Else
MsgBox ("没有可删除的数据")
End If
End Sub

Private Sub LoadData()
Set rs = Nothing
SQL = "select * from 材质数据库 order by 材质"
Set rs = SelectSQL(SQL, msg)
Set Me.DataGrid1.DataSource = rs
DataGrid1.Refresh

End Sub

Public Function SelectSQL(ByVal SQL As String, ByRef msg As String) As ADODB.Recordset
Dim Conn As ADODB.Connection
Dim rst As ADODB.Recordset
Dim sTokens() As String
On Error GoTo ErrorHandle
sTokens = Split(SQL)
If InStr("SELECT", UCase((sTokens(0)))) Then
If OpenConn(Conn) Then
Set rst = New ADODB.Recordset
rst.CursorLocation = adUseClient
rst.Open Trim$(SQL), Conn, adOpenDynamic, adLockBatchOptimistic
Set SelectSQL = rst
msg = "查询到" & rst.RecordCount & "条记录!"
End If
Else
msg = "SQL语句有误:" & SQL
End If
Finally_Exit:
Set rst = Nothing
Set Conn = Nothing
Exit Function
ErrorHandle:
msgstring = "查询错误:" & Err.Description
Resume Finally_Exit
End Function
非常感谢楼下几位,但是我尝试做了一下还是不行啊,按下确定键后数据又恢复以前的了,并不能删除。
是不是Call LoadData 所致啊??
展开
 我来答
wannalcxl
2010-06-23 · TA获得超过259个赞
知道小有建树答主
回答量:640
采纳率:0%
帮助的人:620万
展开全部
你 SelectSQL函数只能查询记录,而不能删除记录。。
请参考下面的函数。

Public Function ExecuteSQL(ByVal SQL As String, MsgString As String) As ADODB.Recordset

Dim rst As ADODB.Recordset
Dim sTokens() As String
Dim sF As String
On Error GoTo ExecuteSQL_Error

sTokens = Split(SQL)
sF = LCase(sTokens(0))
Select Case sF
Case "insert", "delete", "update"
With Cnc
.ActiveConnection = Cn
.CommandType = adCmdText
.CommandText = SQL
.Execute
End With
If sF = "insert" Then
MsgString = "记录插入成功!"
ElseIf sF = "delete" Then
MsgString = "记录删除成功!"
ElseIf sF = "update" Then
MsgString = "记录更新成功!"
End If
Case "select"
Set rst = New ADODB.Recordset
rst.Open Trim(SQL), Cn, adOpenStatic, adLockBatchOptimistic
Set ExecuteSQL = rst
MsgString = "查询到" & rst.RecordCount & " 条记录 "
End Select

ExecuteSQL_Exit:
Set rst = Nothing
Exit Function

ExecuteSQL_Error:
MsgString = "查询错误: " & vbCrLf & Err.Number & vbCrLf & Err.Description
Message MsgString
Resume ExecuteSQL_Exit
End Function
tianqing20wen

2010-06-23 · TA获得超过2.4万个赞
知道大有可为答主
回答量:8226
采纳率:88%
帮助的人:5065万
展开全部
rs.Delete
rs.update
删除完更新

多加一句rs.Requery
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
h5613804
2010-07-03
知道答主
回答量:13
采纳率:0%
帮助的人:4.8万
展开全部
很简单~
dim rs as integer
rs=msgbox("确定要删除数据吗?",1,"确定")
if rs=1 then
data1.recordest.delete
data1.refresh
end if
end sub

我也是新手。。这个是Access连接数据库的删除代码~~~
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式