SQL语句语法-字符串与参数-MS Access-VBA

SQL语句语法-字符串与参数-MS Access-VBA,sql,vba,ms-access,syntax,Sql,Vba,Ms Access,Syntax,选择SQL语句按CNTRY分组。我试图用一个变量string-strtable替换CNTRY。到目前为止,我整个上午所做的工作都会导致语法错误 If Left(lngstr1, 2) = 19 Then strtable = "DTG" '<---this would replace CNTRY Else strtable = "US" '<---this would replace CNTRY End If strsql = "SELECT 'VCAP0112 -

选择SQL语句按CNTRY分组。我试图用一个变量string-strtable替换CNTRY。到目前为止,我整个上午所做的工作都会导致语法错误

If Left(lngstr1, 2) = 19 Then
    strtable = "DTG" '<---this would replace CNTRY
Else
    strtable = "US" '<---this would replace CNTRY
End If

strsql = "SELECT 'VCAP0112 - CNTRY' AS VCAP0112, [VCAP0112 - " & strtable & "].[RECV IND] AS OMU, [VCAP0112 - " & strtable & "].[LEGACY ACCT], " _
& "Sum([VCAP0112 - " & strtable & "].[1 to 30 Day]) AS [0 - 30], Sum([VCAP0112 - " & strtable & "].[RECV BALANCE]) AS TOTAL " _
& "FROM [VCAP0112 - " & strtable & "] INNER JOIN Urcrosswalk ON [VCAP0112 - " & strtable & "].[LEGACY ACCT] = Urcrosswalk.[Legacy GL]" _
& "Group BY 'VCAP0112 - CNTRY' , [VCAP0112 - " & strtable & "].[RECV IND], [VCAP0112 - " & strtable & "].[LEGACY ACCT] " _
& "HAVING ((([VCAP0112 - " & strtable & "].[RECV IND])='O' Or ([VCAP0112 - " & strtable & "].[RECV IND])='M' Or ([VCAP0112 - " & strtable & "].[RECV IND])='U'));"
但是,在执行时,Access会要求提供“DTG”或“US”字符串的参数。在设计视图中打开完整查询时,字符串('DTG'或'US')是无法识别的变量。如何解决此问题?

Strtable用作占位符,根据IF-THEN语句为其分配字符串“US”或“DTG”。正如我最初使用的1一样,字符串strtable将作为一个变量出现,需要在SQL语句中使用一个参数

要解决这个问题,单引号封装变量周围的双引号将使strtable成为分配给它的字符串的实际占位符

 1.  Parameter: strsql = "SELECT 'VCAP0112 - '& " & strtable & " AS VCAP0112,

 2.  String: strsql = "SELECT 'VCAP0112 - '& '" & strtable & "' AS VCAP0112,
这…这就是我今天学到的。

Strtable用作占位符,根据IF-THEN语句为其分配字符串“US”或“DTG”。正如我最初使用的1一样,字符串strtable将作为一个变量出现,需要在SQL语句中使用一个参数

要解决这个问题,单引号封装变量周围的双引号将使strtable成为分配给它的字符串的实际占位符

 1.  Parameter: strsql = "SELECT 'VCAP0112 - '& " & strtable & " AS VCAP0112,

 2.  String: strsql = "SELECT 'VCAP0112 - '& '" & strtable & "' AS VCAP0112,

这……这就是我今天学到的。

没关系,我拒绝去吃午饭,直到找到答案……继续努力。在花时间发布这篇文章5分钟后,我发现了正确的语法。叹息<代码>strsql=“选择‘VCAP0112-’&’&strtable&“'作为VCAP0112。你要么删除这个问题,要么发表你的评论作为答案并接受它。@GordonLinoff-会的,thanxs。没关系,在找到答案之前我拒绝去吃午饭……继续努力。在花时间发布这篇文章5分钟后,我发现了正确的语法。叹息
strsql=“选择“VCAP0112-”&“&strtable&”作为VCAP0112
。您应该删除该问题或将您的评论作为答案发布并接受它。@GordonLinoff-可以,thanxs。