【问题标题】:Access vba how to run code to whole table访问vba如何将代码运行到整个表
【发布时间】:2020-05-15 12:29:13
【问题描述】:

我有一个名为 schedules 的表,我应该根据另一个字段的值更改某些字段的值
我设法在表单上运行代码(逐条记录),但现在我喜欢在表单之外运行它
因为大量导入数据库 - 有可能吗?

这是我的代码的一部分:

If Not IsNumeric(DAY_0_DEST_0_NAME) Then  
    DAY_0_TYPE_0_OSP = 1  
Else: DAY_0_TYPE_0_OSP = 3  
End If    
If Nz(DAY_0_DEST_0_NAME) = "" Then
    DAY_0_TYPE_0_OSP = 0
End If

If Not IsNumeric(DAY_0_DEST_1_NAME) Then
    DAY_0_TYPE_1_OSP = 1
Else: DAY_0_TYPE_1_OSP = 3
End If
If Nz(DAY_0_DEST_1_NAME) = "" Then
    DAY_0_TYPE_1_OSP = 0
End If

【问题讨论】:

    标签: vba ms-access


    【解决方案1】:

    可能最简单的方法是从 VBA 过程运行一些更新 SQL 语句。而且因为您要更改两对字段,所以可以在一个小循环中执行此操作:

    Sub sUpdateData()
        Dim db As DAO.Database
        Dim strSQL As String
        Dim lngLoop1 As Long
        Set db = DBEngine(0)(0)
        For lngLoop1 = 0 To 1
            db.Execute "UPDATE Table1 SET DAY_0_TYPE_" & lngLoop1 & "_OSP=3 WHERE IsNumeric(DAY_0_DEST_" & lngLoop1 & "_NAME)=True;"
            db.Execute "UPDATE Table1 SET DAY_0_TYPE_" & lngLoop1 & "_OSP=1 WHERE IsNumeric(DAY_0_DEST_" & lngLoop1 & "_NAME)=False;"
            db.Execute "UPDATE Table1 SET DAY_0_TYPE_" & lngLoop1 & "_OSP=0 WHERE DAY_0_DEST_" & lngLoop1 & "_NAME IS NULL;"
        Next lngLoop1
        Set db = Nothing
    End Sub
    

    问候,

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-07-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-01-27
      • 2018-11-17
      相关资源
      最近更新 更多