2015-09-10 45 views
0

我有一个非常简单的if语句的控制源的一个未绑定的字段。我收到一个Object Required错误,并不能完全弄明白。基本上,如果姓氏字段不为空,则应用第一个控制源,否则,应用第二个控制源。 (基本上丢弃 “和” 字在字符串中)对象报告负载女士访问需要的错误


Private Sub Report_Load() 
    If LastName2.Value Is NotNull Then 
     Text29.ControlSource = [=[FirstName1] & " " & [LastName1] & " AND " & [FirstName2] & " " & [LastName2]] 
    Else 
     Text29.ControlSource = [=[FirstName1] & " " & [LastName1] & " " & [FirstName2] & " " & [LastName2]] 
    End If 
End Sub 

回答

0

ControlSource属性需要作为字符串。所以,放置在一个字符串作为对照源表达:

If Not IsNull(LastName2.Value) Then 
'Or Nz(LastName2) <> "" 
    Text29.ControlSource = "=FirstName1 & ' ' & LastName1 & ' AND ' & FirstName2 & ' ' & LastName2" 
Else 
    Text29.ControlSource = "=FirstName1 & ' ' & LastName1 & ' ' & FirstName2 & ' ' & LastName2" 
End If 

注意,在字符串中的表达,你可以使用单引号作为字符串分隔符。此外,由于列名不是保留关键字,因此您不需要将它们嵌入到括号[...]中。

使用Not IsNull(xy)而不是xy Is NotNull

+0

同样的错误。 MS Access突出显示了这部分功能; 如果LastName2.Value是NotNull然后 – NewbieVBA

+0

有趣......如果我将表达式移动到On_Open那么错误是“您输入了并且没有值的表达式”。 LastName2字段位于报表上,但带有“未显示”变量。 – NewbieVBA

+0

好了,所以在将Not IsNull部分更改为您的建议之后,错误消失了,但它只执行“if”的第一部分,而不管值是否在LastName2字段中。 – NewbieVBA