将 Access SQL 转换为 VBA

问题描述 投票:0回答:3

我需要将此 Access SQL 查询转换为 VBA 查询 ->

SELECT informationTable.userID, 
ConcatRelated('itemSold','[informationTable]',"userID='" & [userID] & "'") AS NameOfItemSold
FROM informationTable
GROUP BY informationTable.userID;

我尝试过VBA

DoCmd.RunSQL ("SELECT informationTable.userID,
 ConcatRelated('itemsold','[informationTable]','userID= ' & Chr(34)  & [userID] & Chr(34) & ') AS NameOfItemSold 
Into CRInformationTable
FROM informationTable 
GROUP BY informationTable.userID;")

但我收到错误

RunSQL 操作需要一个由 SQL 语句组成的参数

ms-access vba ms-access-2013
3个回答
1
投票

我做了一些测试。假设 userID 是数字类型字段,看看这是否适合您:

DoCmd.RunSQL ("SELECT DISTINCT informationTable.userID, " & _
    "ConcatRelated('itemsold','[informationTable]','userID=' & [userID]) AS NameOfItemSold " & _
    "INTO CRInformationTable FROM informationTable;")

如果用户ID是文本类型:

"ConcatRelated('itemsold','[informationTable]','userID=" & Chr(34) & "' & [userID] & '" & Chr(34) & "') AS NameOfItemSold " & _

代替 Chr(34):

"ConcatRelated('itemsold','[informationTable]','userID=""' & [userID] & '""') AS NameOfItemSold " & _

1
投票

我已经多次使用这个漂亮的工具并取得了巨大的成功。

创建表格

该表单只需要两个文本框和一个命令按钮。 SQL 语句可能很长,因此您将文本框放在选项卡控件的不同页面上。

创建一个新表单(在设计视图中。)
添加选项卡控件。
在选项卡控件的第一页中,添加一个未绑定的文本框。 将其 Name 属性设置为 txtSql。
增加其高度和宽度,以便您可以一次看到许多长线。
在选项卡控件的第二页中,添加另一个未绑定的文本框。
将其命名为txtVBA,并增加其高度和宽度。
在选项卡控件上方,添加一个命令按钮。 将其命名为 cmdSql2Vba。
将其 On Click 属性设置为 [Event procedure]。
单击此属性旁边的“构建”按钮 (...)。
当 Access 打开代码窗口时,按如下所示设置代码:

    Private Sub cmdSql2Vba_Click()
        Dim strSql As String
        'Purpose:   Convert a SQL statement into a string to paste into VBA code.
        Const strcLineEnd = " "" & vbCrLf & _" & vbCrLf & """"

        If IsNull(Me.txtSQL) Then
            Beep
        Else
            strSql = Me.txtSQL
            strSql = Replace(strSql, """", """""")  'Double up any quotes.
            strSql = Replace(strSql, vbCrLf, strcLineEnd)
            strSql = "strSql = """ & strSql & """"
            Me.txtVBA = strSql
            Me.txtVBA.SetFocus
            RunCommand acCmdCopy
        End If
    End Sub

使用表格

在 SQL 视图中打开查询,然后将 SQL 语句复制到剪贴板 (Ctrl+C)。
粘贴到第一个文本框(Ctrl+V。)
单击按钮。
粘贴到 VBA 程序中的新行中 (Ctrl+V。)

http://allenbrowne.com/ser-71.html


0
投票

我尝试了这种形式,但错误表明语句 (strSql = Me.txtSQL) 导致了以下消息:

错误438 对象不支持此属性或消息。

我当然想知道这个问题的答案,因为我对这个工具有很多用处 - 如果它有效的话。

最新问题
© www.soinside.com 2019 - 2024. All rights reserved.