【问题标题】:syntax error in ASP Classic SQL Query when using conditional IF使用条件 IF 时 ASP 经典 SQL 查询中的语法错误
【发布时间】:2021-02-27 16:08:53
【问题描述】:

我正在尝试使用 IF 和 THEN 对 ASP 经典 SQL 查询中的不同元素进行排序,并尝试了许多不同的方法来使其工作..“问题孩子”是这样的:

StatsSQL = "SELECT COUNT(v.col) as num_not_null, COUNT(v.col) * 1.0 / COUNT(*) * 100 as percent_not_null, COUNT(*) as toltalColsNeedsFilled FROM EFP_EmploymentUser t CROSS APPLY (VALUES (t.ITAdvicedFirst),(t.ITAdvicedSecond),(t.ITDepartmentDone),(t.CFOAdvicedFirst),(t.CFOInfoProvided),(t.CFOAdvicedSecond),(t.CFODone),(t.EconomyAdviced),(t.EconomyDone)," & IF objFlowNotDone("Academy") = "yes" THEN Response.Write("(t.AcademyAdviced),(t.AcademyDone),") END IF IF objFlowNotDone("Publicator") = "yes" THEN Response.Write("(t.PublicatorAdviced),(t.PublicatorDone),") END IF & "(t.PortraitAdviced),(t.PortraitDone)) v(col) WHERE ID = '19';"

我得到的错误:

Microsoft VBScript compilation error '800a03ea'

Syntax error

/flow.asp, line 271

任何人都可以在正确的方向上帮助我解决这个问题吗?

最好的问候

斯蒂格 :-)

【问题讨论】:

标签: asp-classic


【解决方案1】:

您不应该使用 Response.Write,除非您确实希望 Response.Write 语句的内容显示在您的输出中,并且您确实需要为您的条件语句开始一个新行。这就是您似乎正在尝试做的事情。我假设你的 SQL 是正确的,这里唯一的问题是你的 VBScript。

StatsSQL = "SELECT COUNT(v.col) as num_not_null, COUNT(v.col) * 1.0 / COUNT(*) * 100 as percent_not_null, COUNT(*) as toltalColsNeedsFilled FROM EFP_EmploymentUser t CROSS APPLY (VALUES (t.ITAdvicedFirst),(t.ITAdvicedSecond),(t.ITDepartmentDone),(t.CFOAdvicedFirst),(t.CFOInfoProvided),(t.CFOAdvicedSecond),(t.CFODone),(t.EconomyAdviced),(t.EconomyDone)"

If objFlowNotDone("Academy") = "yes" THEN 
  StatsSQL = StatsSQL & ",(t.AcademyAdviced),(t.AcademyDone)"
End If

If objFlowNotDone("Publicator") = "yes" THEN
  StatsSQL = StatsSQL & ",(t.PublicatorAdviced),(t.PublicatorDone)"
End If

StatsSQL = StatsSQL & ",(t.PortraitAdviced),(t.PortraitDone)) v(col) WHERE ID = '19';"

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-01-16
    • 1970-01-01
    相关资源
    最近更新 更多