我正在使用访问和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语句吗?
答案 0 :(得分:0)
这是适合您的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可以处理它。那么,为什么不试试看看自己。