• ベストアンサー

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

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

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

  • ベストアンサー
  • taka_tetsu
  • ベストアンサー率65% (1020/1553)
回答No.1

文字列なんで、&で連結すればOKです。 StrSQL_1 = _ "insert into 行先情報テーブル (社員ID, 行先, 帰社予定時刻, 備考)" & _ "values (7,'" & 変数1 & "','" & 変数2 & "','" &(変数3)& "')"

unname1
質問者

お礼

回答ありがとうございました &で区切ったりも試していたのですがうまくいかないので質問させていただきました。 よく見直してみるとintoをintにしていたみたいです。 前後してテストしているときに文字列についてはうまく格納できたので当該部分が間違っているとは思いもしませんでした。 あれこれしているうちにごちゃごちゃになってしまったみたいでした、自分ではしっかり調べてつもりでしたが思い込みのようでした、答えを教えていただいてじっくり見てみると間違いに気づくというような状態でとても情けなく思っています・・・。 どうもありがとうございました

その他の回答 (3)

  • maruru01
  • ベストアンサー率51% (1179/2272)
回答No.4

付けたしというか訂正。 データ型が文字列型なら'(シングルクォーテーション)が要りますね。 なので、 Dim Yukisaki As String Dim Yoteijikoku As String Dim Bikou As String StrSQL_1 = _ "INSERT INTO 行先情報テーブル (社員ID, 行先, 帰社予定時刻, 備考) " & _ "VALUES (7, '" & Yukisaki & "', '" & Yoteijikoku & "', '" & Bikou & "')" です。 では。

unname1
質問者

お礼

ご丁寧な補足説明をありがとうございました

  • Mizyu
  • ベストアンサー率41% (245/593)
回答No.3

