投稿日 | : 2003/05/21(Wed) 14:25 |
投稿者 | : みずの |
Eメール | : |
URL | : |
タイトル | : SQLステートメントによるレコードセットオープンエラー |
初めて質問させていただきます。初心者です。
長文になって申し訳ありませんが、よろしくお願いします。
Microsoft Access 97形式のデータベースを構築する過程で、Data Environment デザイナによって、コネクションを作り、その上でコマンドやクエリーの作成ができるようになっていました。
ところが、SQLステートメントを使うようになって、うまくいかなくなりました。以下がそのコードです。
Option Explicit
Private Sub Form_Load()
Call RefleshData
End Sub
Private Sub cmdFirst_Click()
deMain.rscmdMaster.MoveFirst
Call RefleshData
End Sub
Private Sub cmdPrevious_Click()
deMain.rscmdMaster.MovePrevious
If deMain.rscmdMaster.BOF Then
deMain.rscmdMaster.MoveFirst
End If
Call RefleshData
End Sub
Private Sub cmdNext_Click()
deMain.rscmdMaster.MoveNext
If deMain.rscmdMaster.EOF Then
deMain.rscmdMaster.MoveLast
End If
Call RefleshData
End Sub
Private Sub cmdLast_Click()
deMain.rscmdMaster.MoveLast
Call RefleshData
End Sub
Private Sub mnuFileQuit_Click()
Unload Me
End Sub
Private Sub RefleshData()
Dim rs As New adodb.Recordset
Dim mySQL As String
mySQL = "SELECT 伝票番号.伝票サブ.商品ID, 商品名, 単価, 数量, " _
& "単価 * 数量 AS 金額 " _
& "FROM 伝票サブ INNER JOIN 商品一覧 " _
& "ON 伝票サブ.商品ID = 商品一覧.商品ID " _
& "WHERE 伝票番号 = " & txt伝票番号.Text
rs.Open mySQL, deMain.cnSales, 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
これを実行すると、Private Sub RefleshData( ) の、
rs.Open mySQL, deMain.cnSales, adOpenStatic, adLockOptimistic
で、
『実行時エラー ‘-2147217904(80040e10)’
1つ以上の必要なパラメータ値が設定されていません。』
というエラーが出ます。
このコードは参考書の中のコードをそのままコーディングしたもので、この参考書にはレコードセットオープンのステートメントの書式として、
recordset.Open source, activeconnection, cursortype, lockype
という書き方が示されていて、当然、上のコーディングはこの書式にしたがっています。この行の、deMain.cnSales は存在している(定義できている)ことは確かで、deMain.cnSalesを存在していないものに書き換えると、
『コンパイルエラー
メソッドまたはデータメンバが見つかりません。』
というエラーになります。同様に
mySQL = …
の中のパラメータも、未定義のものはないと思います。
以上、エラーの原因について、何かおわかりになることがありましたら、お教えいただけないでしょうか。どうかよろしくお願いします。