• ベストアンサー

多数のフィールドをSQLで書き込む方法?(VB08

VB2008にてアクセスMDBに対し、SQL文を使用し、特定のテーブルの1レコードへ多数の項目(フィールド)を書き込む際に効率的な方法はないでしょうか? 仮に100項目だとして、INSERT INTO文がとても長くなってしまう代わりに、処理を分散させるコーディング方法は何かないでしょうか?

質問者が選んだベストアンサー

  • ベストアンサー
  • ShowMeHow
  • ベストアンサー率28% (1424/5027)
回答No.2

何故ながいSQLがダメなのか良くわからないけど、、、 (loop使ってSQL作れば簡単だと思うけど) ADO使って、新しいレコードを作って、フィールドを指定して値を格納していくことができたと思う。 http://msdn.microsoft.com/ja-jp/library/cc364089.aspx RST.ADDNEW RST.FIELDS(0) = HOGE0 RST.FILEDS(1) = HOGE1 ・・・ RST.UPDATE のようにできたと思う。 RST!FILEDS(0)・・・だったかもしれないけど、、、 ま、適宜、調べてください。

その他の回答 (2)

回答No.3

効率的かどうかは判らないが、仕事で同じような現象が出たときは(SQL文が長いとエラーになるみたい) INSERT文で半分の項目を登録し、 UPDATE文で残りの項目を登録しました。

  • chie65535
  • ベストアンサー率43% (8516/19358)
回答No.1

「OPEN #1,~」でテキストファイルを作成し「PRINT #1,~」文で、カンマ付きで1行1レコードで書き出して「CLOSE #1」でファイルを閉じてから、「DoCmd.TransferText acImportDelim, ~~」文で既存テーブルに追加インポートするのが良いでしょう。

komorebi88
質問者

お礼

ご返答ありがとうございます。 テキストファイルを作成するというのは、実際に○○○.txt を一度作成するといった意味でしょうか?

関連するQ&A

  • VBでSQL

    SQLでテーブル1に該当レコードがなければインサート あればアップデートをする処理をしたいのです IF ??? THEN UPDATE テーブル1 SET SELECT * FROM テーブル2 WHERE 条件 ELSE INSERT INTO テーブル1(SELECT * FROM テーブル2) END IF ???はプライマリキーで判定をしようと考えています こんな感じでやろうとしたところ うまくいきませんでした VB上で実行しよううとしているからなのでしょうか? ADOでSQLサーバに接続しています 条件分岐もどういう条件(VBでの書き方)がわからないです。 よろしくお願いします。

  • SQL文でフィールド名を変動的にできますか?

    VB.NETにてアクセスのMDBへSQLを使って直に書き込むコーディングについて疑問があります。 例えば、 cmnd.CommandText = "UPDATE 野菜テーブル SET 野菜カゴ1 = '" & 野菜名 & _ '" WHERE 条件文・・・" このように野菜テーブルのフィールド「野菜カゴ1」へある野菜をアップデートするSQLコマンド文があるとします。 しかし、アップデートする際、野菜カゴも都度変動する場合(例えばカゴが1~5ある等)はどのようなSQL文となるのでしょうか?フィールド名に変数を使用できるのでしょうか?方法をお知りの方がいましたらご教授願います。

  • VB6と2008、SQL使用方法の違いについて

    最近VB2008を始めた初心者です。データベースはアクセスです。 これまでは、VB6.0にてデータベースへの書き込みを行う際は、VB6のSQLを使用していました。1つのレコードに複数のフィールドがある場合も、以下のようなプロシージャを作成し処理の共有を行っておりました。 UserMaster!Name=Textbox1.Text UserMaster!ID=Textbox2.Text UserMaster!Collection1=Textbox3.Text UserMaster!Collection2=Textbox4.Text UserMaster!Collection3=Textbox5.Text ・・・ そして、VB2008に移行後はSQLステートメントを以下のようにそのまま使用しております。 cmnd.CommandText = "INSERT INTO Work (Id,Collection1,Collection2・・・) " & _ " VALUES ('" & Textbox1.Text & "','" & Textbox2.Text & "'," & Textbox3.Text & ・・・)" cmnd.ExecuteNonQuery() しかし、このようにコマンドテキストにて保存を行う場合、同一レコードに多数のフィールドがある場合、ステートメントが長文になってしまいます。 VB6のように保存処理を別にプロシージャにて実行させる方法は何かないでしょうか? .NETでは根気よくコーディングしていくしかないのでしょうか? アドバイス願います。m(_ _ )m

  • AccessのSQLについて教えてください。

    Excel+VBA から、ADOを使って、Accessを操作しようとしています。 なんとか、sqlを実行できるようになったのですが、 一点、分からないところが出てきましたので、教えてください。 insert文で、レコードを追加したとき、追加されたレコードのIDを取得したいのですが、 どのようにすれば良いかわかりません。 コードは次のようにしています。 cnn.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & "Data Source=" & データベース名 & ";" sql = "INSERT INTO テーブル名(フィールド) VALUES(値)" cnn.Execute sql 以上、すみませんが、よろしくお願いいたします。

  • ORACLEでのSQL、シンプルな方法は?

    ORACLEでのSQL文について質問です。 SQLで条件に合うレコードがあるかどうかはどう判別するのでしょうか? 画面で2つの条件を選んで テーブル ・ステータス ・フラグ 条件に合うレコードがなければINSERT 条件に合うレコードがあればUPDATE レコードが元々あるが、画面で指定された条件から外れる場合はDELETE としたいのですが、うまくSQLが書けません。 レコードがあればupdate、なければinsertするというのは多いのですが。 何かシンプルな方法はないでしょうか。

  • sqlについて

    SQLについて質問です。 VBからMDBにSQLでデータの参照をしたいのですが ("select * from abc where No = " & No & " ;") テーブル内の数ある項目の中で一つだけまたは複数除いて参照する場合のSQL文を教えてください。 項目が60個ほどありますので一つ一つ指定していくとすごく長いSQLになってしまいそうですのでお知恵をお貸しください><

  • VBとアクセスでSQL文に変数を使いたいのですが

    したいことはレコードの挿入をSQL文で変数を使用して処理したいのですがうまく動作してくれません StrSQL_1 = _ "insert into 行先情報テーブル (社員ID, 行先, 帰社予定時刻, 備考)" & _ "values (7,'(変数1)','(変数2)','(変数3)')" 変数の部分が置き換わりません、いろいろ調べてみたのですがどうもわかりませんvaluesでは変数を使えないのでしょうか? もしそうだとするとどのようにすればレコードを挿入するSQL文で変数を利用できるのかをおしえていただけないでしょうか

  • SQL文について

    開発言語:VB2010 DB:SqlServer2005 及び ACCESS2007 SQLサーバーのテーブルをAccessのテーブルへINSERTしたいのですが、 一文で行う事は可能でしょうか? (テーブルの構造は全く同じです) 同じDB内であれば、下記のような感じで出来ると思うんですが。 +----------------------------------+ INSERT into Atest_ACCESS SELECT * FROM Btest_SQL Where OperationDate => 2011/09/05 +----------------------------------+ 出来るのあればどのようにすれば良いのが教えて頂けると幸いです。 よろしくお願い致します。

  • 副問合せをいれたINSERT文で、問合せ結果が無い場合

    副問合せをいれたINSERT文で、問合せ結果が無い場合 環境はSQL Server2005です。 テーブルA,テーブルBが存在し、テーブルAにレコード追加する際に一部をテーブルBから抽出して、 INSERTしようとしています。 [SQL文]  INSERT INTO テーブルA(フィールド1, フィールド2, フィールド3,フィールド4・・・)   SELECT 'AAA', 'BBB' ,B.フィールド3, B.フィールド4 ・・・   FROM テーブルB B WHERE ~ この場合、テーブルBにWHEREで指定した条件のレコードが存在しない場合はINSERTされなくなってしまいます。 存在しない場合は、該当のフィールドにはNULLをいれたいのですが、テーブルBからの結果が存在しない場合でも テーブルAにINSERTする方法はありますか?

  • ヒアドキュメントでSQLを書く事について

    ヒアドキュメントを使ってSQLクエリを書くのは良くないという話を聞いたのですが、どのようなデメリットがあるのでしょうか? あと、購入した書籍に INSERT INTO テーブル名 SET フィールド名=入力値 というSQLが書いてあったのですが、 INSERT INTO テーブル名 (フィールド名) VALUES(入力値) とどちらが一般的な記述方法なのでしょうか? それぞれにメリット・デメリットなどありましたら教えて下さい。 PHPを始めて間もないため不安が多く質問ばかりですみません。

    • ベストアンサー
    • PHP

専門家に質問してみよう