处理“英寸”标记的SQL字符串

时间:2018-08-09 14:56:25

标签: sql string vba ms-access

Microsoft Access子窗体筛选器输出如下所示:

**([qryPOExamDetail subform].[Line Description]="1"" CONDUIT - EMT")**

该字段的实际值为 1“ CONDUIT-EMT 。我已将上述参数转换为 [Line Description]='1"" CONDUIT - EMT' ,但动态查询返回的记录为零

我已经构建了一条SQL语句来创建动态查询,以通过VBA doCmd.TransferText函数导出到以逗号分隔的文件。我过滤了其他字段(没有“英寸”标记),并且工作正常。我已经在互联网上搜索了答案,但找不到任何东西。

如何让SQL识别1"" CONDUIT - EMT = 1" CONDUIT - EMT

下面是用于创建动态查询的SQL字符串:

strSQL1 = "SELECT tblOpenCommittment.[Job Number], tblOpenCommittment.[Job Name], tblOpenCommittment.[Order Number], tblOpenCommittment.[Supplier Name]," _
& "tblOpenCommittment.[Order Date],tblOpenCommittment.[Cost Code], tblOpenCommittment.[Line Description], tblOpenCommittment.Qty, tblOpenCommittment.Tax, " _
& "tblOpenCommittment.Price, tblOpenCommittment.Unit, tblOpenCommittment.[Total Line Value],tblOpenCommittment.[Total Line Value]-tblOpenCommittment.[Line Total Amount invoiced]" _
& "AS [Open]FROM tblOpenCommittment WHERE (((tblOpenCommittment.[Job Name])=[Forms]![frmPrintByProject]![txtBoxJobName]) AND ((tblOpenCommittment.[Cost Code])" _
& "Like" & Chr(34) & Chr(42) & Chr(34) & Chr(32) & Chr(38) & Chr(32) & "[Forms]![frmPrintByProject]![txtBoxFrameValue]) AND " & strWashedstrFilter & " )"

最后一个参数 strWashedstrFilter 代表在我的原始文章开头列出的子表单过滤器的输出。如前所述,只要过滤的值不包含(“),它就可以工作。

我已经阅读本网站多年,并获得了出色的帮助。这是我第一次发布问题。预先感谢大家抽出宝贵时间发表评论。

2 个答案:

答案 0 :(得分:1)

作为一个例子,(由于我不太确定您的数据结构或列),您可以对MS Access使用类似的方法:

SELECT "My Quote goes > "" < right there"

因此,要比较这些值,将像这样:

SELECT ...
WHERE [MyColumn] = "1"" CONDUIT - EMT"

或者(如果愿意)

SELECT ...
WHERE [MyColumn] = '1" CONDUIT - EMT'

答案 1 :(得分:0)

您在构造中缺少一些空格,因此单词不会同时出现。并连接对表单控件的引用:

strSQL1 = "SELECT *, [Total Line Value]-[Line Total Amount invoiced] AS [Open] " & _
          "FROM tblOpenCommittment " & 
          "WHERE [Job Name]='" & [Forms]![frmPrintByProject]![txtBoxJobName] & _
          "' AND [Cost Code] LIKE '*" & [Forms]![frmPrintByProject]![txtBoxFrameValue] & _
          "' AND " & strWashedstrFilter

如果代码位于frmPrintByProject后面,则可以使用Me .:
    "WHERE [Job Name]='" & Me.txtBoxJobName & "