-1

我有一个包含大约 20 列的 Access 表,每列都有一个唯一的名称,但我要更新的所有列都以 TT 开头。这些列中只有 1 个单词“已应用”,但并非所有记录都已填充。我想对此数据运行一些摘要报告,但想将“应用”一词更改为数字“1”。我的问题是列名发生变化,可以随时添加或删除新列,所以我不想在 sql 语句中对列名进行硬编码。

循环遍历所有列并更新每列中的记录而不用静态名称定义每列的最佳方法是什么?我需要将原始记录保留为“已应用”,但也可以根据需要在其位置使用数字 1。

表中有大约 600 万条记录。

4

1 回答 1

1

您不能更新字段或(列),您只能更新记录(或行)。但是,您可以确定哪些字段符合您的描述。我不太明白这个问题,但也许您可以将字段名称添加到数组中,然后将数组剥离并仅更新以“TT”开头的字段。查找字段名称的代码如下:

Function TableInfo(strTableName As String)
On Error GoTo TableInfoErr
   ' Purpose:   Display the field names, types, sizes and descriptions for a table.
   ' Argument:  Name of a table in the current database.
   Dim db As DAO.Database
   Dim tdf As DAO.TableDef
   Dim fld As DAO.Field
   Dim StrSQL As String

   Set db = CurrentDb()
   Set tdf = db.TableDefs(strTableName)

   For Each fld In tdf.Fields
      If Left(fld.name, 2) = "TT" then
         'Your field name starts with TT.  Do some processing...
         StrSQL = "UPDATE " & strTableName & " SET " & fld.Name & " = 1 WHERE " & fld.Name & " = 'Applied'"
         DoCmd.Execute StrSQL
      End If   
   Next


TableInfoExit:
   Set db = Nothing
   Exit Function

TableInfoErr:
   Select Case Err
   Case 3265&  'Table name invalid
      MsgBox strTableName & " table doesn't exist"
   Case Else
      Debug.Print "TableInfo() Error " & Err & ": " & Error
   End Select
   Resume TableInfoExit
End Function
于 2013-09-03T17:21:23.820 回答