[英]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.