0

Excel VBA から SQL を使用して、データが入力された新しい行を単純な Access テーブルに挿入しようとしていますが、最初のハードルを乗り越えることができません。

4 つのフィールドを持つ "Test" という 1 つのテーブルがあります。

  • ID [主キーとして識別されるオートナンバー型フィールド]

  • Text1 [テキストフィールド]

  • YN1 [はい/いいえフィールド]

  • No1 [長整数数値フィールド]

オートナンバー型フィールド (PK) 以外にリレーションシップまたはインデックス セットはありません。すべてのフィールドで [必須] が [いいえ] に設定されており、検証が設定されておらず、デフォルトが設定されていません。Text1 は長さゼロを受け入れることができます。

私のVBAコードのビジネスエンドは次のとおりです。

'Connection string.
    stcnt = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & stDBPath & stDBname

'Instantiate the ADO-objects
    Set cnt = New ADODB.Connection

'Open the connection for first Query
    With cnt
        .Open (stcnt) 'Open the connection.
        .CursorLocation = adUseClient 

'Test Data
T1 = "ABC123"
Y1 = -1
N1 = 17

        stSQL1 = "INSERT INTO Test(Text1, YN1, No1) " _
                & "VALUES(T1, Y1, N1)"

        .Execute (stSQL1)

    End With

    'Close connection
    cnt.Close

私の変数は適切に淡色表示され(ブール値としてY1)、パス/データベース名が正しく宣言されました。

ラインで

 .Execute (stSQL1)

「1 つ以上の必須パラメーターに値が指定されていません」というエラーが表示されます

AutoNumber フィールドとその値を省略できることを読みました (これは実行済みです)。そうでない場合は、これを含める構文を教えてください。私の限られた知識/研究では、「はいいいえ」フィールドを適切に扱っていない可能性もあります。繰り返しになりますが、これに対処するためのアドバイスや構文はありがたく受け取られます。

Access データベースがハード ドライブ上にあり、VBA コードの実行時に Access が開いているか閉じているかに関係なく、同じエラーが発生します。

Access の [SQL ビュー] ウィンドウに直接貼り付けた SQL ステートメントは正常に実行され、正しく入力された行がテーブル テストに挿入されます。

これを乗り越えるための専門家(特に正しい構文を持つ)からの助けをいただければ幸いです。

4

1 に答える 1

3

stSQL1 は文字列であるため、変数 T1、Y1、および No1 を文字列に挿入する必要があることをコンパイラは認識しません。自分で文字列を作成する必要があります。

stSQL1 = "INSERT INTO Test(Text1, YN1, No1) " _
                & "VALUES('" & T1 & "'," & Y1 & "," & N1 & ")"

テキスト値を一重引用符で囲む必要があります。

于 2013-07-24T22:28:05.327 に答える