2012-02-06 17 views
2

これはおそらく簡単なことだと思うので、事前にお詫び申し上げます。これは実際に私がVBAを初めて書いたときのことです。問題を抱えてしまいましたが、修正方法については頭を悩ますことはできません。私は検索し、複数のことを試みたが、何か試しても同じ問題が残っている。ランタイムエラー13タイプミスマッチVBAアクセス2007

新しいレコードセットを開き、SQLを使用して別のテーブルの値を設定し、レコードセットから値を取得してから、自分のフォームのラベルにキャプションを設定するだけです。私のコード:

Dim oconStudents As ADODB.Connection 
Dim orsStudents As ADODB.Recordset 
Dim strStudentsSQL As String 

Set oconStudents = CurrentProject.AccessConnection 
Set orsStudents = New ADODB.Recordset 
Set strGetCustIDSQL = _ 
    "SELECT [CustomerID] FROM [Students Classes] WHERE [Class ID] = " & _ 
    Me.txtClassID.Value & ";" 

orsStudents.Open strGetCustIDSQL, oconStudents, adOpenForwardOnly, _ 
    adLockReadOnly, adCmdTable 

With orsStudents 
    If Not orsStudents.EOF Then 
     lblStudent1.Caption = orsStudents.Fields.Item(0) 
     orsStudents.MoveNext 
    End If 
End With 

私はこれを実行すると、私はこのラインでの実行時エラー13を取得:私は私の人生のために、なぜを把握することはできません

Set strGetCustIDSQL = _ 
    "SELECT [CustomerID] FROM [Students Classes] WHERE [Class ID] = " & _ 
    Me.txtClassID.Value & ";" 

を。私はクエリでSQLを実行し、私の値を適切に返します。私はadCmdTextをadCmdTextに変更し、 "#"記号だけでなく、SQL文字列のMe.txtClassID.Valueセクションの周りに他の文字のホストを追加しようとしました。 SQL文字列の上にカーソルを置くと、「Class ID =」の値(この場合は「2」)が表示されますが、SQL文字列上にカーソルを置くと「=空」が表示されます。

どのような簡単なことを気付かないのですか? ご協力いただきありがとうございます!

答えて

3

Set文字列の割り当ての一部が正しくありません。オブジェクト(たとえばADODBオブジェクト)にはSetしか使用しません。プリミティブデータ型(文字列、整数など)は単純な代入を使用します。

すなわち

strGetCustIDSQL = _ 
    "SELECT [CustomerID] FROM [Students Classes] WHERE [Class ID] = " & _ 
    Me.txtClassID.Value & ";" 

また、私は考えていません ";" ADODBからSQLを実行するときに必要です。

+0

素敵です。私はそれが何か簡単でなければならないことを知っていた。間違いなくそれらの顔面の瞬間の一つ。どうもありがとう! – Eyowzitgoin

関連する問題