我在这里尝试做的事情似乎很简单。在我的SSIS包的开头,我想将变量设置为提示用户的目录。这是我的VB代码:
Public Sub Main()
Dim fldDialog As FolderBrowserDialog = New FolderBrowserDialog
fldDialog.Description = "Select the folder..."
fldDialog.ShowNewFolderButton = False
fldDialog.RootFolder = Environment.SpecialFolder.MyDocuments
If fldDialog.ShowDialog() = DialogResult.OK Then
Dts.Variables("variable").Value = fldDialog.SelectedPath
Dts.TaskResult = ScriptResults.Success
Else
MsgBox("You need to select a folder!", MsgBoxStyle.Exclamation, "Error!")
Dts.TaskResult = ScriptResults.Failure
End If
End Sub
当然,我在“脚本任务编辑器”中将“变量”设置为“ReadWriteVariables”,并在VB文件的顶部设置“Imports System.Windows.Forms”。
当我运行任务时,它只是坐在那里黄色(好像它正在运行),但从不显示对话框。甚至从来没有错误,只是坐在那里。我可以在标准的Windows应用程序项目中运行相同的代码没问题。
不确定这里发生了什么。知道显示一个OpenFileDialog的一个怪癖是你必须将ShowHelp属性设置为True,所以我想知道是否有另一个怪来让它运行。谷歌只是主要向我展示一个老问题,其中文件夹树是空白的,但我甚至没有得到提示。任何帮助将不胜感激。
答案 0 :(得分:0)
我知道这有点晚了,但是我遇到了这个问题并找到了解决方法。 (使用C#)
您需要使用“ OpenFileDialog”而不是“ FolderBrowserDialog”,并且需要进行一些调整。这是一个示例代码,可打开资源管理器并让您选择一个文件夹:
public void Main()
{
string myPath="";
OpenFileDialog folderBrowser = new OpenFileDialog();
folderBrowser.ValidateNames = false;
folderBrowser.CheckFileExists = false;
folderBrowser.CheckPathExists = true;
folderBrowser.FileName = "Folder Selection.";
folderBrowser.ShowHelp = true;
if (folderBrowser.ShowDialog() == DialogResult.OK)
{
myPath = Path.GetDirectoryName(folderBrowser.FileName);
}
else
{
MessageBox.Show("Error bei Pfadauswahl");
}
Dts.Variables["User::varFolderPath"].Value = myPath;
Dts.TaskResult = (int)ScriptResults.Success;
}
最重要的语句是“ folderBrowser.ShowHelp = true”语句。如果不执行此作业,则会遇到与问题相同的问题。
您还需要上面的语句来“欺骗”对话框,以便可以选择文件夹而不是文件。
希望我能为您或有同样问题的人提供帮助,但您应该像“ N West”所说的那样将文件夹作为变量传递到软件包中。