我在查询部分保存了一个查询。我正在从VBA运行查询。是否可以将此查询的结果保存为字符串?
答案 0 :(得分:4)
ADO Recordset有GetString
方法,可能对您有用。
我有一个名为 qryListTables 的查询,如下所示:
SELECT m.Name AS tbl_name
FROM MSysObjects AS m
WHERE
(((m.Name) Not Like "msys%"
And (m.Name) Not Like "~%")
AND ((m.Type)=1))
ORDER BY m.Name;
请注意,查询使用%
而不是*
作为通配符。选择的原因是ADO需要ANSI通配符(%
和_
而不是*
和?
)。
我可以使用以下函数吐出一个字符串,该字符串包含我的数据库中常规表的引用名称,用分号分隔,通过这样调用它:
? DemoGetString("qryListTables", True)
Public Function DemoGetString(ByVal pQueryName As String, _
Optional ByVal AddQuotes As Boolean = False) As Variant
'* early binding requires a reference to Microsoft ActiveX
'* Data Objects Library
'Dim rs As ADODB.Recordset
'Set rs = New ADODB.Recordset
'* use late binding; no referenced needed
Dim rs As Object
Set rs = CreateObject("ADODB.Recordset")
Dim varOut As Variant
rs.Open pQueryName, CurrentProject.Connection
If AddQuotes Then
varOut = """" & rs.GetString(2, , , """;""") '2 = adClipString
' strip off last quote
If Len(varOut & vbNullString) > 0 Then
varOut = Left(varOut, Len(varOut) - 1)
End If
Else
varOut = rs.GetString(2, , , ";") '2 = adClipString
End If
rs.Close
Set rs = Nothing
DemoGetString = varOut
End Function
答案 1 :(得分:3)
好的..在黑暗中完全拍摄......
您正在运行的查询实际上是一个查询...将其视为其OWN表...它可以像任何其他表一样被引用,并且可以被查询。
如果您尝试根据单个条件返回单个字符串项目,最好的选择是Dlookup:
Lookup = Nz(DLookup(string Field, string Table, string Criteria), "")
如果您正在寻找一组记录:
dim tsSQL as string
stSQL = "SELECT * FROM table WHERE field=criteria"
dim toRecordset as new ADODB.Recordset
toRecordset.open stSQL, CurrentProject.AccessConnection, int Keyset, int Lock
然后您可以通过以下方式直接访问字段:
If toRecordset.RecordCount > 0 then
String = toRecordset!FieldName
End If
没有更多信息......关于它...... 它也适用于另一个方向..
你可以这样做:
toRecordset.AddNew
toRecordset!Field = Value
toRecordset.Update
我希望在那里找到答案。
要获取整个查询,您可以将select语句从示例1更改为“SELECT * FROM query name”,这应该将整个内容拉进去。