2016-05-02 83 views
0

通过CNTRY选择SQL语句分组。我试图用可变字符串替换CNTRY - strtable。到目前为止,我所做的一切都会导致语法错误。SQL语句语法 - 字符串与参数 - MS Access - VBA

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'));" 

enter image description here

为试图解决这个我自己,我已经得到了以下几点:

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

但是,在执行时,访问请求的是 'DTG' 参数或'美国'字符串。在设计视图中打开完整查询时,字符串('DTG'或'US')是无法识别的变量。我该如何解决这个问题?

+2

没关系,我拒绝去吃午饭,直到我找到答案......一直在努力。刚刚找到正确的语法字面上5分钟后花费时间发布此。叹息... 'strsql =“SELECT'VCAP0112 - '&'”&strtable&“'VCAP0112' –

+0

你应该删除问题或发表评论作为回答并接受它 –

+0

@GordonLinoff - 会做,thanxs。 –

回答

2

Strtable充当占位符,根据IF THEN语句,字符串'US'或'DTG'将被分配给它。正如我原来的1.,字符串 - strtable - 将作为SQL语句中需要参数的变量出现。

要解决这个问题,单引号封装围绕该变量的双引号会变成strtable成实际的占位符,分配给它2

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

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

字符串这...这就是我今天学到了。