Reputation: 10828
I'm doing some testing, outputting a full result set from a Execute SQL Task into a Foreach loop as below
and I just want to output my variable values to a message box, however it doesn't seem to work.
public void Main()
{
try
{
// TODO: Add your code here
string Variables = Dts.Variables["User::ClientID"].ToString() +
Dts.Variables["User::Passphrase"].ToString() +
Dts.Variables["User::KeyFileName"].ToString() +
Dts.Variables["User::InboundEncryptionRequired"].ToString() +
Dts.Variables["User::SftpResponseRequired"].ToString() +
Dts.Variables["User::OutboundDecryptionRequired"].ToString() +
Dts.Variables["User::SftpHost"].ToString() +
Dts.Variables["User::SftpPort"].ToString() +
Dts.Variables["User::SftpUserName"].ToString() +
Dts.Variables["User::Active"].ToString() +
Dts.Variables["User::SftpDownloadFrom"].ToString() +
Dts.Variables["User::SftpUploadTo"].ToString() +
Dts.Variables["User::SftpDeleteFilesFromRemote"].ToString() +
Dts.Variables["User::ConnectionProtocol"].ToString();
MessageBox.Show(Variables);
}
catch (Exception Ex)
{
MessageBox.Show(Ex.Message);
}
}
}
}
I'm just getting "element cannot be found in a collection" or something, even though I know the query is outputting 2 rows.
I have also mapped my variables on the foreach loop and specified read only variables on scrip task.
* UPDATE *
This is driving me nuts. I've triple checked my variable names, can confirm I'm getting full result set.
I removed the User:: from my script task variables, but still no luck.
Upvotes: 2
Views: 62055
Reputation: 21
I just stumbled upon this after trying to solve a similar problem. The first issue I found with your code is that you don't have
.value
before the .ToString in the string you are concatenating. I changed this on mine and it worked.
Upvotes: 2
Reputation: 646
It sounds as if one of your variable names is not spelled correctly and it cannot be found in the array.
Also you could use
string Variables = String.Format("{0},{1},...",Dts.Variables["User::ClientID"],Dts.Variables["User::Passphrase"],...)
to display the values or set your variables string.
Upvotes: 3
Reputation: 131
You have to pass in the variables you are using. Double-click the Script Task and in the "Script Task Editor" modal window, enter the variables you want to display in "ReadOnlyVariables" or "ReadWriteVariables". Then you'll be able to reference them in your code.
Upvotes: 9
Reputation: 1555
You don't have to specify the scope: User
or System
. Remove User::
from each name. If it still doesn't work - you must have misspelled one of the names.
Also you need to get the value and convert it to string. Correct format is:
Dts.Variables["Passphrase"].Value.ToString()
Upvotes: 3