Sql 使用双引号(";)中字符串的交叉表进行查询

Sql 使用双引号(";)中字符串的交叉表进行查询,sql,vba,ms-access,charts,Sql,Vba,Ms Access,Charts,我正在尝试使用查询使用VBA行源运行报表 由于双引号,我在替换VBA的内置access查询时遇到问题 我尝试用&CHR(34)替换双引号,但没有成功 TRANSFORM Count(History_query.WAS) AS CountOfWAS SELECT History_query.Datum FROM History_query WHERE (((History_query.Datum) Between [Forms]![fr_M-Shiftreport]![Text72] And [F

我正在尝试使用查询使用VBA行源运行报表

由于双引号,我在替换VBA的内置access查询时遇到问题

我尝试用&CHR(34)替换双引号,但没有成功

TRANSFORM Count(History_query.WAS) AS CountOfWAS
SELECT History_query.Datum
FROM History_query
WHERE (((History_query.Datum) Between [Forms]![fr_M-Shiftreport]![Text72] And [Forms]![fr_M-Shiftreport]![Text81]) AND ((History_query.WAS)=[Forms]![fr_M-Shiftreport]![Combo186]))
GROUP BY History_query.Datum
PIVOT History_query.Status In ("erledigt","offen","in Bearbeitung","abgearbeitet / beobachten");
上述查询在Access数据表视图中运行良好,并生成报表图表

我想在VBA中转换此查询。

尝试使用单引号:


我猜您遇到了一些问题,无法在vba中引用。您需要将双引号加倍以转义它们。如果你可以发布任何你得到的错误,这将是有益的。下面的命令将把查询结果放入记录集中

Sub run()
Dim strSQL As String
Dim db As Database: Set db = CurrentDb
Dim rs As Recordset

strSQL = "TRANSFORM Count(History_query.WAS) AS CountOfWAS " & _
         "SELECT History_query.Datum " & _
         "FROM History_query " & _
         "WHERE (((History_query.Datum) Between [Forms]![fr_M-Shiftreport]![Text72] And [Forms]![fr_M-Shiftreport]![Text81]) " & _
         "AND ((History_query.WAS)=[Forms]![fr_M-Shiftreport]![Combo186])) " & _
         "GROUP BY History_query.Datum " & _
         "PIVOT History_query.Status In (""erledigt"",""offen"",""in Bearbeitung"",""abgearbeitet / beobachten"");"

Set rs = db.OpenRecordset(strSQL)

'do vba stuff...

EXIT_PROC:
    Set rs = Nothing
    Set db = Nothing
End Sub

“使用VBA运行”是什么意思?是否尝试将查询结果打开到记录集中?是否尝试转义双引号
sql=“TRANSFORM[…]PIVOT History\u query.Status In”(“erledigt”、“offen”、“In bearbeitong”、“abgearbeitet/beobachten”);“
最简单的方法是@gustav建议的方法。单引号有效。
Sub run()
Dim strSQL As String
Dim db As Database: Set db = CurrentDb
Dim rs As Recordset

strSQL = "TRANSFORM Count(History_query.WAS) AS CountOfWAS " & _
         "SELECT History_query.Datum " & _
         "FROM History_query " & _
         "WHERE (((History_query.Datum) Between [Forms]![fr_M-Shiftreport]![Text72] And [Forms]![fr_M-Shiftreport]![Text81]) " & _
         "AND ((History_query.WAS)=[Forms]![fr_M-Shiftreport]![Combo186])) " & _
         "GROUP BY History_query.Datum " & _
         "PIVOT History_query.Status In (""erledigt"",""offen"",""in Bearbeitung"",""abgearbeitet / beobachten"");"

Set rs = db.OpenRecordset(strSQL)

'do vba stuff...

EXIT_PROC:
    Set rs = Nothing
    Set db = Nothing
End Sub