0

興味深い質問があると思います。同じ命名規則に従うフォルダーを C:\ で検索するアプリケーションを作成しています。フォルダが見つかったら、アプリケーションはフォルダ内のデータベースに入り、1 ビットのデータを取得する必要があります。そのデータは、リスト ボックスまたはドロップダウンに追加する必要があります。以下は私がこれまでに持っているもので、1つのフォルダーを適切に取得します....しかし、同じ命名規則を持つすべてのフォルダーではありません。私はそれが

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

行がわかりません。

目標は、Rameses-100、Rameses-101 などの名前の 4 つの異なるフォルダーがあることです。各フォルダーには、独自の Ramdata.mdb が含まれています。その MDB には、profselect ドロップダウン ボックスにリストしたい名前があります。ユーザーは、ボックスにリストされた名前を使用して、選択したデータセットに切り替えることができます。現在、これを実行すると、フォルダー ramdata info の 1 つがボックスに入れられます。1つ以上持っていたいです。

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();
            }
4

1 に答える 1

0

あなたの質問は十分に明確ではありませんが、上記のコードが機能しているとしましょう。

この操作を実行するたびに結果を追加したい(と思います)。
ここでも、Windows フォームを使用していると仮定します。
フォームにコンボボックスを配置します。

次に、操作を実行するときに、以前に取得したもののリストを保持し、それをコンボボックスのデータソースとして使用する必要があります。以下のコードはこれを示しています。

 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();

あなたがくれたこれだけの情報で私ができる限りのことです。

于 2013-07-03T23:38:10.663 に答える