投稿時間: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 = …
の中のパラメータも、未定義のものはないと思います。 以上、エラーの原因について、何かおわかりになることがありましたら、お教えいただけないでしょうか。どうかよろしくお願いします。
|