簡體   English   中英

SQL VBA:選擇具有特定表名和字段名的所有表

[英]SQL VBA: Selecting all tables with specific table name and field name

我正在使用訪問和VBA。 就目前而言,我正在嘗試使用SQL語句創建查詢。 我有一堆桌子,它們都在末尾被命名為“ innen”,並且它們在開始時有所不同。 這些表中的每一個都包含列名“ OP”(還有其他字段名)。 現在,我的目標是選擇名稱包含“%innen”和列名稱“ OP”的所有表。 到目前為止,我已經嘗試過了:

Sub Aktuell()
Dim strSQL As String
Dim db As DAO.Database
Set db = CurrentDb
Dim qdf As QueryDef

    strSQL = "SELECT [*].OP FROM MSysObjects WHERE TABLE_NAME LIKE '%innen' ORDER BY MAX;"
    db.Execute strSQL

    Set qdf = CurrentDb.CreateQueryDef("NewQuery8", strSQL)
    DoCmd.OpenQuery qdf.Name

End Sub

我也在這里嘗試過這個:

strSQL = "SELECT * " & _
    "FROM INFORMATION_SCHEMA.TABLES " & _
    "WHERE COLUMN_NAME = 'OP_Datum';"

但是我不斷出錯。

有任何想法嗎? 它甚至可以通過vba與sql語句一起使用?

這是為您提供的VBA解決方案。

Option Compare Database

Function GetFieldList(TableName As String) As String()
  On Error GoTo Er
  Dim Flds() As String
  Dim fc As Long
  Dim I As Long

  'Initialize Dynamic Flds() Array
  Flds = Split("")
  fc = CurrentDb.TableDefs(TableName).Fields.Count - 1
  If fc >= 0 Then
    ReDim Preserve Flds(fc)
    For I = 0 To fc
      Flds(I) = CurrentDb.TableDefs(TableName).Fields(I).Name
    Next I
  End If
Done:

  GetFieldList = Flds
  Erase Flds
  Exit Function
Er:
  Resume Done

End Function

Sub flTest()
  Dim I As Long
  Dim Fields As Variant

  Fields = GetFieldList("Customers")
  If UBound(Fields) = -1 Then
    MsgBox "Table Not Found, or Table has no fields", vbCritical + vbOKOnly
    Exit Sub
  End If

  For I = LBound(Fields) To UBound(Fields)
    Debug.Print """" & Fields(I) & """"
  Next I


End Sub

我敢打賭,有一種方法可以使相同的事情只使用SQL。 雖然,Access是一種獨特的動物。 您可以使用SQL Server執行此操作。 我不確定100%Access是否可以處理它。 好吧,為什么不試試看自己呢。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM