Office中国论坛/Access中国论坛

标题: 赋值 [打印本页]

作者: happyvicky    时间: 2002-10-24 23:39
标题: 赋值
怎样把“0”赋给所有字段里(字段很多。。。)“is null”的值呢?
作者: zhengjialon    时间: 2002-10-24 23:45
做一个更新查询一次性更新!
作者: happyvicky    时间: 2002-10-25 06:16
更新查询不是要一个字段一个字段设定的吗?我是说很多字段一次性地查询,应该怎么做呢?
作者: zhengjialon    时间: 2002-10-25 16:48
你是要更改表的结构呢?还是要单纯的改表里的值?
作者: zhengjialon    时间: 2002-10-25 22:14
如果是单纯的改表里的值,请参考下面的函数:

'******************************************************************************
'*   项目名称:   更改表中字段值                                             
'*   过程函数名: 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





欢迎光临 Office中国论坛/Access中国论坛 (http://www.office-cn.net/) Powered by Discuz! X3.3