将访问权限 SQL 转换为 VBA
Convert Access SQL To VBA
我需要将此访问 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;")
但我收到
错误
A RunSQL action requires an argument consisiting of an SQL statement
我做了一些测试。假设 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 " & _
我已经多次使用这个漂亮的工具并取得了巨大的成功。
正在创建表单
表单只需要两个文本框和一个命令按钮。 SQL 语句可能很长,因此您将文本框放在选项卡控件的不同页面上。
创建新表单(在设计视图中。)
添加选项卡控件。
在选项卡控件的第一页中,添加一个未绑定的文本框。
将其名称 属性 设置为 txtSql。
增加它的高度和宽度,这样您就可以同时看到很多长线。
在选项卡控件的第二页,再添加一个未绑定的文本框。
将其命名为 txtVBA,并增加其高度和宽度。
在选项卡控件上方,添加一个命令按钮。
将其命名为 cmdSql2Vba。
将其点击 属性 设置为 [事件过程]。
单击 属性.
旁边的构建按钮 (...)
当Access打开代码window时,设置代码如下:
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.)
我需要将此访问 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;")
但我收到
错误A RunSQL action requires an argument consisiting of an SQL statement
我做了一些测试。假设 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 " & _
我已经多次使用这个漂亮的工具并取得了巨大的成功。
正在创建表单
表单只需要两个文本框和一个命令按钮。 SQL 语句可能很长,因此您将文本框放在选项卡控件的不同页面上。
创建新表单(在设计视图中。)
添加选项卡控件。
在选项卡控件的第一页中,添加一个未绑定的文本框。
将其名称 属性 设置为 txtSql。
增加它的高度和宽度,这样您就可以同时看到很多长线。
在选项卡控件的第二页,再添加一个未绑定的文本框。
将其命名为 txtVBA,并增加其高度和宽度。
在选项卡控件上方,添加一个命令按钮。
将其命名为 cmdSql2Vba。
将其点击 属性 设置为 [事件过程]。
单击 属性.
旁边的构建按钮 (...)
当Access打开代码window时,设置代码如下:
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.)