2013-07-03 73 views
0

我有一个有趣的问题,我相信。我正在编写一个应用程序,它在C:\中进行搜索,以查找遵循相同命名约定的文件夹。当找到文件夹时,应用程序需要进入文件夹内的数据库并提取一位数据。该数据应添加到列表框或下拉列表中。下面是我到目前为止,它正确抓住一个文件夹....但不是所有的文件夹具有相同的命名约定。我相信这是将数据数组添加到多个数据库的下拉列表中

profselect.Text = reader[0].ToString(); 

线但不确定。

目标是,我有4个不同的文件夹,名称如Rameses-100,Rameses-101等。每个文件夹都包含它自己的Ramdata.mdb。而且MDB是我希望在profselect下拉框中列出的名称。更进一步,用户将能够使用框中列出的名称切换到选定的数据集。目前,如果我运行它,它只是把文件夹中的一个ramdata信息放在框中。我想有更多的一个。

string directory = @"C:\"; 
     string[] folders = Directory.GetDirectories(directory, "Rameses-*"); 
     foreach (string foldername in folders) 
     { 
      var myDataTable = new System.Data.DataTable(); 
      using (var conection = new System.Data.OleDb.OleDbConnection("Provider=Microsoft.JET.OLEDB.4.0;" + "data source="+foldername+"\\Program\\Ramdata.mdb;Jet OLEDB:Database Password=****")) 
      { 
       conection.Open(); 
       var query = "Select u_company From t_user"; 
       var command = new System.Data.OleDb.OleDbCommand(query, conection); 
       var reader = command.ExecuteReader();      
       while (reader.Read()) 
        profselect.Text = reader[0].ToString(); 
       conection.Close(); 
      } 
+0

OK,然后呢?你想添加结果到dropDown, 还是有一些错误?你的问题不够清楚。 – Star

+0

我没有收到任何错误,字符串(在这种情况下,查询的结果)应放入profselect下拉框中。我用完整的代码片段编辑了上面的代码。 –

+0

你还没有问过问题,所以你现在正在做的是要求某人为你开发你的应用程序。 –

回答

0

你的问题还不够清楚,但可以说上面的代码工作。

您希望每次执行此操作时都添加结果(我假设)。
再次假设您使用Windows窗体。
在窗体上放置一个组合框。

然后,当执行操作时,您需要保留之前得到的内容列表,然后将其用作comboBox的dataSource。 下面的代码演示了这一点:

List<string> dataList = new List<string>(); // this line is global not inside a closed scoop 
var myDataTable = new System.Data.DataTable(); 
using (var conection = new System.Data.OleDb.OleDbConnection("Provider=Microsoft.JET.OLEDB.4.0;" + "data source="+foldername+"\\Program\\Ramdata.mdb;Jet OLEDB:Database Password=****")) 
{ 
    conection.Open(); 
    var query = "Select u_company From t_user"; 
    var command = new System.Data.OleDb.OleDbCommand(query, conection); 
    var reader = command.ExecuteReader();      
    while (reader.Read()) 
    { 
     profselect.Text = reader[0].ToString(); 
     dataList.Add(profselect.Text); 
    } 
} 
myComboBox.DataSource = dataList; 
myComboBox.SelectedText = dataList.Last(); 

是据我可以和你给了这么多的信息帮助。

+0

所以我想我没有保持对结果的理解,只是试图直接将它们写入下拉框。我很抱歉,我的问题没有更清楚,我很难解释我在做什么,它就像一个配置文件转换器,每个文件夹包含一个用户配置文件,并且该信息存储在t_user字段中。最初的下拉框中列出了可供某些人阅读而不是其他人阅读的文件夹的名称。按名称选择比较容易。我认为在该领域获得的名称,并列出,而不是只是文件夹名称会更容易 –

+0

@ShaneSuperflyMacNeill好吧,我明白,我想我涵盖了你的需要在我的答案,我希望这有助于。 – Star

+0

但是你需要告诉你在哪个平台上工作,它是winForms吗?访问表单? WPF? – Star

相关问题