• 締切済み

DataSetの複数テーブルをひとつのDataGridViewでまとめて出したい

こんにちは、いつも参考にさせていただいています。 VS2005のC#で制作しているのですが、 ひとつのデータセットの中に3つのテーブルがあります。 そのテーブル全てをデータグリッドビューでだしたいのですが、 ひとつのテーブルしか上手に出ません。 3つのテーブルをひとつのグリッドビューに出す方法を教えてください。 現状は以下のコードで一つのテーブルだけ表示しています。 dv = new DataView(dataset.Tables["data"], "", "", DataViewRowState.CurrentRows); dataGridView1.DataSource = dv;

みんなの回答

  • redfox63
  • ベストアンサー率71% (1325/1856)
回答No.1

DataTableのMergeが使えるか検討してみましょう 最低限の情報は公開しましょう 3つのテーブルがあるならそのテーブル構造がどのようになっているのか程度は必要な情報だと思いますよ

関連するQ&A

  • C#での複数フィールドの条件付き抽出について

    Visual C# 2010 Expressと.NET Framework 4.5での質問です。 Accessデータベースの複数のフィールドに対して条件をつけて検索したいと思っています。 dView = new DataView(dSet.Tables["t_" + (テーブル名)] ,"(フィールド1に対する条件式)" , "", DataViewRowState.CurrentRows); dView = new DataView(dSet.Tables["t_" + (テーブル名)] , "(フィールド2に対する条件式)", "", DataViewRowState.CurrentRows); this.dataGridView2.DataSource = dView; 参照元のテーブル名が同じであるためか、これを実行すると後半のフィールド2に対する 条件式を満たすレコードがすべてdataGridViewに表示される結果になります。 両方の条件を満たすレコードだけを表示するにはどうしたらいいでしょうか。 C#などの本でも、データベースに関してはそれほど詳しくは書いていないので困っています・・・。 どうか、よろしくお願いします。

  • DataGridViewでのデータ抽出について

    C#からAccessデータベースを呼び出し、それをDataGridViewに表示しました。 その上で、条件に合うレコードのみを表示するコードを書こうとしました。 元のAccessのフィールドにはテキスト型のデータが入っています。         DataView dView; dView = new DataView(dSet.Tables["t_" + (テーブル名)] , "フィールド名=" + (文字列型変数), "", DataViewRowState.CurrentRows); dataGridView.RowHeadersVisible = false; this.dataGridView2.DataSource = dView; これをデバッグすると、2行目で、EvaluateExceptionはハンドルされませんでした。というエラーが出ます。 列[「(文字列型変数)]は見つかりません」という内容です。 これを回避して、フィールドに特定の文字列が入っているレコードを抽出して、DateGridViewに表示させる 方法はないでしょうか。 ちなみに数値型のレコードを抽出することはできているレベルです。 また、フィールドに日付が入っているような場合、ある期間内のレコードを抽出するやり方を ご存知のかたがおりましたら、お教え願います。 (直接のやり方でなくても、「この本が良い」というようなアドバイスでも大いに助かります)。 どうかよろしくお願いします。

  • datagridview で昇順に

    vbを始めたばかりですが、 教えてください(2005) datagridview で大きい順にならべたいのですが、 Dim Table As DataTable = DirectCast(DataGridView2.DataSource, DataTable) Dim View As DataView = Table.DefaultView View.Sort = "A寸法" だと小さい順になってしまいます。 大きい順にするにはどうすればよいのでしょうか? よろしくお願いします。

  • C#でAccessの日時検索方法

    Visual C# 2010 Express, .NET Framework 4.5を使っています。 Accessデータベース内のある期間内(DateTime型フィールド)のレコードだけをDataGridViewに 表示させようとしています。 dView = new DataView(dSet.Tables["t_" + (テーブル名)] , "日付>" + startday.ToString("yyyy/MM/dd"), "", DataViewRowState.CurrentRows); dView = new DataView(dSet.Tables["t_" + (テーブル名)] , "日付<" + endday.ToString("yyyy/MM/dd"), "", DataViewRowState.CurrentRows); これを実行すると、論理演算子は使えないというようなエラーが出ます。 startday, enddayはDatetimePickerコントロールから値を取得しています。 これを解決するにはどうすればいいのでしょうか。 そもそも根本的に考え方を変えなければいけないのでしょうか。 説明がわかりづらいかもしれませんが、どなたかお教えください。 よろしくお願いします。

  • DataSetの内容がDataGridViewに反映されない

    現在、VB2005でアプリケーションの開発をしているのですが DataSetの内容がDataGridViewに反映されなくて困っています。 表示させたいデータをデータセットにとってくるところは問題ないようで 1回目は上手く表示されるのですが、データセットの中身を変更して セットし直しても表示が変わりません。 以下がソースを抜き出したものになります。 Grid.DataSource = Nothing Grid.DataMember = Nothing Grid.DataSource = DataSet Grid.DataMember = "M_kbn" よろしくお願いします。

  • DataSetについて

    下記のようなDataSetを使用した処理質問致します。 TableAdapterのデザイン時にてSELECTCommandで SELECT 'AA' AS 名前 FROM M_マスタ と、記述してDataGridView1に反映しようとしても実際にテーブルに入っているデータがそのまま表示されてしまいます。 このように固定の値を取得する方法はどのようにしたらよろしいのでしょうか?そもそもできないのでしょうか? Dim ds As New DataSet1 Dim Ta As New DataSet1TableAdapters.M_マスタTableAdapter 'テーブルアダプタを利用してデータを読み込む Ta.Fill(ds.M_マスタ) Me.DataGridView1.DataSource = ds Me.DataGridView1.DataMember = "M_マスタ"

  • VB2005のデータグリッドビューとデータテーブルについて

    いつもお世話になっています。 独学でVBの勉強をしているのですが、 どうしてもわからないことがあるので教えて下さい。 現在行なおうとしていることは、 mdbからデータテーブルにレコードを取得して、 それをデータグリッドビューに設定し、 値の一部をコードで変更するということです。 DataGridView1.DataSource = DataTable1 とすれば、データテーブルのデータを データグリッドビューにて表示させることができるのですが、 コードでデータグリッドビューの値を変更すると、 データテーブルの値も一緒に変更されてしまうんです。 DataGridView1.DataSource = DataTable1.Clone とすると、今度はレコードが表示されなくなってしまって・・・ 何か良い方法がありましたら、教えて下さい。 よろしくお願いします。

  • c#によるdatasetからdatagridviewの操作

    C#を始めたばかりの初心者です。 今いろいろ最初からボタンをセットしたり徐々に進んでいるのですが、今datasetとdatagridviewの場所でつまずいています。 デザイン上でデータセットをセットしdatatableテーブル名(abc)をつけcolumnにa,b,c,d,eと5つ列を追加しました。 そしてdatagridviewを制作しデータソースの選択で上記で作ったdatasetを割り当てました。 そのあとが質問なのですが、datasetにa,b,c,d,eにデータをtextboxから5個入力し。datasetに追加できたら次々とdatagridviewに表示させていき、ある程度までたまったら選択した行のeを更新してみたいのですが。 インターネットを探しているとmdbなどアクセスなどとつなげてるのが多かったのですが、アクセスなどのソフトとつなげないとこの内容は無理だったりするのでしょうか。 Visual C#2005逆引き大全で勉強しているのですがもしよければプログラミング方法など教えていただけたら幸いです。

  • DataGridViewに関して

    開発:Visual Basic 2008 考え方の質問になってしまうかもしれませんが教えて下さい。 Datagridviewを用いて、データの入力をさせたいと考えています。 但し、入力だけでなく画面にある表示ボタンを押した際には、テーブルに格納されている データを検索しに行き、その内容を表示させたいと考えています。 Datagridviewはフォームに貼り付け、各項目を一つずつ作成してあります。 しかし、この場合、以下のような記述をすると(そもそも記述が違うかと思われますが・・・)、 もともと作成してある項目(列)にデータがセットされず、新規で列を作ってしまいます。 《記述内容》 '変数の宣言 Dim dtSet As DataSet = New DataSet("PRODUCTS") Dim dtTable As DataTable 'データセットにテーブルを追加する dtTable = dtSet.Tables.Add("A_TBL") 'テーブルにフィールドを追加する '.Add("フィールド名", フィールドの型)で追加します dtTable.Columns.Add("AAA", Type.GetType("System.String")) Dim data_row As DataRow = dtTable.NewRow() data_row("AAA") = PIN_AAA dtTable.Rows.Add(data_row) 'DataGridにデータを表示する G_BBB.DataSource = dtSet.Tables(0) そもそもDatagridviewを用いて、入力や表示を行うにはどのような形にするのが 良いのでしょうか? Datasetとか使う? 教えて頂きたいと思います。 よろしくお願いします。

  • VB DataGridView 行削除

    Visualbasic 2010 を利用してWindowsFormアプリケーションを開発しております。 データベースはORACLE11を利用しております。 VB側よりOracleDataAdapterを利用してDatatableにORACLEのSELECT結果を格納しています。 DataGridViewには上記のDataTableをDataSourceとして割り当てております。 このDataGridViewに並び替え機能を組み込んでおります。 ※DataViewのSortを利用して並び替えを実現しております。 この後にDataGridViewの行削除を行うと以下の例外が発生します。 一意制約(XXX.PKY_テストデータ)に反しています Oracle.DataAccess.Client.OracleException これはDataTableをSortしたためOracleDataAdapterと一致しなくなったことが原因ではないかと推測しております。 DataGridViewの並び替えを行っても正常に行削除を行いDataTableにも反映する方法が分る方がいらっしゃいましたらご教授頂けないでしょうか。 VBソース抜粋 ・データ抽出 '/ SQLをOracleで実行した結果をデータアダプタに格納 Dadp5 = New OracleDataAdapter("SELECT * from テストデータ", CONFIG.Database) Dadp5.Fill(dt_test) Me.DataGridView_TEST.DataSource = dt_test ・並び替え(降順) Dim dv = New DataView(dt_test) dv.Sort = "テストコード DESC" dt_test = dv.ToTable Me.H_DataGridView_test.DataSource = dt_test ・行削除 Dim scBuilder As New OracleCommandBuilder(Dadp5) '/ データグリッドビューの編集内容をデータベースへ反映 '/ 生成されたSQLを実行する Dadp5.Update(dt_test) ※ここで例外が発生致します。 お手数おかけ致しますが宜しくお願い致します。 以上です。

専門家に質問してみよう