• 締切済み

データグリッドの項目をクリックする

VB初心者です。 WinXP:VB2003:MSDE 顧客マスタテーブル(c-table) c-id c-name c01 suzuki c02 tanaka c03 yamada 商品マスタテーブル(g-table) g-id g-name g-bikoh g01 suzu aa g02 boushi bb g03 chair cc 販売テーブル(s-table) c-id g-id c01 g01 c01 g02 c03 g01 c01 g03 c02 g01 c03 g01 このようなテーブルがあって、Form1で顧客マスタをデータグリッドに 表示させ、任意の顧客を選択しクリックするか、任意の顧客を選択し 「一覧ボタン」をクリックすることで、その顧客が購入した商品の 一覧を新たなForm2のデータグリッドに一覧で表示させ、 さらに商品ID をクリックすることで、その商品の名前(g-name)や備考欄 (g-bikoh)を新たなフォームForm3でデータグリッドに一覧表示させたく思っています。 Form1で顧客マスタテーブル内の顧客を絞り込むことはできますが、それ以降が できません。 これだけの情報では難しいかと思いますが、よろしくお願いいたします。

みんなの回答

回答No.1

今テスト環境ではないので、簡単ですが。。。 form1 Loadイベント dim frm2 as new form2 frm2.show 絞り込みボタンのクリックイベントに以下を記入 dim c-name as string c-name = datagrid1.item(datagrid1.CurrentRowIndex,1) frm2.Shiborikomi(c-name) form2 public sub Shiborikomi(name as string) dim selectionString as string = "g-name = " & name datatable2.select(selectionString) end sub これでForm1とForm2で連携できます。 同じような考え方でForm2とForm3で連携すれば大丈夫だと思います。

