tagCANDY CGI VBレスキュー(花ちゃん) の Visual Basic 2010 用 掲示板(VB.NET 掲示板) [ツリー表示へ]   [Home]
一括表示(VB.NET VB2005)
タイトルaccessとsqlserverの組合せ
記事No10665
投稿日: 2012/01/27(Fri) 10:52
投稿者hoido
いつもお世話になっております。
早速ですが、VB2010ExにおいてSQL文を書く際、2つのテーブルを組合せ1つのテーブルを作成する際はLEFT OUTER JOIN等を仕様すれば出来ると思います。
そこで質問なのですが、現在2つのテーブルを1つにまとめたく悩んでいるのですが、1つめのテーブルはACCESSで二つ目のテーブルはSQLSERVER上にあります。
このように形式の違うものをまとめることは出来ないのでしょうか?
ネットで検索しMergeやRelation等も試してみたのですがうまくいきません。
最終的にはまとめたデータをDataGridViewのDatasauceとして使用したいと思っております。
宜しくお願いいたします。

[ツリー表示へ]
タイトルRe: accessとsqlserverの組合せ
記事No10666
投稿日: 2012/01/27(Fri) 13:41
投稿者るしぇ
AccessのリンクテーブルでSQLServerのテーブルにリンクを貼った
テーブルをAccess上に作れますよね?
その後はAccess上のテーブルを2つ扱うようなイメージで処理
できますが、それではだめなんですか?

[ツリー表示へ]
タイトルRe: accessとsqlserverの組合せ
記事No10667
投稿日: 2012/01/27(Fri) 17:16
投稿者魔界の仮面弁士
> このように形式の違うものをまとめることは出来ないのでしょうか?

異種DB間クエリーを作成する方法としては:

(案1)Jet 側で「ODBC リンクテーブル」で SQL Server に ODBC 接続して JOIN する。

(案2)Jet 側で「IN 句(≠ IN 演算子)」にて SQL Server に ODBC 接続して JOIN する。
 http://office.microsoft.com/ja-jp/access-help/HP001032240.aspx

(案3)SQL Server 側で「リンクサーバー」にて Jet に OLE DB 接続して JOIN する。

(案4)SQL Server 側で「OPENROWSET」にて Jet に OLE DB 接続して JOIN する。
 http://uchukamen.com/sql2005/linkedserver/linkedserver.htm

(案5)SQL Server 側で「OPENDATASOURCE」にて Jet に OLE DB 接続して JOIN する。

(案6)一つの DataSet 内に、それぞれから取得した DataTable を用意して、
 それらを Linq to DataSet で Group Join する。
 http://msdn.microsoft.com/ja-jp/library/bb399415.aspx

(案7)一つの DataSet 内に、それぞれから取得した DataTable を用意して、
 そこに Relation を貼ったうえで、テーブルに式列を加えて結合させる。

[ツリー表示へ]
タイトルRe^2: accessとsqlserverの組合せ
記事No10668
投稿日: 2012/01/27(Fri) 21:17
投稿者hoido
るしぇ様、魔界の仮面弁士様回答有難うございました。
Linq to DataSetで挑戦してみようと思います。
有難うございました。

[ツリー表示へ]
タイトルRe^3: accessとsqlserverの組合せ
記事No10669
投稿日: 2012/01/28(Sat) 09:26
投稿者hoido
お世話様です。
早速LINQに挑戦して見ましたがエラーが発生し困ってしまいました。
Dim 表示query = _
    From order In Table.AsEnumerable()
    Group Join detail In MasterData.Tables("指示内容").AsEnumerable()
  On order.Field(Of String)("登録品番1") Equals detail.Field(Of String)("登録品番1")
    Into 生産結果 = Group
    Select New With _
          { _
            .登録品番 = order.Field(Of String)("登録品番1"), _
            .日時 = order.Field(Of String)("日時"), _
            .品名区分 = order.Field(Of String)("品名区分"), _
            .登録品番2 = detail.Field(Of String)("登録品番2") _
              }

     For Each 表示order In 表示query
         表示Row = 表示Table.NewRow
         表示Row.Item(0) = 表示order.登録品番
         表示Row.Item(1) = 表示order.日時
         表示Row.Item(2) = 表示order.品名区分
         表示Row.Item(3) = 表示order.登録品番2
         表示Table.Rows.Add(表示Row)
     Next
上記コードで作成したところ
 .登録品番2 = detail.Field(Of String)("登録品番2") のdetailのところでエラーになります。
コードを見直してみると、1つ目のテーブルは選択できて、2つ目のテーブルは選択できません。
2つ目のテーブル内のデータを表示させたい場合はどの様に書けばよいのでしょうか?

[ツリー表示へ]