VB2005でMDBのUPDATEを複数行にする方法

このQ&Aのポイント
  • VB2005でMDBのUPDATEをしていますが、項目数が多いので複数行にしたいのですが、構文エラーが発生してしまいます。
  • dCom = New OleDb.OleDbCommand("UPDATE テーブルA SET ff2= " & a & ", ff1= '" & bbb & "' WHERE ff2=" & aa, cn) というコードを使用しています。
  • このコードを複数行に分割すると構文エラーが発生するため、1行に記述する必要があります。
回答を見る
  • ベストアンサー

VB2005で複数行の分割ができない

初心者恥ずかしいような質問で申し訳ないのですが、 VB2005でMDBのUPDATEをしていますが、項目数が多いので複数行にしたいのですが、2項目だけでも構文エラーとなってしまいます。1行にすると正常に処理されますので分割の記述と思います。 aとaaは整数で、bbbは文字列です。 dCom = New OleDb.OleDbCommand("UPDATE テーブルA" _ & "SET ff2= " & a & "," _ & "ff1= '" & bbb & "' WHERE ff2=" & aa, cn) はまってしまってますお助けを、よろしくお願いいたします。

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

  • ベストアンサー
  • mo_gu
  • ベストアンサー率51% (56/109)
回答No.1

UPDATE テーブル と SET ff2= の間にスペースが入ってないので UPDATE テーブルSET ff2= と繋がってしまっているのではないでしょうか

akatuka
質問者

お礼

当方単純なミス お答えいただきありがとうございました。

