【问题标题】:Erro on VB "Expecting an existing scalar var"VB上的错误“期望现有的标量变量”
【发布时间】:2015-09-05 13:00:36
【问题描述】:

我正在尝试使用 vb 制作一个函数。 此功能是为报告收集数据。 如下示例:

Public Function HeaderData() As String
Dim dados As String
dados = ""  
If Not(frm.FormQuery.FieldByName("A").AsString  = "S" And _
     frm.FormQuery.FieldByName("B").AsString  = "S" And _
     frm.FormQuery.FieldByName("C").AsString  = "S" And _
     frm.FormQuery.FieldByName("D").AsString  = "S") Then

dados = dados + "Type: "

If frm.FormQuery.FieldByName(A).AsString = "S" Then
  dados = dados + "A"
End If

If frm.FormQuery.FieldByName(B).AsString = "S" Then
  If frm.FormQuery.FieldByName(A).AsString = "S" Then
    dados = dados + ", "
  End If
  dados = dados + "B"
End If

If frm.FormQuery.FieldByName(C).AsString = "S" Then
  If frm.FormQuery.FieldByName(A).AsString = "S" Or _
     frm.FormQuery.FieldByName(B).AsString = "S" Then
     dados = dados + ", "
  End If
  dados = dados + "C"
End If

 If frm.FormQuery.FieldByName(D).AsString = "S" Then
  If frm.FormQuery.FieldByName(A).AsString = "S" Or _
     frm.FormQuery.FieldByName(B).AsString = "S" Or _
     frm.FormQuery.FieldByName(C).AsString = "S" Then
     dados = dados + ", "
  End If
  dados = dados + "D"
End If

dados =  dados + "; "

这个函数会导致错误:Expecting an existing scalar var.

我做了其他功能相同的功能,使用类似的代码,使用相同的变量来收集数据(dados)并且没有导致错误。会发生什么?

【问题讨论】:

  • 哪一行导致错误?
  • 您发布的代码缺少 End Function 和 Return 语句。只是复制粘贴错误吗?
  • 1. 不清楚你在问什么(异常到底是在哪里抛出的,那是确切的异常消息吗?),2.包含语法错误(例如FieldByName(D).,即缺少双引号)和3. 不可重现的错误(什么是FormQuery,它保证包含什么“字段”,定义是什么的.FieldByName(…).AsString;他们可以抛出异常吗?)我投票结束(但一旦这些问题得到解决,将撤回结束投票)。
  • 只是更正:在同一个函数中,我做了与上述类似的条件。
  • 一开始你做 FieldByName("A") 比你做 FieldByName(A)。这令人困惑,可能是您问题的根源。你至少应该告诉我们有错误的那一行。

标签: vb.net var scalar


【解决方案1】:

你的逻辑没有多大意义。我强烈建议您只写几行代码并进行调试。确保一切正常,而不是多写几行。一开始就写太多会出问题。

    Dim possibleFields As String() = {"A", "B", "C", "D"}
    Dim foundFields As New List(Of String)
    Dim dados As String = ""

    For Each field As String In possibleFields
        If frm.FormQuery.FieldByName(field).AsString = "S" Then
            foundFields.Add(field)
        End If
    Next

    If foundFields.Count > 0 Then
        dados = String.Format("Type: {0}; ", String.Join(", ", foundFields.ToArray()))
    End If

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-01-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-12-16
    • 1970-01-01
    相关资源
    最近更新 更多