tagCANDY CGI VBレスキュー(花ちゃん) の Visual Basic 2010 用 掲示板(VB.NET 掲示板) [ツリー表示へ]   [Home]
一括表示(VB.NET VB2005)
タイトルテーブル連結 表示ができません
記事No7978
投稿日: 2008/08/21(Thu) 13:04
投稿者monmon

 いつもお世話になっています。

 VB2008 を使用し、アクセスdataを処理しています。
 今回は、left join を使用し、図書DATAテーブルと図書貸出テーブルをコードで
 リンクし、DataGridViewに表示しようとしましたが、できませんでした。
 
   dAdp.Fill(dSet, "図書DATA")などのテーブルに問題があるのでしょうか。
 ご指導いただければ幸いです。

       filexx = tosyodir & "\tosyo2000\t図書DATA.ac2"
        Dim cn As New OleDb.OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0_
         ;" & "Data Source=" & filexx & ";")

        Dim cmd As New OleDb.OleDbCommand(sel, cn)
        cn.Open()

        Dim dAdp As OleDb.OleDbDataAdapter
        Dim dSet As DataSet = New DataSet("図書DATA")
    sel = "SELECT 図書DATA.登録番号, 図書DATA.書名, 図書DATA.コード_
     図書貸出.貸出日,図書貸出.コード FROM 図書DATA left JOIN 図書貸出 ON _
     図書DATA.コード = 図書貸出.コード order  BY 図書DATA.登録番号;"

        dAdp = New OleDb.OleDbDataAdapter(sel, cn)

        dAdp.Fill(dSet, "図書DATA")
       DataGridView1.DataSource = dSet.Tables("図書DATA")

        datacount = dSet.Tables("図書DATA").Rows.Count
        DataGridView1.Font = New Font("MS ゴシック", 9, FontStyle.Bold)
        DataGridView1.ForeColor = Color.Black

        DataGridView1.Columns(0).Width = 50
        DataGridView1.Columns(1).Width = 220
        DataGridView1.Columns(2).Width = 100

[ツリー表示へ]
タイトルRe: テーブル連結 表示ができません
記事No7981
投稿日: 2008/08/21(Thu) 19:59
投稿者るしぇ
まずは実行しているSQLを直接Accessで実行して
期待通りの結果が取得できているか調べてみては?

[ツリー表示へ]
タイトルRe^2: テーブル連結 表示ができません
記事No7982
投稿日: 2008/08/22(Fri) 08:25
投稿者monmon
> まずは実行しているSQLを直接Accessで実行して
> 期待通りの結果が取得できているか調べてみては?

  これまでVB6で下記のようにしてDATA表示ができました。

Adodc1.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Persist Security Info=False;Data Source=" & tosyodir & "t図書DATA.ac2"

  sel = "SELECT 図書DATA.登録番号, 図書DATA.書名, 図書DATA.コード_
     図書貸出.貸出日,図書貸出.コード FROM 図書DATA left JOIN 図書貸出 ON _
     図書DATA.コード = 図書貸出.コード order  BY 図書DATA.登録番号;"
Adodc1.RecordSource =sel
Adodc1.Refresh
        DataGridView1.Columns(0).Width = 50
        DataGridView1.Columns(1).Width = 220
        DataGridView1.Columns(2).Width = 100
        DataGridView1.Columns(3).Width = 100

vb2008での  dAdp.Fill(dSet, "図書DATA") の使い方が誤っているのかと
思いますが堂でしょうか。 よろしくお願いします。

[ツリー表示へ]
タイトルRe^3: テーブル連結 表示ができません
記事No7983
投稿日: 2008/08/22(Fri) 10:22
投稿者魔界の仮面弁士
>   sel = "SELECT 図書DATA.登録番号, 図書DATA.書名, 図書DATA.コード_
>      図書貸出.貸出日,図書貸出.コード FROM 図書DATA left JOIN 図書貸出 ON _
>      図書DATA.コード = 図書貸出.コード order  BY 図書DATA.登録番号;"

ダウト。SQL の文法以前に、VB6/VB.NET の文法として正しくありません。
行継続文字は『_』では無い(正しくは『 _』)ですし、文字列の途中で
行継続させる事もできなかったはず。

また、SQL としての文法面で見た場合には、SELECT 句の “図書DATA.コード”の後に
「,」が不足しているかと思います。また、「,」があったとしても、フィールド名の
 図書DATA.コード
 図書貸出.コード
が、どちらも「コード」という名で競合してしまうので、それぞれ、列名に
エイリアスを設けるようにしてみてください。

[ツリー表示へ]
タイトルRe^4: テーブル連結 表示ができません
記事No7999
投稿日: 2008/08/22(Fri) 18:47
投稿者monmon
魔界の仮面弁士 さま
ご指導ありがとうございました。

>  図書DATA.コード
>  図書貸出.コード
 を エイリアスを設け実行したところ、表示できました。
 ありがとうございました。
 なお、where 文を挿入すると表示できませんが、従来のwhere文では駄目なのでしょうか

[ツリー表示へ]
タイトルRe^5: テーブル連結 表示ができません
記事No8001
投稿日: 2008/08/23(Sat) 02:14
投稿者魔界の仮面弁士
>  なお、where 文を挿入すると表示できませんが、従来のwhere文では駄目なのでしょうか

従来のwhere文というのが、何を意味しているのか分かりませんが、where のせいで
DataGridView に表示できないというのは、論点が違っている気がします。

そもそも DataTable というものは、任意のデータを格納可能な汎用型なので、
取得方法(SQL 等)やデータソース(SQL Server, Access mdb, XML など)の違いが、
表示に直接影響を与えることはありません。


おそらくは「DataGridView に表示できない」のではなく、「DataTable に格納できない」
すなわち、DB 上のデータを DataTable へと格納する段階で問題があるのだと思います。

もっとも monmon さんが、現段階でどのような SQL / VBコード を書いているのかが
分からないので、原因の特定まではできませんけれども…。

[ツリー表示へ]
タイトルRe^6: テーブル連結 表示ができません
記事No8006
投稿日: 2008/08/23(Sat) 21:00
投稿者monmon
> >  なお、where 文を挿入すると表示できませんが、従来のwhere文では駄目なのでしょうか

魔界の仮面弁士 さま

where の表示が間違っていました。ご迷惑おかけしました。
お蔭様で従来と同様に実行できました。
今後ともよろしくお願いします。

[ツリー表示へ]