我正在进行一些测试,将执行SQL任务中的完整结果集输出到Foreach循环中,如下所示
我只想将我的变量值输出到消息框,但它似乎不起作用。
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);
}
}
}
}
我只是在“集合中找不到元素”或其他东西,即使我知道查询输出了2行。
我还在foreach循环上映射了我的变量,并在scrip task上指定了只读变量。
*更新*
这让我疯了。我已经三次检查了我的变量名,可以确认我得到了完整的结果集。
我从脚本任务变量中删除了User ::但仍然没有运气。
答案 0 :(得分:8)
您必须传入正在使用的变量。双击脚本任务,然后在“脚本任务编辑器”模式窗口中,输入要在“ReadOnlyVariables”或“ReadWriteVariables”中显示的变量。然后,您就可以在代码中引用它们了。
答案 1 :(得分:3)
听起来好像你的一个变量名拼写不正确,并且在数组中找不到它。
你也可以使用
string Variables = String.Format("{0},{1},...",Dts.Variables["User::ClientID"],Dts.Variables["User::Passphrase"],...)
显示值或设置变量字符串。
答案 2 :(得分:3)
您不必指定范围:User
或System
。从每个名称中删除User::
。如果它仍然不起作用 - 你必须拼错其中一个名字。
此外,您需要获取值并将其转换为字符串。正确的格式是:
Dts.Variables["Passphrase"].Value.ToString()
答案 3 :(得分:2)
我在试图解决类似问题后偶然发现了这一点。我在您的代码中发现的第一个问题是您没有
<强>。价值强>
在串联的字符串中的.ToString之前。我改变了这一点并且有效。