ms-access将查询结果保存在字符串中

时间:2009-09-02 19:13:43

标签: sql ms-access vba

我在查询部分保存了一个查询。我正在从VBA运行查询。是否可以将此查询的结果保存为字符串?

2 个答案:

答案 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”,这应该将整个内容拉进去。