C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

データテーブルの名前について2


(過去ログ 3 を表示中)

[トピック内 5 記事 (1 - 5 表示)]  << 0 >>

■3628 / inTopicNo.1)  データテーブルの名前について2
  
□投稿者/ まじん 一等兵(24回)-(2006/05/17(Wed) 00:10:37)

分類:[VB.NET] 


分類:[VB.NET] 

何度も申し訳ございません もう一つお願いいたします。

下記のように すべてコードでデータをセレクトする場合のテーブル名は
コードのどこかで 指定できるのでしょうか?

Dim cn As Data.OleDb.OleDbConnection = New Data.OleDb.OleDbConnection
Dim da As Data.OleDb.OleDbDataAdapter = New Data.OleDb.OleDbDataAdapter
Dim cmd As Data.OleDb.OleDbCommand = New Data.OleDb.OleDbCommand
Dim ds As DataSet = New DataSet

cn.ConnectionString = "・・・・・・・・・・・"
cmd.CommandText = "SELECT [テーブル1].ID, [テーブル1].Name, [テーブル2]." & _
"電話番号, [テーブル3].背番号 FROM (([テーブル1]" & _
" INNER JOIN [テーブル2] ON [テーブル1].ID = [テーブル2].No)" & _
" INNER JOIN [テーブル3] ON [テーブル1].ID = [テーブル3].No)"

da.SelectCommand = cmd
cmd.Connection = cn
da.Fill(ds, "テーブル1")
cn.Close()

da.fill(ds,"○○○")の○○○の部分です。



0
引用返信 編集キー/
■3629 / inTopicNo.2)  Re[1]: データテーブルの名前について2
□投稿者/ 中博俊 神(425回)-(2006/05/17(Wed) 00:26:19)
中博俊 さんの Web サイト

分類:[VB.NET] 

無理でしょ。
型指定しないデータセット使わないのでわからないけど通常Tables[0]っていうやりかたしか使ったこと無い。

0
引用返信 編集キー/
■3631 / inTopicNo.3)  Re[2]: データテーブルの名前について2
□投稿者/ まじん 一等兵(25回)-(2006/05/17(Wed) 09:16:25)

分類:[VB.NET] 

No3629に返信(中博俊さんの記事)
> 無理でしょ。
> 型指定しないデータセット使わないのでわからないけど通常Tables[0]っていうやりかたしか使ったこと無い。

いつもありがとうございます
たいへん嬉しいです それが知りたかったんです。

 殆どの場合、データの検索や更新に使うツールを別のクラスに作っておき、そのクラスに前記のようなコードを入れてます
 それを他のフォームで流用するようにしてます(それが良いのか悪いのか練習を兼ねて) そのクラスを作る時に複数のデータを結合させる時にはどのテーブル名で出来上がるのか分からなくて、わざわざ他のフォームで先にデータセットの生成までやってみて、出来たテーブル名を前記コードの○○部分に入れて完成させてました。コマンドテキストやコネクションストリングなども実際にデータアダプターの構成までやってから自動作成されるコマンドテキストやパラメーターなどのコードを見に行き、それに少しだけ自分で分かる範囲で改良を加え(where ・・など)
殆どコピペして使ってました
 プロの方から見ると 全く馬鹿なやり方なんだと思いますが 私にとってはあの自動作成が非常に便利な機能で エクセルのVBAのマクロ自動作成のような感覚で使ってます(2005になってからコマンドテキストなどは.resxファイルに書き込まれるようになったようで少し使い辛いですが)

 話が長くなってしまいました 書いていただいた Table[0]、
これが 分からなかったんです
 da.Fill(ds.Tables(0))と書くと「テーブル0がみつかりません」と出るので
どう書けば良いのかと悩んでました

  da.Fill(ds, "Tables[0]")

これでいけたのですが これで良かったんでしょうか?




0
引用返信 編集キー/
■3633 / inTopicNo.4)  Re[1]: データテーブルの名前について2
□投稿者/ なおこ(・∀・) 二等兵(3回)-(2006/05/17(Wed) 09:56:13)
なおこ(・∀・) さんの Web サイト

分類:[VB.NET] 

2006/05/17(Wed) 09:57:00 編集(投稿者)

お世話になります。

No3628に返信(まじんさんの記事)
型指定の無いデータセットの場合、Fill の第 2 引数で何も指定しなかった場合は
Dataset 内部のテーブル名は、Table, Table1, Table2 ...
と連番(?)で付けられていたような。

もし、Fill(ds, "wankuma")
とやれば、ds.Tables(0).TableName は "wankuma" のはずです。

一応、私がテスト用に作成したコードを張っておきますね。
参考になればよいのですが...

Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click

  Dim ds As DataSet = New DataSet
  Dim sqlConn As SqlClient.SqlConnection _
      = New SqlClient.SqlConnection("Server=(local);Database=NorthWind;Trusted_Connection=True;")
  Dim sqlDa As SqlClient.SqlDataAdapter

  sqlConn.Open()
  Try
    sqlDa = New SqlClient.SqlDataAdapter
    Try
      sqlDa.SelectCommand = New SqlClient.SqlCommand
      sqlDa.SelectCommand.Connection = sqlConn
      sqlDa.SelectCommand.CommandType = CommandType.Text
      sqlDa.SelectCommand.CommandText = _
      "SELECT * FROM [Orders] INNER JOIN [Order Details] ON [Orders].OrderID = [Order Details].OrderID "

      sqlDa.Fill(ds, "wankuma")
      Me.DataGridView1.DataSource = ds
      Me.DataGridView1.DataMember = ds.Tables(0).TableName 'コレは wankuma になる。
    Finally
      If Not sqlDa Is Nothing Then sqlDa.Dispose()
    End Try
  Finally
    If sqlConn IsNot Nothing Then sqlConn.Close()
    If sqlConn IsNot Nothing Then sqlConn.Dispose()
  End Try

End Sub


0
引用返信 編集キー/
■3634 / inTopicNo.5)  Re[2]: データテーブルの名前について2
□投稿者/ まじん 一等兵(26回)-(2006/05/17(Wed) 10:27:30)

分類:[VB.NET] 

No3633に返信(なおこ(・∀・)さんの記事)
いつもありがとうございます

> もし、Fill(ds, "wankuma")
> とやれば、ds.Tables(0).TableName は "wankuma" のはずです。

そうなんですね 上の"wankuma"の部分は なんでも良かったんですね
好きな名前を付けられました"aa"でも"bb"でも

> 一応、私がテスト用に作成したコードを張っておきますね。
> 参考になればよいのですが...

大変参考になりました ありがとうございました
解決とさせて頂きます。


解決済み
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -