Loops 无Do错误的循环,尽管if语句已正确关闭

Loops 无Do错误的循环,尽管if语句已正确关闭,loops,vbscript,asp-classic,Loops,Vbscript,Asp Classic,我得到一个错误“没有do的循环”。 我不明白为什么,因为我所有的if语句都以end if结尾 也许你们可以帮我查一下哪里没关(如果没关) 这是我的密码 Do until Int(uitgevoerd)=Int(aantal_cat) Do until Not IsEmpty(request.form("categorie" & i)) i=i+1 loop Select Case True cbvcode = request.fo

我得到一个错误“没有do的循环”。 我不明白为什么,因为我所有的
if
语句都以
end if
结尾

也许你们可以帮我查一下哪里没关(如果没关)

这是我的密码

Do until Int(uitgevoerd)=Int(aantal_cat)
    Do until Not IsEmpty(request.form("categorie" & i)) 
        i=i+1
    loop
    Select Case True
        cbvcode = request.form("cbvcode" & i)

        ' Case Instr(cbvcode, "cbvcode") > 0
        if Instr(cbvcode, "cbvcode") > 0 then
            'objConProjecten.Execute(finanSQL)
            uitgevoerd=uitgevoerd+1 
            i=i+1   
        else
            bedragdeelnemer = request.form("bedragdeelnemer"& i)
            cat_id = request.form("categorie" & i)
            huidig_cat_id = request.form("huidig_cat_id_" & i)
            volgnummer = request.form("volgnummer" & i)
            'cbvcode = request.form("cbvcode" & i)

            'kijk of bedragdeelnemer leeg is. Zoniet doe een update of een insert.
            if bedragdeelnemer = "" then
                bedragdeelnemer = 0
            end if

            FOR c=1 to 5
                if Int(categorieen(c))=Int(cat_id) then
                    catgebruikt = TRUE 
                    categorieen(c)=null
                end if
            NEXT        
            response.write("<br>")
            response.write(i)
            response.write("<br>")
            if catgebruikt then
                finanSQL =  _
                    "UPDATE intakeformulieren_financien " & _
                    "SET bedragdeelnemer=" & replace(bedragdeelnemer, ",", ".") & _
                        ", volgnummer=" & volgnummer & _
                        ", cbvcode='" & cbvcode & _
                        "' WHERE formuliernr = " & formnummer & _
                        " AND cat_id = " & cat_id
                        response.write(finanSQL)
                        catgebruikt = FALSE
            else
                finanSQL =  _
                    "INSERT INTO " & _
                    "intakeformulieren_financien (formuliernr, bedragdeelnemer, cat_id, volgnummer, cbvcode) " & _
                    "VALUES ("& & _
                         formnummer & "," & _
                         replace(bedragdeelnemer, ",", ".") & "," & _
                         cat_id & "," & _
                         volgnummer & ",'" & _
                         cbvcode & "')"
                response.write(finanSQL)
            end if
            objConProjecten.Execute(finanSQL)
            uitgevoerd=uitgevoerd+1 
            i=i+1
        end if
