• 締切済み

MDBの大量のフィールドへループでinsert

お世話になっております。 Visual Studio2013で、テキストボックスに入力された値をmdbへ挿入しようと思っています。 フォーム上にTextBox1~ TextBox100があり、それぞれの値を1つずつフィールド へ挿入したいのですが、INSERT文へ100個もフィールド名を書かないように ループさせる方法はあるのでしょうか? For i = 1 to 100 sSql = "INSERT INTO table1(???) VALUES('" & Me.Controls("TextBox" & i).Text & "');" のようなイメージです・・・。 初心者の質問で申し訳ありませんが、よろしくお願いします。

みんなの回答

  • nda23
  • ベストアンサー率54% (777/1415)
回答No.2

はっきり言ってないです。 NULL可能なフィールド以外は必ず値を入れなければなりません。 VALUESの場合はフィールド名も書かなければなりません。 SQL自体をループで生成することはできます。 例えばフィールド名が"X001"、"X002"、…、"X100"ならば 以下の通りです。 SQL = "INSERT INTO TABLE VALUES" For I = 1 To 100   SQL = SQL & IIf(I = 1, "(", ",")   SQL = SQL & "'" & Me.Controls("TextBox" & I) & "'"   SQL = SQL & " AS X" & Fromat(I, "000") Next SQL = SQL & ")" 同様のフィールドが100個あるというのはテーブルの設計が オカシイと思いますよ。親-子の関係のテーブルを考えるのが 本筋でしょう。

回答No.1

フィールドも100あるということですよね。 SQLでは、100個のフィールド名を書く必要があるとおもいます。 レコードセットを開いて、AddNewすればフィールドをループさせることができます。 rs.Open(・・・・・・) rs.AddNew() For i = 1 to 100   rs.Fields(i-1).Value = Me.Controls("TextBox" & i).Text Next rs.Update() rs.Close() TextBox1~ TextBox100 の値を、1列目から100列目にセットします。

関連するQ&A