将Access SQL转换为VBA

时间:2017-09-27 18:58:34

标签: vba ms-access access-vba ms-access-2013

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

$DESC ='<p>erster Absatz</p>
 <p>zweiter Absatz</p>';

$DESC = preg_replace('#\</p\>[^\<]*\<p[^\>]*\>(.*?)\</p\>#i', '</p>', $DESC);
echo $DESC; // <p>erster Absatz</p>

我试过VBA

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

但我收到错误

  

RunSQL操作需要一个包含SQL语句的参数

2 个答案:

答案 0 :(得分:1)

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

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

如果userID是文本类型:

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

而不是Chr(34):

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

答案 1 :(得分: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 View中打开您的查询,并将SQL语句复制到剪贴板(Ctrl + C.) 粘贴到第一个文本框(Ctrl + V。)
单击按钮 粘贴到VBA过程中的新行(Ctrl + V。)

enter image description here

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