【发布时间】: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)。这令人困惑,可能是您问题的根源。你至少应该告诉我们有错误的那一行。