0

*編集: 問題は、SQL ステートメントが領域を MVF に一度に 1 つずつ追加する必要があることでした。2 つ目の問題は、ループ内で SQL を実行するのを忘れていたことです。

Access 2007 で、"area" と呼ばれる複数値フィールドを含む SQL ステートメントで問題が発生しました。これは、1 人のユーザーが複数の関連分野に属しているという考え方です。さまざまな領域が複数選択リストボックスに表示され、次のコードで挿入されます。少し調べたところ、複数値フィールドを渡すには挿入が必要であることがわかりました。【よくわからないけど

私の最初の試みはこのように見えました

For i = 0 To Me.boxArea.ListCount - 1
        If Me.boxArea.Selected(i) Then
            sqlString = sqlString & Me.boxArea.Column(boundColumnZeroBasedIndex, i) & ","
        End If
Next i

その結果、 「値の数と宛先フィールドが同じではありません」というエラーが発生しました。SQL 文字列は次のようになります。これにより、通常の挿入のように動作し、複数の値が異なるフィールドのように扱われていることがわかりました。

"INSERT INTO Users ([area].[Value]) VALUES(G1 ,G2,G3,) WHERE badgeNumber = '404';"

次の試みでは、一度に 1 つずつ値を渡すだけでよいのではないかと考えました。

If Me.boxArea.Selected(i) Then
            sqlString = "INSERT INTO Users ([area].[Value]) VALUES('" & Me.boxArea.Column(boundColumnZeroBasedIndex, i) & "') WHERE badgeNumber = '" + txtBadgeNumber + "';"
        End If
Next i

これはエラーなしで実行されますが、文字列全体ではなく最後の値のみが含まれます。したがって、G3 だけが表示されます。

値は 1 つだけ

そのため、Access 内で SQL を介して複数の値を MVF に挿入する方法について混乱しています。これまでに試したことはすべて、エラーまたは意図しない結果を引き起こします。あなたが提供できるどんな助けも大歓迎です。ありがとう!

-コメントの情報で編集

これは、boxArea の値を示すデバッグ画面です。 デバッグ画面

実行中の唯一の他の SQL ステートメントは、ユーザーを作成する SQL ステートメントです。特に問題はないと思いますが、参考までに。

sqlStr = "INSERT INTO Users ( badgeNumber, firstName, lastName, accessLevelID, department, email, phone, mobile, fax, pager, title, displayName, company )VALUES ('" + txtBadgeNumber + "', '" + txtFirstName + "', '" + txtLastName + "', 1, 'BE23515', '" + txtEmail + "', '" + txtPhone + "', '" + txtMobile + "', '" + txtFax + "', '" + txtPager + "', '" + txtTitle + "', '" + txtDisplay + "', 'XXXX');"
CurrentDb.Execute sqlStr, dbFailOnError
4

1 に答える 1