|
如果是单纯的改表里的值,请参考下面的函数:
'******************************************************************************
'* 项目名称: 更改表中字段值
'* 过程函数名: ChangTableValue 类型:Function
'*
'* 版权所有: Access中国首页(http://www.office-cn.net)
'* 作者: zhengjialon(57162399@163.com)
'*
'* 参数:ChangTableName(String) 用于被更改表的名称
'* 返回:本函数不返回值
'*
'* 完成时间: 2002年10月25日
'* 修改时间: 暂无
'*
'* 说明:1.本函数是用ADO,因此必须用ACCESS2000或以上版本。
'* 1.本函数会一次性更改你表里的所有记录的所有字段值,
'* ("自动编号"和"OLE 对象"两种数据类型除外)请谨慎使用。
'* 2.ACCESS2000+WIN2000SERVER和ACCESS2000+WIN98已通过。
'* 3.如果发现错误或有更好的建议和意见请发E-mail给我。
'******************************************************************************
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
|
|