VB2005でINSERT文がエラーになる理由とは?

このQ&Aのポイント
  • VB2005初心者の方が単純なINSERT文でエラーが発生しており、具体的なエラーメッセージは「コンマ、')'、または有効な式の継続文字が必要です」と表示されています。このエラーの原因として、INSERT文の記述に誤りがある可能性が考えられます。
  • 質問者様は、DataGridViewにAテーブル(MDB、5フィールド)のデータを表示し、新規入力されたデータ(行)をAテーブルに追加しようとしています。ただし、データソース追加ではなく、PG内にクエリを記述しています。
  • 具体的なエラー箇所として、「values("& dTbl.Rows(i)(0)","& dTbl.Rows(i)(1)","& dTbl.Rows(i)(2)","& dTbl.Rows(i)(3)","& dTbl.Rows(i)(4)", cn)」の部分で、「","」がエラーとなっています。この部分を修正することで、INSERT文の実行が正常に行われるようになります。
回答を見る
  • ベストアンサー

VB2005でINSERT文が。。。

こんにちわ、VB2005初心者でいつもお世話になってます。 単純なINSERT文「コンマ、')'、または有効な式の継続文字が必要です」のエラーです。記述のどこが間違いなのかご指摘いただけますでしょうか。 DataGridViewにAテーブル(MDB、5フィールド)データを表示して新規入力されたデータ(行)をAテーブルに追加しようとしています。これはデータソース追加でのクエリーではなくPG内に記述しています。 「values("& dTbl.Rows(i)(0)","」の「","」がエラーとなっています。 If dTbl.Rows(i).RowState = DataRowState.Added Then Try dCom = New OleDb.OleDbCommand( _ "INSERT INTO Aテーブル values("& dTbl.Rows(i)(0)","& dTbl.Rows(i)(1)"," _ & dTbl.Rows(i)(2)"," & dTbl.Row(i)(3)"," & dTbl"." & Row(i)(4)", cn) dCom.ExecuteNonQuery() cn.Close() MsgBox(dCom) MessageBox.Show("追加しました。", "通知") Catch ex As Exception cn.Close() MessageBox.Show(ex.Message) End Try End If よろしくお願いいたします。

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

  • ベストアンサー
  • Kame_LABO
  • ベストアンサー率24% (30/122)
回答No.1

&が抜けています。

risa5555
質問者

お礼

初歩的なミス、ご指摘ありがとうございました。

関連するQ&A

  • SQLSERVERのINSERT文について

    VB2005 SQLSERVER EXPRESS 2005 上記環境で、データベースの追加作業をしています。 大量データ(1万件ほど)をINSERTしたときに、 下記エラーが途中で表示されます。エラー表示まではINSERTできています。 途中からまた開始すると、ある程度INSERTされて、エラー表示されます。 サーバーへの接続を確立しているときにエラーが発生しました。 SQL Server 2005 に接続しているときときにこのエラーが発生した場合は、SQL Server の既定の設定がリモート接続を許可しないようになっていることがエラーの原因である可能性があります。 (provider: TCP プロバイダ, error: 0 - 通常、各ソケット アドレスに対してプロトコル、ネットワーク アドレス、またはポートのどれか 1 つのみを使用できます。) <ソース> For Each Row In Table.Rows --省略-- SqlStr = "INSERT INTO テーブル VALUES (Row("フィールドA")" SqlCmd.CommandText = SqlStr Cn.Open() SqlCmd.ExecuteNonQuery() Cn.Close() Next フィールドは50ほどです。文法のエラーはないと思います。 接続と切断を繰り返すとリソース不足でエラーになるのでしょうか? ご教授願います。

  • VB2005 SQL INSERTについて

    VB2005 Express Editionを使用しています。レコードの追加を以下のように行っておりますが、追加されません。プログラミングの世界に入ったばかりでどこが違うのか全く分かりません。ご教授ください。また、参考になるサイトがあれば教えてください。 Dim Cn As New SqlConnection Cn.ConnectionString = "Data Source=.\SQLEXPRESS;AttachDbFilename" & "=|DataDirectory|\Database1.mdf;Integrated Security=True;" & "User Instance=True" Dim cmd As New SqlCommand cmd.Connection = Cn cmd.CommandText = "INSERT INTO USER_ID (ユーザー名, パスワード) VALUES ('AAA', 'XXX')" Cn.Open() cmd.ExecuteNonQuery() Cn.Close()

  • VB6.0+MyODBC5.0+MySQL4.1にてインサートデータが0になる

    VB初心者です。 上記の条件でVB上からDBへインサート文を実行させたのですがMyadminを開いてデータを確認するとデータがすべて0になってしまいます。 因みにインサート文に直接データを代入するとちゃんとDBに登録されます。 OS:WinXP Dim a AS Integer Dim b AS Integer Dim c AS Integer Private Sub form_load() Set cn = CreateObject("ADODB.Connection") cn.Open "dsn=MySQL;uid=root;Pwd=" cn.CursorLocation = 3 a = 1 b = 2 c = 3 cn.BeginTrans cn.Execute "insert into test values (a, b, c)" cn.CommitTrans cn.Close インサートを変数指定ではなく直接(1, 2, 3)と入れると登録できます。 単純な勘違いを犯しているだけだと思うのですが、どちら様かお知恵を拝借できませんでしょうか? よろしくお願いいたします。

  • insert文等で「`」の有無で失敗するテーブルとしないテーブルがある。

    XAMPP(winXP、PHP4)を使っています。 Aのテーブルでは $query= "insert into table (a,b,c,d) values('1','2','3','4')"; $result = mysql_query($query); でデータが追加されるのに、Bのテーブルでは失敗しました。 今日ずっと何が間違っているのかわからなかったのdですが、 $query= "insert into table (`a`,`b`,`c`,`d`) values('1','2','3','4')"; $result = mysql_query($query); とすると成功しました。 なぜAのテーブルでは「`」が無くても成功したのに、Bのテーブルでは必要なのでしょうか。 宜しくお願いします。

    • ベストアンサー
    • MySQL
  • 1つのSQL文で検索し、その結果をINSERTしたい

    いつもお世話になっております。 今回、AテーブルとBテーブルを調べてデータに差分があれば、その差分データを元にCテーブルからデータを取ってきて、取ってきたデータをDテーブルに追加する、というSQLを1文で書くようにと言われました。 Cテーブルからデータを取ってくるところまではできたのですが、それをDテーブルにINSERTするにはどうしたら良いのかがわかりません。 Cテーブルから取得するデータは5件です。 DテーブルにはCテーブルから取得したデータ以外にも3件入力する項目があります。 現状を簡単に表現すると INSERT INTO Dテーブル(ア,イ,ウ,エ,オ,カ,キ,ク) VALUES((SELECT あ,い,う,え,お FROM Cテーブル),か,き,く); のようにやってみたのですが、うまくいきません。 こういう場合の記述方法をご存知の方がいらっしゃいましたら、教えてください。 よろしくお願いいたします。

  • INSERT文(2)について

    お願い致します。 ORACLE9iを使用しています。 INSERT INTO tableA(AA,BB,CC,DD,・・・) VALUES (AA,BB,CC,DD・・・) ************************** 項目  長さ AA 11,3 BB 11,3 CC 11,3 ・ ・ ************************** 現在データ(VALUES句内部) AA→0.00000000まで ・ ・ *************************** 状態です。 SQL文上のINTO句とVALUES句の値の対応は取れています。 VALUES句が現在は少数点以下切捨てしてない状態な為、ORACLE項目の長さ以上に値が指定されているのですが、これが原因でエラーになっているのでしょうか? エラーメッセージ:「VALUESキーワードがありません」 お願い致します。

  • MDBテーブルへの追加変更を教えてください

    いつもお世話になってます。VB2005の初心者の質問です。 データの変更頻度が少ないのでMDBテーブルをDataGridViewの表示させて行の状態から追加変更したいのですが肝心な部分がわかりません。 DB名=NO.MDB テーブル名=番号 (IDNO、addres、TELNO の3項目です) Private Sub 更新_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles 更新.Click Dim dSet As DataSet = New DataSet("番号") Dim cn As OleDb.OleDbConnection =   NewOleDb.OleDbConnection( _ "Provider=Microsoft.Jet.OLEDB.4.0;" & "Data Source=NO.mdb;") Dim dRow As DataRow Dim dTbl As DataTable Dim i As Integer dTbl = DataGridView1.DataSource For i = 0 To dTbl.Rows.Count - 1 If dTbl.Rows(i).RowState = DataRowState.Added Then MessageBox.Show(i, "件目") →デバック表示です ??????? Addedならレコードの追加をしたいです End If Next End Sub ご回答よろしくお願いいたします。

  • MySQL INSERT文 エラー

    カラム名を指定してデータを挿入するのがうまくいきません。 テーブル(tb1)作成後、たとえば、 insert into tb1(number, name, age) values(A104, '渡辺', 23); と入力すると、 '> と出力されてしまいます。 何が間違っているんでしょうか? よろしくお願いいたします。

    • ベストアンサー
    • MySQL
  • INSERTできません

    以下のSQL文でテーブルに追加したいのですが、実行すると 実行中のメッセージがでたまま動かなくなってしまいます。 他のテーブルで同じようなINSERT文を実行すると追加できるので SQL文の間違いではないと思うのですが、原因がわかりません。 どなたか教えてください。 INSERT INTO table (CODE_A, CODE_B, SAISYUU_KOUSIN_DATE) values('9999', '999999', TO_DATE('2005/11/0716:15:14','YYYY/MM/DD HH24:MI:SS'));

  • VB6からSQLServer7に加工したデータを、正常に追加できません。なぜ?

    VB6から、SQLServerに対して 加工したデータを追加するプログラムをしています。 (環境:Windows2000 Pro + VB6[SP5] + SQLServer[7.0]) 一度、「sampletable」のデータを全件削除した上で、 必ず2回以上実行するループ処理の中で、Insert文を発行しています。 がしかし、プログラム実行後にSQLServerのデータベースを検索してみると、 何故か、最後に実行したInsert文しか、正常に実行終了していないようなのです。 (最後のループ処理でInsertされたデータしか、追加されてないのです。) 何か、プログラム上で、おかしいところとか 抜けているところとかございましたら、教えて下さい。 <サンプルプログラム> ' SQL Server へ接続 Set cn = New ADODB.Connection cn.Open "Provider=SQLOLEDB;" & _ "Data Source=(localhost);" & _ "Initial Catalog=database", "login", "passwd" ' 一度、テーブルデータを削除する strSQL = "delete from sampletable" Set rs = cn.Execute(strSQL) Do 'このループ処理は、2回以上、必ず動作します。 ・・・ (データ加工処理) ・・・ ' データを追加する strSQL = "INSERT INTO sampletable(xxx, xxx, xxx) " & _ "VALUES('" + HENSUU-A + "','" + HENSUU-B + "','" + HENSUU-C + "')" Set rs = cn.Execute(strSQL) Loop ' SQL Server 接続を閉じる cn.Close

専門家に質問してみよう