'if'语句在VB.net中有多行多条件

时间:2017-11-02 14:45:47

标签: vb.net

我正在检查是否存在两个文件,然后设置了一个条件,但是当我添加AND

时,我收到一条错误消息,指出语法不正确
If (System.IO.Directory.GetFiles(CStr(Dts.Variables("VNetworkFolderName").Value), "Z_Attendance.xls").Length > 0
and System.IO.Directory.GetFiles(CStr(Dts.Variables("VNetworkFolderName").Value), "Z_EP.xls").Length > 0) Then
  Dts.Variables("VCountAPAListFile").Value = True
Else
  Dts.Variables("VCountAPAListFile").Value = False
End If

但如果我在不使用AND语句的情况下只检查一个文件,它就可以正常工作。

4 个答案:

答案 0 :(得分:3)

在行终止前添加下划线_以指示换行符。

If (System.IO.Directory.GetFiles(CStr(Dts.Variables("VNetworkFolderName").Value), "Z_Attendance.xls").Length > 0 _
And System.IO.Directory.GetFiles(CStr(Dts.Variables("VNetworkFolderName").Value), "Z_EP.xls").Length > 0) Then
  Dts.Variables("VCountAPAListFile").Value = True
Else
  Dts.Variables("VCountAPAListFile").Value = False
End If

答案 1 :(得分:1)

你需要在'和'之后放置换行符。或使用续行符(下划线)。此外,通常最好使用' AndAlso'在现代VB中。

If condition _
    AndAlso otherCondition Then
    DoThing()
Else
    DoOtherThing()
End If

或者

 If condition AndAlso 
    otherCondition Then
    DoThing()
Else
    DoOtherThing()
End If

答案 2 :(得分:1)

根据版本的不同,“And”应位于第一行,最后带有_。

If (System.IO.Directory.GetFiles(CStr(Dts.Variables("VNetworkFolderName").Value), "Z_Attendance.xls").Length > 0 And _
    System.IO.Directory.GetFiles(CStr(Dts.Variables("VNetworkFolderName").Value), "Z_EP.xls").Length > 0) Then
  Dts.Variables("VCountAPAListFile").Value = True
Else
  Dts.Variables("VCountAPAListFile").Value = False
End If

答案 3 :(得分:0)

两次调用GetFiles是一个坏主意。它将遍历目录中的所有文件夹两次!您最好使用File.Exists代替:

Dim folderName As String = CStr(Dts.Variables("VNetworkFolderName").Value
Dim filename1 = Path.Combine(folderName, "Z_Attendance.xls")
Dim filename2 = Path.Combine(folderName, "Z_EP.xls")

Dts.Variables("VCountAPAListFile").Value =  File.Exists(filename1) AndAlso File.Exists(filename2)