November 6, 2015 at 9:00 am
Hello, I am very new to SSIS and therefore I apologize if this might seem like a silly question, I currently have this Package https://www.sqlservercentral.com/Forums/Uploads/image-unavailable.png where I count the number of files in a folder. After it counts them it deletes the oldest file.
I want it to analyze the following: If there's more than 15 files, it will proceed with the package execution, if not, it will stop the package execution. I understand this should be done with the variable I had created to count how many files there are in the directory, but I don't understand how to script it. If anyone can point me in the right direction I'd be very grateful!
EDIT: I did it, turns out I was missing the + sign before the equal sign.
Dim Sum As Integer = 0
Dim di As New DirectoryInfo("C:\Users\ricardo.laborde\Documents\DeleteTest")
Dim fiArr As FileInfo() = di.GetFiles()
Dim fri As FileInfo
Public Sub Main()
For Each fri In fiArr
Sum += 1
Next fri
If Sum > 15 Then
' Add your code here
'
Dts.TaskResult = ScriptResults.Success
Else
Dts.TaskResult = ScriptResults.Failure
End If
End Sub
November 9, 2015 at 2:45 am
Hi Ricardo
If you simply want to end the task with failure, you can do this in this way:
Public Sub Main()
'Dim Sum As Integer = 0
Dim di As New DirectoryInfo("C:\Users\ricardo.laborde\Documents\DeleteTest")
Dim Sum As Integer = di.GetFiles().Length
'Dim fiArr As FileInfo() = di.GetFiles()
'Dim fri As FileInfo
'For Each fri In fiArr
'Sum += 1
'Next fri
If Sum > 15 Then
'MessageBox.Show(CStr(Sum))
Dts.TaskResult = ScriptResults.Success
Else
'MessageBox.Show(CStr(Sum))
Dts.TaskResult = ScriptResults.Failure
End If
End Sub
Besides the pass and fail, you also can handle a precedence constraint:
Public Sub Main()
'Dim Sum As Integer = 0
Dim di As New DirectoryInfo("C:\Users\ricardo.laborde\Documents\DeleteTest")
Dim Sum As Integer = di.GetFiles().Length
'Dim fiArr As FileInfo() = di.GetFiles()
'Dim fri As FileInfo
'MessageBox.Show(CStr(Sum))
Dts.Variables("FileCnt").Value = Sum
Dts.TaskResult = ScriptResults.Success
End Sub
Best regards,
Mike
November 9, 2015 at 10:46 am
michal.lisinski (11/9/2015)
Hi RicardoIf you simply want to end the task with failure, you can do this in this way:
Public Sub Main()
'Dim Sum As Integer = 0
Dim di As New DirectoryInfo("C:\Users\ricardo.laborde\Documents\DeleteTest")
Dim Sum As Integer = di.GetFiles().Length
'Dim fiArr As FileInfo() = di.GetFiles()
'Dim fri As FileInfo
'For Each fri In fiArr
'Sum += 1
'Next fri
If Sum > 15 Then
'MessageBox.Show(CStr(Sum))
Dts.TaskResult = ScriptResults.Success
Else
'MessageBox.Show(CStr(Sum))
Dts.TaskResult = ScriptResults.Failure
End If
End Sub
Besides the pass and fail, you also can handle a precedence constraint:
Public Sub Main()
'Dim Sum As Integer = 0
Dim di As New DirectoryInfo("C:\Users\ricardo.laborde\Documents\DeleteTest")
Dim Sum As Integer = di.GetFiles().Length
'Dim fiArr As FileInfo() = di.GetFiles()
'Dim fri As FileInfo
'MessageBox.Show(CStr(Sum))
Dts.Variables("FileCnt").Value = Sum
Dts.TaskResult = ScriptResults.Success
End Sub
Best regards,
Mike
Thank you very much, this is a much simpler approach and much cleaner than mine!
Viewing 3 posts - 1 through 2 (of 2 total)
You must be logged in to reply to this topic. Login to reply
This website stores cookies on your computer.
These cookies are used to improve your website experience and provide more personalized services to you, both on this website and through other media.
To find out more about the cookies we use, see our Privacy Policy