VB6.0用掲示板の過去のログ(No.1)−VBレスキュー(花ちゃん)
[記事リスト] [新規投稿] [新着記事] [ワード検索] [過去ログ] [管理用]

投稿日: 2004/04/21(Wed) 14:17
投稿者やまと麻耶
Eメール
URL
タイトルVB6.0でAccess2000のデータをデータグリッドに表示

初めまして。質問があります。
手持ちの本に従い、データグリッドにデータを表示させるプログラムを作成しました。
使用ソフトはVB6.0とAccess2000のものです。

『DEデザイナで作成したコネクションオブジェクトが使用するデータベースを、
ADOのコネクションオブジェクトを作成するときに指定』させるようにしてから、
エラーメッセージで「実行時エラー 6147 列が見つかりません。 伝票番号」と
表示されるようになってしまいました。
なお、SQLは正しいことを確認しました。
また、これは本に従って書いたプログラムですが、VBのバージョンとAccessのバージョンは異なっています。

初心者なもので説明に不備があるかもしれません。
お手数おかけしますが、どうぞご教授のほど、宜しくお願いします。

'宣言−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−
Option Explicit

Private cn As New ADODB.Connection

'FormLoad−−−−−−−−−−−−−−−−−−−−−−−−−−−−
Private Sub Form_Load()
    
'    データベースを指定する関数
    Dim dbname As String
    dbname = GetDataSource()
    
    '***接続情報文字列の指定***
    cn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;" _
                        & "Data Source=" & dbname

   '***コネクションをオープン***
    cn.Open

  '***データグリッドに表示するためのレコードセットを取得する関数***
    Call RefreshData      


End Sub

'データグリッドにデータを呼び出す関数−−−−−−−−−−−−−−−
Private Sub RefreshData()
    Dim rs As New ADODB.Recordset
    Dim mySQL As String

    'SQLステートメント

    mySQL = "SELECT 伝票サブ.伝票番号, 伝票サブ.商品ID, 伝票サブ.数量, 商品一覧.商品名," _
           & "商品一覧.単価, 商品一覧.単価 * 伝票サブ.数量 AS 金額 " _
           & "FROM 伝票サブ INNER JOIN " _
           & "商品一覧 ON 伝票サブ.商品ID = 商品一覧.商品ID " _
           & "Where 伝票サブ.伝票番号 = " & txt伝票番号.Text

        rs.Open mySQL, cn, adOpenStatic, adLockOptimistic

        Set dbgSub.DataSource = rs

    'フォーマット
    dbgSub.Columns("伝票番号").Visible = False
    dbgSub.Columns("商品ID").Width = 60 * 15
    dbgSub.Columns("商品名").Width = 150 * 15
    dbgSub.Columns("単価").Width = 60 * 15
    dbgSub.Columns("数量").Width = 60 * 15
    dbgSub.Columns("金額").Width = 60 * 15

End Sub

'DEデザイナで作成したコネクションオブジェクトの接続情報からデータソースを取得−−−−
Private Function GetDataSource() As String
    
    Dim startPos As Long    '開始位置
    Dim endPos As Long      '終了位置
    Dim skip As Long        '読み飛ばす文字数

    'データソースの取得
    startPos = InStr(1, deMain.cnSales.ConnectionString, _
                "Data Source=", vbTextCompare)

    endPos = InStr(startPos, deMain.cnSales.ConnectionString, _
                ";", vbTextCompare)

    skip = Len("Data Source=") '"Data Source="を読み飛ばす

    GetDataSource = Mid(deMain.cnSales.ConnectionString, _
                    startPos + skip, endPos - (startPos + skip))
End Function


- 関連一覧ツリー (★ をクリックするとツリー全体を一括表示します)

- 返信フォーム (この記事に返信する場合は下記フォームから投稿して下さい)

- Web Forum -