0
private void btnSearchDB_Click(object sender, EventArgs e)
    {
        OleDbConnection accessConnect = new OleDbConnection(@"Provider=Microsoft.Jet.OLEDB.4.0; Data Source=C:\ECM\ECM\ECM\ECM.mdb");
        DataTable dt = new DataTable();
        OleDbDataAdapter da = new OleDbDataAdapter("SELECT * FROM ECMeasurements WHERE [Job Number] LIKE " + txtJobNumber.Text, accessConnect);

        da.Fill(dt); 
        dataGridView1.DataSource = dt;



    }

Date.....(txtDate.Text) とコンボ ボックス (cbAlloyyTemper.Text) で検索できる選択肢もあります。3 つの異なるクエリを作成する必要がありますか?それとも、すべての検索条件をまとめることはできますか?

4

2 に答える 2

0

これは私がこれを行う方法ではありません。

各クエリを生成するたびに同じテーブルを表示している場合は、毎回データベースにクエリを実行する必要はありません。代わりに、データをデータテーブルにロードしてから、毎回データベースではなくメモリ内のデータテーブルにクエリを実行する必要があります。

バインディングソースを作成してから、このオブジェクトのデータソースをデータテーブルオブジェクトに設定する必要があります。

gridViewの場合、このオブジェクトのデータソースをバインディングソースに設定します。

そのようです :-

OleDbConnection accessConnect = new OleDbConnection(@"Provider=Microsoft.Jet.OLEDB.4.0;       Data Source=C:\ECM\ECM\ECM\ECM.mdb");
DataTable dt = new DataTable();
OleDbDataAdapter da = new OleDbDataAdapter("SELECT * FROM ECMeasurements", accessConnect);

da.Fill(dt); 
BindingSource bs = new BindingSource();
bs.DataSource = dt;
dataGridView1.DataSource = bs;

これで、データテーブルの状態の変更がグリッドビューに自動的に反映されます。

DataTableをクエリするには、DataViewを使用できます。DataViewを使用すると、SQLStatmentなどのパラメーターを使用してDatatableを検索できます。構文は頭から離れていますが、その方法を確認する必要があります。

DataViewsを使用したDataTablesのクエリをご覧ください。インターネットには多くの例があります。

あなたのシナリオでは、それが最も適しています。

幸運を。

于 2012-09-04T07:28:55.987 に答える
0

まず、クエリで文字列を使用しないでください。ただし、 Parametersを使用してください。

2 番目: 後で簡単にデバッグできるように、3 つの異なるクエリを作成します。ただし、すべては、どれだけのクエリを実行できるか、および自分の快適さによって異なります。

于 2012-09-03T19:02:33.520 に答える