"values (7,'(変数1)','(変数2)','(変数3)')" これでは変数も文字列となってしまい、変数名のままSQLで流れてしまいます。 "values (7,'" & (変数1 & ")','" &(変数2)& "','" &(変数3)& "')" としてみてください。

unname1
質問者

お礼

回答ありがとうございました 上記のSQLでの表現方法(「()」(かっこ)を含む文字列の表現)は今後も役立つ表現方法だと思いました. どうもありがとうございました.

  • maruru01
  • ベストアンサー率51% (1179/2272)
回答No.2

こんにちは。maruru01です。 例えば変数を Yukisaki、Yoteijikoku、Bikou とすると、 StrSQL_1 = _ "INSERT INTO 行先情報テーブル (社員ID, 行先, 帰社予定時刻, 備考) " & _ "VALUES (7, " & Yukisaki & ", " & Yoteijikoku & ", " & Bikou & ")" もちろん各変数と対応するフィールドのデータ型は一致してなくてはいけません。 では。

unname1
質問者

お礼

回答ありがとうございました &で区切ったりも試していたのですがうまくいかないので質問させていただきました。 以前にもご教授いただいたことをぜんぜんいかせていませんでした・・・. どうもありがとうございました

関連するQ&A

  • アクセスで挿入時のVALUES以下にSelectは使用できますか?

    VBでアクセスに対し以下のようなSQL文を発行していますが構文エラーとなりますValues以下にSelectは使用できないのでしょうか? StrSQL_1 = _  "insert into 行先 (社員ID, 行先, 帰社予定時刻, 備考)" & _  "VALUES (select 社員ID from 社員 where 社員名 = '"& IP_a & "', " & _  " '" & IP_b & "','" & IP_c & "','" & IP_d & "')" したい処理は行先テーブルに社員ID、行先(変数IP_bが対応)、帰社予定時刻(変数IP_cが対応)、備考(変数IP_dが対応)を格納したいのですが,社員IDについては入力された社員名である変数IP_aと合致する社員名を社員テーブルから検索して取得した社員IDとしたいのですが・・・。 insert into ・・・ select などいろいろ試してみたのですがうまくいきません。 上記の処理を実現する方法を教えていただけないでしょうか

  • 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 以上、すみませんが、よろしくお願いいたします。

  • データベースに変数の値を挿入

     HTMLのフォームから、getParameterで取得した値(id,name,club)をデータベースに挿入したいのですが、 String sql="insert into test_table values(id,name,club)";  と記述してもその文字列がそのままテーブルに反映されてしまいます。  もちろん、 String sql="insert into test_table values('12','●田○郎','野球部')"; とあらかじめ記述しておけばこのデータがテーブルに挿入されるのですが・・・。  PHPでは確かvalues('{$id}','{$name}','{$club}')のように記述すればできたので戸惑っています。  JAVAでSQL文に変数を含める場合、どのように記述すればいいのでしょうか?

    • ベストアンサー
    • Java
  • SQLでできますか?

    SQLでできますか? INSERT INTO test (A) VALUES (B)というSQLを発行したいのですが、このSQLのVALUESのBにあたる部分を正規表現的に指定して、一度のクエリで以下のような結果を得たいのです。 1.テーブルhogeのpiyoカラムの値の先頭がappleになっている行を探す。 2.(1.)で抽出した行のidの値をBとする。 例えば、以下のようにです。 ■皆様が回答してくださるSQL文(1クエリで行いたい) ???????????? ■皆様が回答してくださるSQL文と同等の意味を持つSQL群 INSERT INTO test (A) VALUES (100) INSERT INTO test (A) VALUES (101) INSERT INTO test (A) VALUES (102) ■テーブルhoge _____id_____piyo__________created 1. 100 applebanana 2009/01/02 2. 101 apple_12345 2009/01/03 3. 102 appleXXXXXX 2009/01/04 4. 103 bananananan 2009/01/05 5. 104 ringogogogo 2009/01/06 分かりにくい説明ですが、お詳しい方、どうかご回答の程を宜しくお願いいたします。

    • ベストアンサー
    • MySQL
  • ACCESS SQLのINSERTについて

    TBLというテーブルにINSERT文を使用して1行レコードを追加したいです。TBLテーブルのカラムAにはシステム日付を、カラムBには別テーブルのselect count(*)の実行結果を挿入したいのですがうまくいきません。何か良い方法はございませんでしょうか? INSERT INTO カウンタ統計 ( [DATE], USER_COUNT ) VALUES (date(), (SELECT COUNT(*) FROM hiplus_HW_USER)); ※日付は問題なく挿入できるのですがSELECT文の結果が挿入できない状況です。宜しくお願いします.

  • エクセルでSQL文を自動で出力させたい

    INSERT INTO `TableInfo` ( `author_id` , `name` , `no` , `addr` ) VALUES ('其一', '其二', '其三', '其四'); 上記のようなテーブルがありINSERTでデータを登録させていきたいと思っています。 そこで、エクセルに打ち込んだデータを、 '其一' '其二' '其三' '其四' に置き換えてSQL文としてテキストファイル等に出力させたいと思います。 エクセルはあまり得意ではなくどうやれば良いか判りません。 どなたか御教授お願い致します。

  • SQL文がDouble型として認識される

    SQL文がDouble型として認識される 質問させて頂きます。 ユーザーのポイントを引き算し、SQLにアップデートするプログラムを組んでいます。 実行すると String "UPDATE 「テーブル名」 SET 「要素名(Integer)」 " から型 'Double' への変換は無効です。 というエラーが出るのですが、SQL文の部分を何故Doubleに変換するのでしょうか? デバッグにて変数を確認し、String等をいれてみても同じエラーが出る上 SQL文は他の部分で正常に動いているものをコピーしても同じエラーが出ます。 INSERT INTO テーブル名(要素) VALUES(xxx)"であれば 「String "INSERT INTO テーブル名(要素) VALUES」 " から型 'Double' への変換は無効です。」 となります。 SQL文の記述が間違っているとは思えず、VBの記述の問題としてここで質問させて頂きました。 コードは以下の通りで、環境はVB2010 + SQL Server2008です。 回答して頂くために不足している情報がありましたらすぐに追記致します。 至らない文章ではありますが、どうかよろしくお願い致します。 Dim point As Integer point = point(Integer型) - price(Integer型) Dim strSQL As String = "UPDATE 「テーブル名」 SET 「要素(Int型)」 = '" + point + "' WHERE UserID = '" + userid(String型) + "'" cn.ConnectionString = My.Settings.ServerURL Dim cmd4 As New SqlCommand(strSQL, cn) cn.Open() cmd4.ExecuteNonQuery() cn.Close()

  • アクセス(Access)のサブクエリについて

    したいこと  「test」という変数に格納された社員名から「社員名テーブル」の「s_n」フイールドを検索して対応する「社員ID」を取得します.  当該「社員ID」に一致する「行先情報」テーブルにある「行先」,「帰社予定時刻」フールドを最終的に取得したい 現象 VBでアクセスの下記サブクエリを発行しているのですが,「1つ以上の必要なパラメータの値が設定されていません」というエラーが出てしまいます StrSQL_1 = _ "Select 行先, 帰社予定時刻 From 行先情報 " & _ " Where 社員ID = " & _ "(Select 社員ID from 社員名テーブル where " & test & " = s_n)" SQL文を分割してテストしたところ(select...& test & ...)の部分でのみエラーが発生します,ヘルプなどを調べるとフイールド名が間違っているときに出るエラーとのことなので再確認等してみましたが解決できません,なにが間違っているのかを教えていただけないでしょうか. よろしくお願いいたします.

  • 【SQL文】Insert into文で文法エラー

    insert into文で思ったような結果がでません。SQL文にお詳しい方、ご教授いただけますでしょうか? SQLは初心者レベルです。 期待している結果: テーブルT-BBSにT-USRのusr-id全リストを入れて、T-BBSのa,b,cには固定の数値を入れたいと思っています。 テーブル例: テーブル名:T-BBS ,カラム:usr-id,a,b,c, テーブル名:T-USR, カラム:usr-id 結果 user-id | a | b | c 2 |1 | 2 | 3 3 |1 | 2 | 3 4 |1 | 2 | 3 7 |1 | 2 | 3 私が考えたSQL文ですが、 INSERT INTO T-BBS(SELECT user-id FROM T-USR,1,2,3) →×(文法エラー) INSERT INTO T-BBS(user-id,a,b,c) VALUES (SELECT user-id FROM T-USR,1,2,3)→× 文法エラー INSERT INTO T-BBS(user-id,a,b,c) VALUES ((SELECT user-id FROM T-USR),1,2,3)→×サブクエリが複数行を含んでいる ちなみにデータベースはH2 Databaseというものみたいですが、mySQLと方言は同じという認識をもってます。 以上宜しくお願いします。

    • ベストアンサー
    • MySQL
  • SQLのINSERT文について

    SQLのINSERT文について Accessを使用していて1列目が管理Noとなっています。 その時のレコード数を管理Noに指定したいのですがうまく行きません。 Insert Into TableA Values((Select Count(*) From TableA),'データ') 原因もしくは他の方法があればご教授お願いします。

専門家に質問してみよう