プロが教えるわが家の防犯対策術!

お世話になっております。
Visual Studio2013で、テキストボックスに入力された値をmdbへ挿入しようと思っています。

フォーム上にTextBox1~ TextBox100があり、それぞれの値を1つずつフィールド
へ挿入したいのですが、INSERT文へ100個もフィールド名を書かないように
ループさせる方法はあるのでしょうか?

For i = 1 to 100
sSql = "INSERT INTO table1(???) VALUES('" & Me.Controls("TextBox" & i).Text & "');"

のようなイメージです・・・。
初心者の質問で申し訳ありませんが、よろしくお願いします。

A 回答 (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個あるというのはテーブルの設計が
オカシイと思いますよ。親-子の関係のテーブルを考えるのが
本筋でしょう。
    • good
    • 0

フィールドも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列目にセットします。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!