none
DataGridのすべてのレコードをテーブルに追加したい RRS feed

  • 質問

  • こんにちは!

    どなたかご存知の方がいらっしゃるなら、よろしくお願いします。

     

    今、フォームにはボタン1個とDataGridが表示されています。(DataGridにはすでにレコードが表示されている。)

    流れ

    1.ボタンクリック

    2.既存テーブルを削除する(テーブル名:tblTest)

    3.削除されたテーブルと同じテーブル名で新規にテーブルを作成する。(テーブル名:tblTest)

    4.DataGridのすべてのレコードを、新規に作成された tblTestに追加する。

     

    ■現状

    2と3は、VB.NETリファレンスにあったので、解決できましたが、

    メインの4に関してはどうやってコーディングをするか目途がついてません。

    考えられる方法は、Insert文をDataGrid行数分Forループで回して、テーブルに追加する方法です。

    しかし、この方法だと、DataGrid行数が少ない時は、問題ないかもしれないのですが、

    一旦レコード数が多くなると動きが遅くなるので、なるべくこの方法は避けたいと考えています。

     

     

    ご教授、よろしくお願いします。

     

     

     

     

    2007年11月7日 8:49

回答

  • DataGridのデータソースは何でしょうか? もし、データテーブルならCopyメソッドが使えますが、データソースが無いのであれば、書かれているようにForで回すしかないと思います。
    2007年11月7日 10:50
    モデレータ

すべての返信

  • DataGridのデータソースは何でしょうか? もし、データテーブルならCopyメソッドが使えますが、データソースが無いのであれば、書かれているようにForで回すしかないと思います。
    2007年11月7日 10:50
    モデレータ
  •  

    確かに、DataGrid.DataSouce = DataTabl で一覧を表示させました。

     

     trapemiya さんからの引用
    DataGridのデータソースは何でしょうか? 

    もし、データテーブルならCopyメソッドが使えますが、。

     

    ということは、DataSouceにセットしたDataTableをコピーしてくるという話ですよね?

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

     

    データテーブルのCopyメソッドを使えばできそうですが、それならもう1個問題点がありました。

     

      Me.DataGrid.DataSource = dtTbl        'この時点で、最初のNo列はフィールド名が「No」になっている空の列です。

                              'そのため、下でNo列に連番を振っています。

        '最初のNoに連番セット
         For i = 0 To dtTbl.Rows.Count - 1
               Me.dg見積.Item(i, 0) = i + 1
         Next

     

    この場合ならば、やはりForでInsert文を回すしかないみたいですね!

     

    アドバイス、ありがとうございました。

    2007年11月8日 1:00