Public Function ChangTableValue(ChangTableName As String)
Dim con As Object
Dim rs As Object
Dim fldLoop As ADODB.Field
On Error GoTo ChangTableValue_Err
Set con = Application.CurrentProject.Connection
Set rs = CreateObject("ADODB.Recordset")
rs.Open "SELECT * FROM " & ChangTableName, con, 3, 3 '可以把[表1]换成你自已的表。
If (rs.EOF) Then
rs.Close
con.Close
MsgBox "所选表中记录数为0,没有记录可以更新!", 48, "ChangTableValue"
Else
Do While (Not (rs.EOF))
For Each fldLoop In rs.Fields
'下面的IF语句是用来排除你不想更新的字段,这里默认排除表中的ID字段和5字段,
'因为我的表中它们分别是"自动编号"和"OLE 对象",你可以改为其它字段名。
12 If fldLoop.name <> "ID" And fldLoop.name <> "OLE 对象" Then
fldLoop.Value = 0
rs.Update
End If
Next fldLoop
rs.MoveNext
Loop
rs.Close
con.Close
End If
ChangTableValue_Exit:
Exit Function
ChangTableValue_Err:
'ACCESS中只有两种字段类型不可更新为0,"自动编号"和"OLE 对象"这两种要排除在外,
'遇到此情况,下面会提醒把它在12句中排除。
If Err.Number = -2147352571 Then
MsgBox "字段" & fldLoop.name & "不能更改数值为0,因为它是不能输入0的数据类型。请在12句上更改。", 48, "ChangTableValue"
rs.Close
con.Close
Resume ChangTableValue_Exit
'提醒表不可以以独占方式打开
ElseIf Err.Number = -2147467259 Then
MsgBox "该表已被以独占方式打开,请关闭此表", 48, "ChangTableValue"
rs.Close
con.Close
Resume ChangTableValue_Exit
End If
End Function
'在窗体中调用
Private Sub 命令按钮_Click()
ChangTableValue ("表1")
End Sub