3

メッセージボックスのテキストにデータ可能な結果を​​提供しようとしています。以下は、これまでに作成したコードのスニペットです。

文字列 mystring = コンボ ボックス 1.テキスト; if (mystring.Substring(0, 12) == ("会社名")) { textBox2.Text = mystring.Substring(13); ADOCon.ConnectionString = @"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\Users\Name\Desktop\SmallBizDb.mdb"; ADOCon.Open();

            OleDbCommandBuilder CBuilder = new OleDbCommandBuilder(DAdapter);
            DAdapter = new OleDbDataAdapter("Select Companies.Company_Name From Companies Where Companies.Company_Name = '" + textBox2.Text + "'", ADOCon);

            DAdapter.Fill(DTable);
            MessageBox.Show(DTable.ToString());
            ADOCon.Close();
            ADOCon.Dispose();
        }
        else

基本的に、たとえばエンド ユーザーが「Company Name-Company One」と入力すると、SQL クエリから取得したデータ テーブル (DTable) 情報を示すメッセージ ボックスが表示されます。現在、「messagebox.Show(DTable.ToString());」がありますが、これは機能しません。また、私が見た他のすべての例では、「.Rows[0]」などの行インデックスを使用しています。これは、行番号が含まれていないため使用できませんが、データ内のSQL「where」ステートメントからの列名とレコード名ですアダプタ。

ここには多くの綿毛があるので、私の主な問題は、データ化可能な結果を​​変換してメッセージ ボックスに表示する方法です。

ありがとうございました、

DFM

4

1 に答える 1

3

何が必要かはわかりませんが、データテーブルに値を表示したい場合は、そこからデータを取得して、任意の順序で表示できるはずです。私はあなたが次のようなことをしたいと思っていると思います

        System.Text.StringBuilder b = new System.Text.StringBuilder();
        foreach (System.Data.DataRow r in dt.Rows)
        {
            foreach (System.Data.DataColumn c in dt.Columns)
            {
                b.Append(c.ColumnName.ToString() + ":" + r[c.ColumnName].ToString());
            }
        }
        MessageBox.Show(b.ToString());

これにより、返されたすべての行がループされ、各行(結果の各会社)について、dataTableのColumnName:ActualValueの形式で詳細が追加されます。

もちろん、このようなメッセージボックスに不明な量のデータを表示するのが良い考えかどうかはわかりませんが、それはあなたがそれを行うことができる方法にすぎません。

于 2009-05-26T05:35:18.487 に答える