0

我在 BRIO (Hyperion Interactive Reporting Studio) 中编写了以下代码。代码是 JavaScript 或 JScript,但我不确定是哪一个,因为我只是在学习语法并且不确定它们有何不同。

无论如何,我Script(line number) missing; before statement在以下几行中遇到语法错误:

if (xYear == 2012 && yMonth == 10) {stopIt = "Yes"} else (yMonth == 12) {stopIt = "Yes"}

var myDate = New Date(xYear, yMonth, 1)

在下面的代码中。

var xYear
var yMonth

for (j = 2009; j =  2012; j++)

{ 

    xYear = j

    if (xYear == 2009) {yMonth = 7} else {yMonth = 1}

    var StopIt = "No"

    Do 

    {
    var myDate = New Date(xYear, yMonth, 1)
    Alert (myDate)

    //var myQuery = ActiveDocument.Sections["qry_billing"]

    //myQuery.Limits["Accounting Year Month"].CustomValues.RemoveAll()
    //myQuery.Limits["Accounting Year Month"].CustomValues.Add(myDate)
    //myQuery.Limits["Accounting Year Month"].SelectedValues.Add(myDate)

    //myQuery.Process()

    //var Path = "W:\\Major Accounts\\Alliance Process\\AAA\\reference_files\\Results"
    //var File = "Results" + "_" + xYear + "_" +  yMonth+ " .txt"

    //ActiveDocument.Sections["Results"].Export(Path + "\\" + File,bqExportFormatText,true)

    yMonth = yMonth + 1

    if (xYear == 2012 && yMonth == 10) {stopIt = "Yes"} else if (yMonth == 12) {stopIt = "Yes"}
    }

    While (stopIt != "Yes")

}

有人可以帮我解决这个问题吗,因为我不明白为什么它要求我提供;,因为我认为 BRIO 文档脚本中甚至不需要它。

4

2 回答 2

7
else (yMonth == 12)

应该:

else if (yMonth == 12)

当你正确缩进代码时,很容易注意到这个错误:

if (xYear == 2012 && yMonth == 10) {
    stopIt = "Yes"
} 
else (yMonth == 12) { // shoule be: else if (yMonth == 12) {
    stopIt = "Yes"
}

注意:javascript区分大小写,这意味着

  • Do不是do
  • alert不是Alert
  • new代替New

但分号不是强制性的,您可以根据需要使用或不使用。

更新:

从查看您发布的完整代码来看,伙计,它有很多奇怪的东西。

for (j = 2009; j =  2012; j++)

应该是这样的:

for (var j = 2009; j <= 2012; j++)
...

你定义一个变量:

var StopIt = "No"

stopIt改用:

stopIt = "Yes"

您应该参加 javascript 课程\教程,学习起来并不难,但是您当前状态的代码完全被破坏了!

于 2012-11-05T16:40:12.483 回答
0

为清楚起见,我的问题的答案是双重的,基于 gdoron 非常有帮助和信息丰富的答案和 Teemu 在我原来的帖子下的评论。总结一下答案,我在下面回答了我自己的问题:

此语句中的错误

if (xYear == 2012 && yMonth == 10) {stopIt = "Yes"} else (yMonth == 12) {stopIt = "Yes"}

是不是ifelse

所以它应该是这样的:

if (xYear == 2012 && yMonth == 10) {
    stopIt = "Yes"
}
else if (yMonth == 12) {
    stopIt = "Yes"
}

此语句中的错误

var myDate = New Date(xYear, yMonth, 1)

New不应该被资本化。所以应该写成:

var myDate = new Date(xYear, yMonth, 1)
于 2012-11-05T16:57:48.270 回答