1

Visual Basic プロジェクトについて助けが必要です。顧客と注文の 2 つのテーブルを持つ Store.accdb データベースがあります。テキスト ボックスに顧客の名前 (または名前の一部) を入力し、検索ボタンをクリックしたときに名前を DataGridView に表示できるようにしたいと考えています。そして、別の DataGridView で、ユーザーが [表示] ボタンをクリックしたときに、最初の DataGridView から選択した顧客の注文を表示したいと思います。

編集:これは2つのテーブルがどのように見えるかです

Customers テーブル = custNum、custName、custAddress、custPhone

注文テーブル = orderNum、orderItem、custNum、price、qty

con.ConnectionString = dbProvider & dbSource

    Try
        con.Open()
        sql = "SELECT custName FROM tblCustomers WHERE custName LIKE '%" & tbSearch.Text.ToUpper & "%'"
        ds = New DataSet
        da = New OleDb.OleDbDataAdapter(sql, con)
        da.Fill(ds, "CustomerDataset")
        gridCustomers.DataSource = ds
        gridCustomers.DataMember = "CustomerDataSet"

        con.Close()


    Catch ex As Exception
        MessageBox.Show("Could not establish a connection", "Database Error")
    End Try

このコードは正常に機能し、顧客のデータグリッドビューにデータを入力します。顧客の名前の一部だけを入力すると、複数の行が表示されます。テキスト ボックスに「sm」と入力すると、名前に「sm」が含まれるすべての顧客が表示されます。表示ボタンをクリックしたときに、選択した顧客の (最初の datagridview からの) 注文を 2 番目の datagridview に表示するにはどうすればよいですか? 英語は私の母国語ではないので、ご容赦ください。

ありがとう!

4

3 に答える 3

0

ステップ 1 - 動作するクエリを変更します。顧客名だけを選択する代わりに、顧客 ID、またはそのテーブルの主キーを選択します。

ステップ 2 - データを表示するときに、注文を表示する新しいページにリンクするクエリ文字列を含むアンカー タグを追加します。html は次のようになります。

<a href="orders.aspx?customer_id=1">Fred</a>

orders.aspx で、customer_id = 1 のすべての注文を返すクエリを呼び出します。

ところで、すべてのフォーム変数と URL 変数をパラメーターに変換してから、データベースに送信してください。

于 2013-02-17T04:48:01.877 に答える
0

実際には、2 つのテーブル間に「外部キー」を定義するだけで済みます。方法については、この記事を参照してください。

www.codeproject.com/Articles/28273/Xml-Database-Demo

「 DataTable リレーションの追加」セクションをお読みください。

Access でデータベースを作成した場合は、同じことを行う必要があります。SQL を使用している場合も同様です。

于 2013-02-17T20:56:28.143 に答える
0

多くのイベントで遊ぶ必要があります。から顧客を選択するときdatagridviewは、イベントを使用するdatagridview's selectedIndexChange必要があります(選択するボタンがあると仮定しますdatagridview) イベント
でも同じ手順を使用する必要がありますdatagridview's selectedIndexChange

con.ConnectionString = dbProvider & dbSource

Try
    con.Open()
    sql = "SELECT * FROM tblorders WHERE custName ='" & gridSelectedValue & "'"
    //Assuming you have custName column in order table
    ds = New DataSet
    da = New OleDb.OleDbDataAdapter(sql, con)
    da.Fill(ds, "OrderDataset")
    gridCustomers.DataSource = ds
    gridCustomers.DataMember = "OrderDataset"

    con.Close()


Catch ex As Exception
    MessageBox.Show(ex.message)
End Try

編集
順番に custName がない場合は、DataGridView のクエリに CustNum が必要です

于 2013-02-17T02:41:21.490 に答える