[リストへもどる]
一括表示

投稿時間: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 =  …

の中のパラメータも、未定義のものはないと思います。
以上、エラーの原因について、何かおわかりになることがありましたら、お教えいただけないでしょうか。どうかよろしくお願いします。

投稿時間:2003/05/21(Wed) 15:18
投稿者名:魔界の仮面弁士
Eメール:
URL :
タイトル:
Re: SQLステートメントによるレコードセットオープンエラー
> mySQL =  …
> の中のパラメータも、未定義のものはないと思います。

SELECT句にある「伝票番号.伝票サブ.商品ID」が原因なのでは。

投稿時間:2003/05/21(Wed) 19:25
投稿者名:みずの
Eメール:
URL :
タイトル:
Re^2: SQLステートメントによるレコードセットオープンエラー
どうも申し訳ありませんでした。
参考書のコードをそのまま写したつもりだったんですが、

SELECT 伝票番号.伝票サブ.商品ID,

は、

SELECT 伝票番号, 伝票サブ.商品ID,

が正しい書き方でした。
私の注意不足で、お手数をかけてすみませんでした。
魔界の仮面弁士さん、どうもありがとうございました。