関連するQ&A

  • 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 よろしくお願いいたします。

  • VB でExcelファイルの行を削除したのですが?

    VB歴はまだ浅く素人レベルではございますがよろしくお願いします。ご質問内容も不鮮明な点もあるかもしれませんがご指導お願い致します。 SQL Server & VB2008EEを使用しております。 身近なExcelファイルをデータベースもどきで使用できないかと思いまして、今挑戦しています。 現在、読み込み、ソート、UPDATEなどのクエリも順調に動作しました。 しかし、DELETEで 「ISAMではリンクテーブル内のデータを削除することは出来ません」 というエラーが出てしまい困っております。 UPDATE [会社$] SET 氏名='' などで空白には出来るのですが行が残ります。行削除が出来ると理想なのですが.. よろしくお願いいたします。 【参考ソースコード】************************************* Dim row As Integer Dim name As String 'データグリッドビューの行番号を取得する row = DataGridView1.CurrentRow.Index '行番号から社員名を取得する name = DataGridView1.Item(0, row).Value.ToString() 'コネクションを指定する cn = New System.Data.OleDb.OleDbConnection("Provider=Microsoft.jet.OLEDB.4.0; " & _ "Data Source=C:\DATA\TEST.xls; " & _ "Extended Properties=Excel 8.0") 'Excelブックの接続 cn.Open() com = New OleDb.OleDbCommand("DELETE FROM [会社$] WHERE 氏名='" & name & "'", cn) com.ExecuteNonQuery() 'コネクションを閉じる cn.Close() '正常終了のメッセージ MsgBox("1件の社員データを削除しました") 'データグリッドビューの再表示 DataLode() *****************************************************

  • VB.NETからAccessテーブルの文字列を操作する際・・

    VB2005からAccessのmdbのテーブルのあるカラムより数バイトを切り出して別のカラムにコピーするだけの単純なプログラムなのですが、以下のように30バイトや34バイトで切り出しているにもかかわらず16バイトしか入ってきません。 cn.ConnectionString = "Provider= Microsoft.Jet.OLEDB.4.0;" _ & "Data Source = d:\csmain\cstool\egz0omen.mdb" cn.Open() com = cn.CreateCommand() com.CommandText = "select カラムA from T_テーブル" dread = com.ExecuteReader Do While (dread.Read()) com = New OleDb.OleDbCommand("update T_テーブル set カラムB = LeftB(カラムA, 30), " _ & " カラムC = LeftB(カラムA, 34) , " _   & " カラムE = LeftB(カラムA, 36) ") com.Connection = cn com.ExecuteNonQuery() Loop <実行結果> カラムA             123456789012345 カラムB~カラムE全て 12345678 試しにバイト数を10バイトずつ増やして、30→40、34→44、36→46にしても結果は同じでした。 宜しくお願い致します。

  • VB2005でMDBに接続方法

    お世話になります。 VB2005でアクセスに接続したいのですが、 よく理解できません。 こんな感じで、ネットで見たのを 記述したのですが、なんかエラーになります。 VB6みたいに参照設定が必要なのでしょうか? (記述例) Dim Cn As New OleDbConnection  ↑で警告?になる。 ("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=d:\データ.mdb") Dim SQLCm As OleDbCommand = Cn.CreateCommand ↑参照コンポーネントがみつかりませんでした。 と怒られます。 宜しくお願いいたします。

  • データリーダーからのデータ読み出し方法(VB)

    お世話になってます。 先日データコネクションを質問しその後うまくいっているように見えたのですが、表記でまた躓いています。 コードは Dim cn As New OleDb.OleDbConnection Dim cmd As New OleDb.OleDbCommand Dim dr As OleDb.OleDbDataReader 'コマンドのコネクション設定 cn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;" & "Data Source=C:\DB\Report.mdb" 'コネクションを開く cn.Open() 'コマンドの定義 cmd.CommandText = "SELECT password FROM T_Staff WHERE Staff_ID = '" & txtUserID.Text & "'" 'データリーダーからのデータの読み出し dr = cmd.ExecuteReader() ************************************************** 最後の行で ExecuteReader: Connection プロパティは初期化されていません。 と言うエラーメッセージが出ます。 少し検索してみましたがよくわかりません。 これって結局接続できていないのでしょうか? 初期化されていなというのはどういう状態のことなんでしょう? よろしくお願いいたします。

  • VB.NETでテーブルを作成

    VB.NETとAcceseを使用してフォームの入力内容に基にボタンをしてDBにテーブルを作成するプログラムを作成していますが上手くいきません。 どのようにすれば上手くいくのか教えてください。 よろしくお願いします。 Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click Dim Cn As New OleDb.OleDbConnection() Cn.ConnectionString = "Provider=Microsoft.Jet.OleDb.4.0;Data Source=" & Application.StartupPath & "\products.mdb" Cn.Open() Dim mysql As New OleDb.OleDbCommand() mysql.Connection = Cn mysql.CommandText = "CREATE TABLE '" & TextBox1.Text & "' ('" & TextBox2.Text & "' '" & ComboBox1.Text & "' NOT NULL,'" & TextBox2.Text & "' '" & ComboBox2.Text & "','" & TextBox3.Text & "' '" & ComboBox3.Text & "',PRIMARY KEY('" & TextBox1.Text & "'))" Cn.Close() End Sub

  • VB2005でACCESSのADO.NETでのテーブル名取得

    VB2005 ACCESSのテーブル名を取得したいのですが、方法をご教示ください。以下のところで悩んでいます。 OpenFileDialog1.Filter = "アクセス ファイル (*.mdb)|*.mdb" OpenFileDialog1.ShowDialog() If OpenFileDialog1.FileName <> "" Then Dim St As String Dim Cn As New System.Data.OleDb.OleDbConnection Dim SQL As System.Data.OleDb.OleDbCommand Dim UserID As String = "Admin" Dim Password As String = "" Dim MDBFile As String = OpenFileDialog1.FileName Dim N As String = Microsoft.VisualBasic.Right(MDBFile, 9) St = "Provider=""Microsoft.Jet.OLEDB.4.0"";" St &= "Data Source=""" & MDBFile & """;" St &= "User ID=" & UserID & ";" St &= "Jet OLEDB:Database Password=" & Password Cn.ConnectionString = St SQL = Cn.CreateCommand    Cn.Open() この後テーブル名までたどり着けません DataTable  Cn.GetSchema Cn.GetOleDbSchemaTable( "restrictions") などヘルプなどから試みていますが、これらのコーディング法がわかりません。 テーブル名がわかっている(サンプルのPubs の "Publisher")場合はデータセットからはフィールド名が取得できたのですが・・・ よろしくお願いいたします。

  • sqlでのIIFの使用方法

    accsessのテーブルデータで4列10000レコードのデータを作成し 先頭列にチェックボックスを配置したうえでvb2008 express editionで作成したソフトのdatagridview上でデータを表示し、使う人がチェックボックスをチェックすることにより、選択したレコードデータを別ファイルに保存できるようにしています。mdbのテーブル名は"No1"です。データ連結はdatatableを使用しています。そこで、datagridviewのチェックボックスの変化をmdbテーブルに反映させる処理をdatagridviewのcellcontentclickイベントに Dim Cn As New OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & basePath) Dim SQLCM As OleDbCommand = Cn.CreateCommand SQLCM.CommandText = "UPDATE No1 SET iif(チェック = False, チェック = True , チェック = False) WHERE ID = " & e.RowIndex + 1 Cn.Open() SQLCM.ExecuteNonQuery() Cn.Close() と書き込んで処理しようとしていますが、UPDATEステートメント構文エラーと表示され処理できません。TRUEに変更する処理は Dim Cn As New OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & basePath) Dim SQLCM As OleDbCommand = Cn.CreateCommand SQLCM.CommandText = "UPDATE No1 SET チェック = True WHERE ID = " & e.RowIndex + 1 Cn.Open() SQLCM.ExecuteNonQuery() Cn.Close() でうまくいってます。IIFの使用方法が間違っていると思うのですが。どなたかお教えねがえないでしょうか。開発環境は、Vista Home premium、mdbはaccess2003で作成しています。

  • Excel VBA について教えて下さい

    Excel VBA でAccess接続します 今までは Sub aaa() Set cn = CreateObject("ADODB.Connection") cn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=aaa.mdb;" End Sub のように使っていましたが(単一プロシージャ) Set cn = CreateObject("ADODB.Connection") の部分をパブリックにして Sub bbb() cn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=aaa.mdb;" End Sub 別のプロシージャからも、使えるためには パブリックにするための方法を教えて下さい

  • アクセスDbのテーブル名の取得(VB2005)

    再度の質問です アクセスDBのテーブル名を取得したのですが、方法をご教示ください。DAOでは tabledefsでとれたのですが・・ 以下のコードで先に進めません。 OpenFileDialog1.Filter = "アクセス ファイル (*.mdb)|*.mdb" OpenFileDialog1.ShowDialog() If OpenFileDialog1.FileName <> "" Then Dim St As String Dim Cn As New System.Data.OleDb.OleDbConnection Dim SQL As System.Data.OleDb.OleDbCommand Dim UserID As String = "Admin" Dim Password As String = "" Dim MDBFile As String = OpenFileDialog1.FileName Dim N As String = Microsoft.VisualBasic.Right(MDBFile, 9) St = "Provider=""Microsoft.Jet.OLEDB.4.0"";" St &= "Data Source=""" & MDBFile & """;" St &= "User ID=" & UserID & ";" St &= "Jet OLEDB:Database Password=" & Password Cn.ConnectionString = St SQL = Cn.CreateCommand Cn.Open() Dim tbl As DataTable tbl = Cn.GetOleDbSchemaTable(OleDb.OleDbSchemaGuid.Tables, New Object() {Nothing, Nothing, Nothing, "TABLE"}) ここでtblを見ると TABLE_CATALOG _SCHEMA _NAME _TYPE ・・・DATE_MODIFIED などは見えるのですが、これがDB内のテーブル数だけ繰り返されます。 取得したいのは、TABLE_NAME に ある 例えば "Pub-ID"に相当する内容なのですが、HELPで探しても、その方法がわかりません、ぜひ教えてください。よろしくお願いいたします。

専門家に質問してみよう