投稿日 | : 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