関連するQ&A

  • 検索機能(データグリッド)

    こんにちは やりたいこと説明させていただきます。 .NET2003(VB) DB: Access 検索ページ テキストボックス、コンボボックス 検索結果一覧 データグリッド DB(Access) テーブルA(A1,A2,A3) テーブルB(B1,B2,B3) テーブルC(C1,C2,C3) *テキストボックスなど検索条件なしの場合は テーブルA,B,CのA1,B1,C1,C2,C3の それぞれのデータをデータグリッドに表示 テキストボックスなど検索条件ありの場合は *検索条件に合わせてデータをデータグリッドに表示 テーブルA,B,CのViewを作って、表示したほうが簡単ですか。 また、その場合はAccessで直接に作るんですか。 よろしくお願いします。

  • データグリッドにdataを表示する方法をおしえて?

    vb.net 超初心者です。 datagrid(データグリッド)にdataを表示する方法を教えてください。 テーブル:社員テーブル 社員コード 社員名 001 あいうえお 002 かきくけこ 003 さしすせそ ---------------------- | [BOTTON1] | | | | [社員コード] [社員名] | | 001 あいうえお | | 002 かきくけこ | | 003 さしすせそ | ----------------------- [BOTTON1]をクリックすると上のように表示。 できれば、DATASETを使用した場合と、使用しない場合の2種類の方法をおしえてください。

  • Access、同じテーブルの2つの項目対他のテーブルで1つの項目のリレーションは可能?

    Accessで販売管理をしています。 以下のテーブルを作成し(*は主キーです)、 [売上T]  [商品M]  [顧客M]  [受注T] *売上NO  *商品ID  *顧客ID1  *受注NO 商品ID   商品名    *顧客ID2  商品ID 日付    顧客ID1     顧客名    受注日 金額    顧客ID2            受注金額        受注先1        受注先2 参照整合性にチェックを入れリレーションでつないでいます。 リレーションシップは下記のとおりです。 [売上T]商品ID―[商品M]商品ID―[受注T]商品ID [商品M]顧客ID1及び2―[顧客M]顧客ID1及び2―[商品M]受注先1及び2 ここで顧客と受注先が重複することもあるので、顧客Mから顧客ID及び受注先IDの2つのテーブルにリレーションシップを設定しているのですが、 クエリで  [受注T]受注NO及び受注金額、[顧客M]顧客名で抽出したところ、 5000件以上[受注T]にデータがあるはずのものが、1200件ほどしか抽出できませんでした。 ちなみに[顧客M]と[受注用顧客M]というまったく別のテーブルを作成し、 [商品M]受注先1及び2―[受注用顧客M]顧客ID1及び2 とリレーションを作成し、クエリで抽出するとうまくいきました。 しかしこの方法だと、[顧客M]と[受注用顧客M]という2つのテーブルを管理しなければならなくなるので面倒です。 そこで質問です。 同じテーブルの2つの項目対他のテーブルの1つの項目とでは、うまくリレーションが設定できないのでしょうか。 もし出来ない場合、[顧客M]と[受注用顧客M]の2つのテーブルを管理しなければならない訳ですが、 なんとか簡単に管理できる方法(ひとつのテーブルを変更すると簡単にもうひとつが変更できる設定)はないでしょうか。 非常にわかりにくく長い文章で申し訳ありません。 VBA等はさっぱりわかりませんので、普通の設定の範囲内で、できるかどうかよろしくお願いします。

  • エラーが出ます

    Stressmanと言います。 ACCESS2002を使っています。 今、「報告書」というフォームから「顧客」というフォームを開きます。 「顧客」フォームにはサブフォームとして「顧客一覧」のデータシート が組み込まれています。 「顧客一覧」の該当する行をダブルクリックしたら、フォームを閉じて、 「報告書」フォームの「顧客ID」にダブルクリックした顧客の「顧客ID」 がコピーされる。っていうのを実現させようとしています。 下記がそのコードです。 まず「報告書」フォームのコマンドボタンに下記のコードを設定 「顧客」フォームを開きます。 Private Sub コマンド110_Click() DoCmd.OpenForm "顧客", , , , acFormAdd, , Me.Name End Sub そして、「顧客」のサブフォームの「顧客一覧」(データシート)の ダブルクリックのイベントのところに下記のコードを設定 Private Sub Form_DblClick(Cancel As Integer) Dim strFormName As String strFormName = Me.OpenArgs ← エラー Forms(strFormName).[顧客ID] = Me.[Frm_04顧客マスタ_サブフォーム].Form.[顧客ID] DoCmd.Close acForm, Me.Name End Sub エラーがでるのがここです。 どうやら、Me.OpenArgsの値がNullらしいのですが、 どうやって回避すればいいのか、分かりません。 分かりにくい説明ですが、宜しくお願いします

  • COUNTについて

    今2つのテーブル(table1には商品IDと商品名、table2にはレシートIDと商品ID)を用い、 table1にある商品がtable2に何回登場しているかCOUNTを用いて数えたいのですが、 1回も登場しない商品が結果に表示されなくて困っています。 以下の様なテーブルを用いています。 [table1] 項目:item_id(主キー)|name 0|"item0" 1|"item1" 2|"item2" [table2] 項目:detail_id(主キー)|item_id(外部キー) 0|0 1|0 2|1 このとき、 SELECT table1.name,COUNT(*) FROM table1,table2 WHERE table1.item_id = table2.item_id GROUP BY table1.name; のようなSQL文だと、結果にitem2が含まれず、 item0とitem1の登場回数だけ表示されてしまいます。 これをitem2は0回登場していることがわかるように出力したいのですが、 どうしたらいいでしょうか。

    • ベストアンサー
    • MySQL
  • ,netのデータグリッドの使い方教えてください!!

    VB.netで、ACCESSのデータベースと接続して、ブラウザ上に表示するシステムを作成しているのですが、その中で「データグリッド」(以下DG)なるコントロールを使用しているのですが、確かにDBの情報をそのままDGに表示はしてくれるのですが・・。 1、任意の値をDG上に入力することはできないのでしょうか・・?(例えばセルを指定して・・とか) 2、データベースからDG上に書き込む段階で、表示内容を変える事は可能でしょうか?(例えば、データベースでは、1,2,3・・と管理していますが、画面表示では、1=売上前 2=売上中 3=売上後・・・と表示したいです。) 3、上記の作業がDG上では不可能な際、それに変わるコントロールは存在するのでしょうか?(データテーブルやデータリスト等・・・) 初心者なので勉強不足なのですが、どなたかご教授ください。

  • left outer joinが上手くいきません

    四つのテーブルに分かれたデータを、結合しつつ、結合後のテーブルのデータがチェック用テーブルに含まれていないものを抽出したいのですが、left outer joinなど色々ためしても、構文エラーなどになって上手くいきません。 具体的に書くと、 【顧客名テーブル:customer】 顧客ID:customer_id 顧客コード:customer_code 顧客名:customer_name 【最新申込みテーブル:recently】 顧客ID:customer_id 日付:order_date 【過去申込みテーブル:old】 顧客ID1:customer_id1 顧客ID2:customer_id2 日付:order_date 【チェック用テーブル:check】 顧客コード:customer_code 顧客名:customer_name とあるとします。 【最新購入テーブル】と【過去購入テーブル】の両方の顧客IDを抽出し、【顧客名テーブル】の顧客IDと紐付けしてから、顧客コードの一覧を作り、【チェック用テーブル】の顧客コードに含まれない、【顧客名テーブル】の顧客コードを一覧で出力したいのですが、なかなか上手くいかなくて困っています。 ややこしいのは、【過去購入テーブル】の中に含まれる顧客ID1、顧客ID2ともに、フィールド名は違いますが、登録されるデータは、【顧客名テーブル】の顧客IDと同じになるので、【最新購入テーブル】と【過去購入テーブル】で抽出する顧客ID一覧は、 顧客ID:customer_id 顧客ID1:customer_id1 顧客ID2:customer_id2 の三つになります。 UNIONなどで結合した顧客ID一覧を【顧客名テーブル】とつないで顧客コードを出して...など色々やってはみましたが、構文エラーが多く、そもそもどこが間違っているかもよくわからなくて、困っています(>_<)

    • ベストアンサー
    • MySQL
  • Aceess 特定項目のみ削除

    顧客テーブルがあるとします。 IDは数値型です。 他に、このテーブルデータをソースにした入力用のメインフォーム(新規作成、削除、編集可能)と、テーブルデータを一覧できるサブフォームがあります。 サブフォームでデータを選択→メインフォームに転記し、各処理を行う感じです。 削除する際、IDのみ残し会社名のみの削除だけを行いたいです。 【削除するコード】 If DCount("顧客ID", "T顧客情報マスタ", "[顧客ID]= " & Me!txt顧客ID & "") Then 'OKを押した場合、テーブルにある同一IDを削除する If MsgBox("表示されているデータを削除しますがよろしいですか?", vbOKCancel, "削除") = vbOK Then DoCmd.RunSQL ("delete * from T顧客情報マスタ where 顧客ID = " & Me!txt顧客ID & "")    ’欠番発生させない処理 Call 顧客編集_ID 【欠番防止のコード】 '各テーブルにIDが0ではない場合、ナンバーを再振りする If RS.RecordCount <> 0 Then 'レコード参照をループ Do Until RS.EOF RS.Edit RS!顧客ID = RSNum RS.Update RSNum = RSNum + 1 RS.MoveNext Loop 非連結で行ったところ、規定値を1にしたら全データ削除した場合のみうまくいきましたが、新規作成で1~3の番号のデータがある場合でも新規の行が1表示になりました。(当たり前なんですが…) テーブルに連結しているため、テキストボックスに値を代入もできません。 そのため、IDが1を削除の場合のみIDのみ値を保持し、他項目のみ削除させたいです。 ご教示お願いいたします。

  • SQLを教えて下さい

    SQL文を教えて下さい 以下の2つのテーブルがあります。 TABLE1 --------------- ID,NAME,PRICE --------------- 1,部品A,100 2,部品B,200 3,部品C,300 TABLE2 --------------- ID,NAME,PRICE --------------- 1,部品Aのサブ1,1 1,部品Aのサブ2,2 2,部品Bのサブ1,5 2,部品Bのサブ2,5 --------------- SELECT TABLE1.NAME TABLE2.NAME TABLE1.PRICE TABLE2.PRICE WHERE TABLE1.ID = TABLE2.ID(+) TABLE2.PRICE = (SELECT MAX(?) ?) 期待する結果 ・TABLE1.NAME = 部品Aの場合 --------------- 部品A,部品Aのサブ2,100,2 ・TABLE1.NAME = 部品Bの場合 --------------- 部品B,部品Bのサブ1,200,5 TABLE1.NAME = 部品Cの場合 --------------- 部品C,,300, ・TABLE1のNAMEに、TABLE2のNAMEが関連付く(付かないものもある) ・外部結合とMAX関数を用いたい。 ・TABLE2のPRICEが大きい方を取得(同一の場合は、どちらかを取得)

  • SQLで・・

    すみません、教えてください。 次のようなデータがあります。 table_A Name1 Name2 ----------- 1   2 3   4 table_B ID    Name --------------- 1     あ 2     い 3     う 4     え 次のような検索結果が欲しいとします。 Name1 Name2 ------------- あ    い う    え この結果を導くSELECT文はどう書けばいいでしょうか? 今、 select B.Name as Name1, C.Name as Name2 from table_A A, table_B B, table_B C where A.Name1=B.ID AND A.Name2=C.ID とやってみましたが、検索結果は0件になってしまいます。 お知恵をお貸しください!

専門家に質問してみよう