访问循环直通列以更新记录

时间:2013-09-03 15:11:55

标签: sql ms-access

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

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

表中有大约6mil的记录。

1 个答案:

答案 0 :(得分: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