- PR -

DataTable型をDataSet型に変換したい

投稿者投稿内容
nori
ベテラン
会議室デビュー日: 2004/09/02
投稿数: 56
投稿日時: 2005-09-09 10:59
いつもお世話になります。
またわからないことが出てきたので、よろしくお願いいたします。
WebアプリでVB.netです。

最終的にやりたいことは、ソート機能を備えたDataGridを表示することです。

しかし、DataGridのDataSourceが簡単にSQLで取得できないので、
下記のようにテーブルを作成して値をセットすることにしました。
--------------------------------------------------------------------------
Private Function Create_DataSource()
  Dim oTable As New DataTable
  Dim oColumn As DataColumn
  oColumn = New DataColumn("SINSEI_YMD", GetType(String))
  oTable.Columns.Add(oColumn)
  oColumn = New DataColumn("SINSEI_NO", GetType(String))
  oTable.Columns.Add(oColumn)
  ・・・・・・・・・・・・・
  テーブルに値をセット
  ・・・・・・・・・・・・・
  Return oTable
End Function
--------------------------------------------------------------------------

BindGridは以下のように作成しています。
--------------------------------------------------------------------------
Private Function BindGrid(・・・・・・・・・・・・・・・・)
  Dim ds As New DataSet
  Dim dv As New DataView
  Dim oTable As New DataTable

  oTable = Create_DataSource()  ←ここで作成したテーブルを取得

  ■■■■■■■■■■■■■■■ ←DataTableをDataSetに変換するロジック

  dv = ds.Tables(0).DefaultView ←SQLで簡単に取得できるときは
  dv.Sort = strSort        このようにやってました。
  With DataGrid1
    .DataSource = dv
    .DataBind()
  End With
End Function
--------------------------------------------------------------------------

■■■■■のところでDataSet型に変換したいのですが、どのようにすれば
よいのでしょうか?

いつも質問ばかりで申し訳ありませんが、どうぞよろしくお願いいたします。
じゃんぬねっと
ぬし
会議室デビュー日: 2004/12/22
投稿数: 7811
お住まい・勤務地: 愛知県名古屋市
投稿日時: 2005-09-09 11:04
DataTable と DataSet がどういう関係かご存知です?
http://www.microsoft.com/japan/msdn/library/default.asp?url=/japan/msdn/library/ja/cpguide/html/cpconaddingdatatabletodataset.asp


_________________
C# と VB.NET の入門サイト
じゃんぬねっと日誌
囚人
ぬし
会議室デビュー日: 2005/08/13
投稿数: 1019
投稿日時: 2005-09-09 11:05
こんにちわ。

何故 DataSet に変えたいのでしょうか?
oTable.DefaultView ではだめですか?
にしざき
ぬし
会議室デビュー日: 2003/06/30
投稿数: 304
投稿日時: 2005-09-09 11:06
単に ds.Tables(0) のかわりに oTable を使うのでは不都合があるのですか?

であれば、最初から DataSet を返すメソッドにするとか。
nori
ベテラン
会議室デビュー日: 2004/09/02
投稿数: 56
投稿日時: 2005-09-09 11:14
じゃんぬねっと様、囚人様、にしざき様

ありがとうございます。
ちょっとお馬鹿な質問をしてしまいました;

ds.Tables(0) はDataSetの中の1つ目のテーブルってことですよね。

お手数をおかけして、ほんとスイマセンでした。
もう少し、頭を柔らかくします☆
nori
ベテラン
会議室デビュー日: 2004/09/02
投稿数: 56
投稿日時: 2005-09-09 16:34
ソート部分でエラーになってしまいます。

エラーメッセージ:列 SINSEI_YMD が見つかりません。

------------------------------------------------------------------
Private Function BindGrid(・・・・・・・・・・・・・・・・)
  Dim ds As New DataSet
  Dim dv As New DataView
  Dim oTable As New DataTable

  oTable = Create_DataSource() 

  dv = oTable.DefaultView
  dv.Sort = strSort    ← ここでエラーになってしまいます。
  With DataGrid1
    .DataSource = dv
    .DataBind()
  End With
End Function
------------------------------------------------------------------

列名を指定してテーブルを作成しているのですが、
プロシジャを跨ぐとダメなのでしょうか?

どうぞよろしくお願い致します。
nori
ベテラン
会議室デビュー日: 2004/09/02
投稿数: 56
投稿日時: 2005-09-09 16:34
ソート部分でエラーになってしまいます。

エラーメッセージ:列 SINSEI_YMD が見つかりません。

------------------------------------------------------------------
Private Function BindGrid(・・・・・・・・・・・・・・・・)
  Dim ds As New DataSet
  Dim dv As New DataView
  Dim oTable As New DataTable

  oTable = Create_DataSource() 

  dv = oTable.DefaultView
  dv.Sort = strSort    ← ここでエラーになってしまいます。
  With DataGrid1
    .DataSource = dv
    .DataBind()
  End With
End Function
------------------------------------------------------------------

列名を指定してテーブルを作成しているのですが、
プロシジャを跨ぐとダメなのでしょうか?

どうぞよろしくお願い致します。
じゃんぬねっと
ぬし
会議室デビュー日: 2004/12/22
投稿数: 7811
お住まい・勤務地: 愛知県名古屋市
投稿日時: 2005-09-09 16:39
こんにちは、じゃんぬ です。

引用:

noriさんの書き込み (2005-09-09 16:34) より:

ソート部分でエラーになってしまいます。
エラーメッセージ:列 SINSEI_YMD が見つかりません。


エラーというか、「例外」が発生するんですね。
例外名も書いた方が回答がつきやすいと思います。

引用:

プロシジャを跨ぐとダメなのでしょうか?


そう思うのであれば、まず中身を確認してみてください。
ds と dv をインスタンス化する意図がわかりませんでしたが...


_________________
C# と VB.NET の入門サイト
じゃんぬねっと日誌

スキルアップ/キャリアアップ(JOB@IT)