- 締切済み
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 & "');" のようなイメージです・・・。 初心者の質問で申し訳ありませんが、よろしくお願いします。
- みんなの回答 (2)
- 専門家の回答
みんなの回答
- nda23
- ベストアンサー率54% (777/1415)
はっきり言ってないです。 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個あるというのはテーブルの設計が オカシイと思いますよ。親-子の関係のテーブルを考えるのが 本筋でしょう。
- hatena1989
- ベストアンサー率87% (378/433)
フィールドも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列目にセットします。