Loop
Do until Int(uitgevored)=Int(安塔勒猫)
直到没有空为止(request.form(“categorie”&i))
i=i+1
环
选择Case True
cbvcode=request.form(“cbvcode”&i)
'案例说明(cbvcode,“cbvcode”)>0
如果Instr(cbvcode,“cbvcode”)>0,则
'objConProjecten.Execute(finanSQL)
uitgevoerd=uitgevoerd+1
i=i+1
其他的
bedragdeelnemer=request.form(“bedragdeelnemer”&i)
cat_id=请求表(“分类”和i)
huidig\u cat\u id=request.form(“huidig\u cat\u id”&i)
volgnummer=request.form(“volgnummer”&i)
'cbvcode=request.form(“cbvcode”&i)
“贝德拉迪尔内默·利格的基克是。een插件的Zoniet doe een更新。
如果bedragdeelnemer=“”,则
贝德拉格迪尔内默=0
如果结束
对于c=1到5
如果Int(categorieen(c))=Int(cat_id),则
catgebruikt=真
类别(c)=空
如果结束
下一个
响应。写入(“
”) 答复.书面答复(一) 响应。写入(“
”) 如果catgebruikt那么 finanSQL=_ “更新财务报表”和_ “设置床上用品”(&replace(床上用品)”、“、”、“)&_ “,volgnummer=“&volgnummer&_ “,cbvcode=”&cbvcode&_ “'WHERE formulierr=“&formnumer&_ “和cat_id=“&cat_id response.write(finanSQL) catgebruikt=FALSE 其他的 finanSQL=_ “插入”&_ “财务报表(报表、便笺簿、分类号、卷号、cbvcode)”和_ “值(&&_ formnummer&“,”和_ 更换(贝德拉格迪尔内默,,,,,,,,,,,,)和_ 类别id&“,”和_ 沃格努默&“,”&”_ cbvcode&“')” response.write(finanSQL) 如果结束 objConProjecten.Execute(finanSQL) uitgevoerd=uitgevoerd+1 i=i+1 如果结束 环
这是一个问题:

    finanSQL =  "INSERT INTO intakeformulieren_financien (formuliernr, bedragdeelnemer, cat_id, volgnummer, cbvcode) " &_
                "VALUES ("& formnummer & "," & replace(bedragdeelnemer, ",", ".") & "," & cat_id & "," & volgnummer & ",'" & cbvcode & "')"
因为你用了“&”而不是“&”。下划线必须是孤立的。它可能会破坏代码中的内容

我看到的另一个问题是你选择了正确的案例。我喜欢Select Case true,但你没有任何可以利用它的东西。您没有任何结束选择,也没有任何未注释掉的案例。尝试删除整行


然后再试一次,发布你的新代码,并告诉我们它是否仍然不起作用。啊,请做一个更好的缩进。

我最后就是这样做的。它是有效的:)谢谢


代码没有正确缩进是没有帮助的。您的问题是其中有一个
Select Case True
,没有
End Select
或任何
Case
语句。请先尝试删除它,请正确格式化您的代码。选择“大小写为真”基本上是错误的做法。谢谢!你帮了我很多。我不太喜欢经典的ASP-jet,但我需要为实习调整这段代码。最后,我确实使用了select case true,我只是不太了解select case jet,所以我的孔代码乱七八糟。。请参阅我的答案。关于
Select Case True
,您只需注意,与C类语言不同,在C类语言中,您有一个
break
退出关联的
Case
,您不需要使用VB脚本。使用VB脚本,接受给定条件的第一次出现。因此,如果有几个复杂的
Case
语句都计算为true,请确保它们都是a。按照正确的顺序,b。在右边的
案例中
语句!错误使用Select case True时是一种不好的做法(当一个简单的if或一个简单的Select case可以完成这项工作时,这两种解决方案都涵盖了大多数情况)。但是,当您必须按照特定的顺序遵循决策列表,使用外来和非同质数据访问时,遵循规范是一种可读的方式。具体来说,这里没有必要。@gazz0x2z:我必须说我同意Ansgar Wiechers在上面的评论-
Select Case
有它的地位,不应该被滥用。我以前使用过
Select Case True
,可以理解它的可读性因素,但是我更喜欢
If…Then..ElseIf
结构。这不是使用
Select Case
的方式。将其替换为
If..Then..Else
@Lankymart三个控制结构中的每一个都适用于不同的场景。仅仅因为你可以滥用它们在其他情况下工作并不意味着你应该这样做。@Lankymart让我们同意不同意。我不认为这是一个对这个问题进行深入讨论的好地方。@BennyNiemeijer:也许你对这个网站的实际情况有错误的理解。SO的全部目的是讨论其他读者的最佳选择,而不仅仅是你。“请不要这么粗鲁!”保罗最近似乎越来越像他们了。
Do until Int(uitgevoerd)=Int(aantal_cat)
    Do until Not IsEmpty(request.form("categorie" & i)) 
        i=i+1
    loop
    cbvcode = request.form("cbvcode" & i)
    Select Case True

    Case Instr(cbvcode, "-1") > 0
        'objConProjecten.Execute(finanSQL)
        uitgevoerd=uitgevoerd+1 
        i=i+1   
    Case else
       ...
       ...
    End Select
Loop