Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/rust/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将SQL查询转换为VBA_Sql_Vba_Excel - Fatal编程技术网

将SQL查询转换为VBA

将SQL查询转换为VBA,sql,vba,excel,Sql,Vba,Excel,我已经在Oracle中成功运行了SQL查询,代码是- Select Sam.SAM_ID, sum( case when Aud.AUDIT_COMPLETION between (next_day(trunc(sysdate, 'iw'), 'Friday') - 14) and (next_day(trunc(sysdate, 'iw'), 'Friday') - 7) then 1 else 0 end ) as "Major Defects - 1 week", sum( case

我已经在Oracle中成功运行了SQL查询,代码是-

Select Sam.SAM_ID, sum( case when Aud.AUDIT_COMPLETION between (next_day(trunc(sysdate, 'iw'), 'Friday') -  14) and 
(next_day(trunc(sysdate, 'iw'), 'Friday') - 7) then 1 else 0 end ) as "Major Defects - 1 week",
 sum( case when Aud.AUDIT_COMPLETION between (next_day(trunc(sysdate, 'iw'), 'Friday') -  28) and (next_day(trunc(sysdate, 'iw'), 'Friday') - 7) then 1 else 0 end ) as "Major Defect - 4 week", count(Aud.AUDIT_COMPLETION)
From CMS.CMS_SAM_ALL_DATA Sam left join CMS.WATSON_AUDIT_INSPECTION_DT1_VW Aud ON Sam.SAM_ID = Aud.SAM_ID
Where Aud.DEFECT_SEVERITY = 'Major' AND 
Aud.AUD_RESULT = 'Defect' And 
NOT (Aud.AUDIT_OUTCOME = 'SPFR Withdrawn' and 
Aud.AUDIT_OUTCOME = 'Defect/ Observation Cancelled' and 
Aud.AUDIT_OUTCOME = 'Rejected by MIMA' and 
Aud.AUD_RESULT = 'Fixed' and 
Aud.AUDIT_OUTCOME = 'SPFR response accepted') and 
Aud.AUDIT_COMPLETION IS NOT NULL
Group by Sam.SAM_ID; 
现在我尝试在宏(VBA)中运行上述代码,但无法成功运行宏,宏代码-

StrSQL = StrSQL & "Select Sam.SAM_ID,"
 StrSQL = StrSQL & "sum(case when Aud.AUDIT_COMPLETION between (next_day(trunc(sysdate, 'iw'), 'Friday') - 14) and (next_day(trunc(sysdate, 'iw'), 'Friday') - 7) then 1 else 0 end )as ""Major Defects - 1 week"","
    StrSQL = StrSQL & "sum(case when Aud.AUDIT_COMPLETION between (next_day(trunc(sysdate, 'iw'), 'Friday') - 28) and (next_day(trunc(sysdate, 'iw'), 'Friday') - 7) then 1 else 0 end )as ""Major Defect - 4 week"","
    StrSQL = StrSQL & "count(Aud.AUDIT_COMPLETION)as ""Total Open Defects""
    StrSQL = StrSQL & "From CMS.CMS_SAM_ALL_DATA Sam left join CMS.WATSON_AUDIT_INSPECTION_DT1_VW Aud ON Sam.SAM_ID = Aud.SAM_ID"
    StrSQL = StrSQL & "Where Aud.DEFECT_SEVERITY = 'Major' AND Aud.AUD_RESULT = 'Defect' And NOT (Aud.AUDIT_OUTCOME = 'SPFR Withdrawn' and Aud.AUDIT_OUTCOME = 'Defect/ Observation Cancelled' and Aud.AUDIT_OUTCOME = 'Rejected by MIMA' and Aud.AUD_RESULT = 'Fixed' and Aud.AUDIT_OUTCOME = 'SPFR response accepted') and Aud.AUDIT_COMPLETION IS NOT NULL, Aud.AUDIT_COMPLETION IS NOT NULL, "
    StrSQL = StrSQL & "Group by Sam.SAM_ID;"
当我运行上面的代码时,我得到一个错误-

未在预期位置找到FROM关键字

使用换行符(_)并将引号加倍以转义:

strSQL = "select a, b as ""My Field"" from " & _
          "tableZ where a = 'blah' and " & _
          "b ='blah' "
使用换行符(_)并将引号加倍以转义:

strSQL = "select a, b as ""My Field"" from " & _
          "tableZ where a = 'blah' and " & _
          "b ='blah' "

您没有CMS.CMS\u SAM\u所有数据SAM留下的
count(Aud.AUDIT\u COMPLETION)之间的空间

但是采纳蒂姆·威利亚姆的建议,把它分成新的系列。您也可以这样做:

Dim strSQL As String

strSQL = strSQL & "SELECT "
strSQL = strSQL & "1 "
strSQL = strSQL & "FROM dual "

您没有CMS.CMS\u SAM\u所有数据SAM留下的
count(Aud.AUDIT\u COMPLETION)之间的空间

但是采纳蒂姆·威利亚姆的建议,把它分成新的系列。您也可以这样做:

Dim strSQL As String

strSQL = strSQL & "SELECT "
strSQL = strSQL & "1 "
strSQL = strSQL & "FROM dual "


除了生成包含SQL的字符串之外,不需要任何翻译。不清楚您的代码示例显示了什么。“无法成功运行宏”并不是对运行VBA时发生的情况的真正有用的描述。您有错误吗?我如何用VBABE编写相同的整个SQL查询,并将其括在引号中。或者按原样将其粘贴到工作表单元格中,并让代码从此处读取它。我现在更新了有错误的问题。请参阅我发布的链接,了解如何格式化字符串以使其更具可读性。除了生成包含SQL的字符串外,无需翻译。不清楚您的代码示例显示了什么。“无法成功运行宏”并不是对运行VBA时发生的情况的真正有用的描述。您有错误吗?我如何用VBABE编写相同的整个SQL查询,并将其括在引号中。或者按原样将其粘贴到工作表单元格中,并让代码从此处读取它。我现在更新了有错误的问题。请参阅我发布的链接,了解如何格式化字符串以使其更具可读性。这将产生
SELECT1FROM dual
注意空格!这将产生
SELECT1FROM dual
注意您的空间!我尝试了与上面提到的相同的格式,仍然得到一个错误“FROM关键字未在预期的位置找到”。使用您尝试的准确VBA更新您的问题将非常有用。我现在已更新。还有一件事,当我尝试在每一行之后使用&u时,它会抛出一个错误作为“无效字符”。使用&u是不好的,因为这种类型的行连接有连接的限制…@Gadziu-就像编程中的许多其他东西一样,“好”不是绝对的。如果有太多行要使用
&
,请不要使用它,但如果有那么多行,可能最好将SQL存储在一个工作表单元格中,这样更易于维护。我尝试了与上述相同的格式,仍然得到一个错误,即“FROM关键字未在预期位置找到”。用您尝试过的VBA更新您的问题会很有用。我现在已经更新了。还有一件事,当我尝试在每一行之后使用&u时,它会抛出一个错误作为“无效字符”。使用&u是不好的,因为这种类型的行连接有连接的限制…@Gadziu-就像编程中的许多其他东西一样,“好”不是绝对的。如果有太多的行要使用
&
,那么不要使用它,但是如果有那么多行,那么最好将SQL存储在工作表单元格中,这样更易于维护。