• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:VBでExecuteが通らない)

VBでExecuteが通らない

このQ&Aのポイント
  • VBでODBCデータベースを開く手順とレコードセットの取得方法を説明した後、データの削除を行う際に発生したエラーについての質問です。
  • 質問者はODBCの設定や構文に間違いがないか疑問を持っており、解決方法を求めています。
  • 初歩的な質問ですが、VBでExecuteが通らない際の原因や解決策について教えてください。

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

  • ベストアンサー
  • zerosix
  • ベストアンサー率31% (47/149)
回答No.1

Numフィールドのデータ型が文字型の場合、 "delete from テーブルA where Num = '0001'" を実行してはどうなりますか?

as-naoki
質問者

お礼

ずばりいけました! 何の事はない、構文が間違ってたんですね・・・お恥ずかしい。 ODBCがどうとかってエラーが出るんで、SQL発行までいってないのかと思ってました。(^^; どうもありがとうございました。

全文を見る
すると、全ての回答が全文表示されます。

その他の回答 (1)

  • miya_777
  • ベストアンサー率31% (44/140)
回答No.2

ODBC--呼び出しは失敗しました。(Error 3146) ODBC を使用中に、SQL データベースのデータに対して操作を実行しようとしました。 SQL データベースがネットワーク ドライブ上にあり、ネットワークとの接続が切断していると、このエラーが発生します。 ネットワークが接続しているかどうかを確認して再度操作を行ってください。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • plpgsqlのエスケープ文字について

    plpgsqlのエスケープ文字について教えてください tblのテーブルのnameフィールドの値をtitleフィールドに更新する関数を作成してます。 cur cursor for SELECT id, name FROM tbl; rec RECO RD; begin open cur; LOOP FETCH cur INTO rec; EXIT WHEM NOT FOUND; w_sql := ''UPDAT tbl SET title = ''; w_sql := w_sql ll '' ''''タイトル: '' ll rec.name ll '' '''' ''; w_sql := w_sql ll '' WHERE id= '' ll rec.id= '' ll rec.id ; EXECUTE w_sql; END LOOP; ・ ・ ・ ・ ・ 上記のようにnameフィールドの値をset句に設定していますが、 nameフィールドには 「90's」 や「men's」 のような値が入ったレコードがあるためエラーとなってしまいます。 name内の「'」をエスケープする為にはどのように書けばよいでしょうか 教えてください

  • レコードセットに新規追加する

    Access2013 VBAで ■テーブルa ・id ・名前 ・id2 とあり このテーブルのレコードセットを以下のように作ります。 dim Rec = dao.Recordset Set Db = CurrentDB set Rec = Db.OpenRecordset("Select * from [テーブルa] where id2 = " & 2, dbOpenDynaset) この時、このテーブルにid2=2のレコードが何もない場合、この生成したRecで、 Rec.AddNew Rec.Fields("名前").value = "名前" Rec.Update と出来ますでしょうか? よろしくお願いします。

  • ExecuteとRunSQLの違いって・・・?

    AccessのモジュールでSQLを流す処理ですが、 Insert Into テーブル名(フィールド名…) Select フィールド名… From テーブル名 Where フィールド名 = N(Double型変数) このようなSQLを実行する場合に CurrentDB.Execute SQL文  で実行するとオーバーフローのエラーがつきます。 同じ文を DoCmd.RunSQL SQL文  で実行すると正常に動作します。 変数Nの値がLONGの範囲内だとExecuteを使っても正常に動作するようです。 Insert先、元のデータ型はあってますので変数Nの内容に関係していると思うのですが… Nの値がLongの範囲内であれば、Executeでも正常に動作するようです。 Executeで扱える数値の制限みたいなものはあるのでしょうか?

  • Access2010でODBCDirectの代わり

    Access2003、2007でODBCダイレクトをつかってSQLServerにテーブルリンクをしています。 Access2010では下記のプログラムは ODBCDirectが使えない旨のエラーとなるので、他の方法で接続を行い、つづくしょりでテーブルのリンクをしたいのですが、方法がわかりません。 もしかするとAccess2010ではこのようなことはできないのかとあきらめているのですが、方法がありましたらご指導いただけると幸いです。 よろしくお願いいたします。 'ローカルDB定義 Set dbLocal = CurrentDb 'ODBC Direct コネクション確立 Set dbCrWs = CreateWorkspace("DIrectWorkspace", "", "", dbUseODBC) Set dbConn = dbCrWs.OpenConnection("", dbDriverNoPrompt, False, strConnect) 'SQL パススルークエリー コネクション確立 Set dbPtQr = CurrentDb Set dbPtQd = dbPtQr.QueryDefs("パススルークエリ") dbPtQd.Connect = strConnect SetConnect = True Exit Function

  • 一つのテキストフィールドで抽出データを変えたい

    いつもお世話になっております。 早速ですが、一つのテキストフィールドで2種類の抽出条件を検索したいのです。 sql="select * from A where (code>='" & str &"' or name>='" & str &"')" のようにSQLへ問い合わせしております。 ユーザーが検索するときにcodeで検索かけるかmameで検索かけるか分からないので、どちらが入力されても検索できるようにしたいのです。 ちょっと変わったことをしていまして、codeが「0123」以上のものまたはnameが「あああ」以上のものを検索したいです。 sql="select * from A where (code='" & str &"' or name='" & str &"')" のように一意のものを検索することは出来ております。 また、それぞれ sql="select * from A where (code>='" & str &"')" sql="select * from A where (name>='" & str &"')" ではどちらも検索出来ております。 これを上記のようにORでくっつけるとnameのほうだけ検索可になりました。 設定方法が間違えていますでしょうか? わかる方がいましたら、ご協力お願いします。

  • VBでODBC接続して更新・削除できない

    VBとSQLSerever2003を接続してプログラムしています。 ネットで検索しつつ以下のコードで接続できました。 Set SQL_DB = SQL_WSpace.OpenDatabase("", False, False, "ODBC;Driver={SQL Server};" "SERVER=" & (DATABASE_SERVER) & ";" "DATABASE=" & (DATABASE_NAME) & ";" "UID=" & (DB_ID) & ";" "PWD=" & (DB_PASS) & ";" SELECT文は問題ないのですが、DELETE文とUPDATE文だと、「指定されたテーブルから削除できませんでした」、「更新可能なクエリであることが必要です」とでます。アドバイスをお願いします。

  • 数種類のテーブルの呼び出し

    こんにちは。 全く違うフィールドを含む数種類のテーブルを全て呼び出して一覧表示するためにはどういった命令を実行すればよいのでしょうか? selectはsql文の中で一度しか使えないということはわかったのですが・・・ 例えばテーブル1(フィールドはnumber,name)テーブル2(フィールドはdate,time) とした時、出力される結果としては テーブル1 number,name テーブル2 date,time ということです。 select文を2回使えるのであれば、 $sql = "select * from テーブル1 and select * from テーブル2"; という命令でいけると考えたのですが・・・

  • DAOでODBC経由のRDBに接続し、SQLでアクセスしたい。

    Dim ws As DAO.Workspace, db As DAO.Database Dim rs As DAO.Recordset ' デフォルトのワークスペースを定義する Set ws = DBEngine.Workspaces(0) ' ODBC接続文字列を指定してデータベースを開く Set db = ws.OpenDatabase("", False, False, _ "DSN=SQL_K;ODBC;Driver={SQK_K};" & _ "SERVER=(local);DATABASE=pubs;" & _ "UID=*****;PWD=*****;" ' SQLステートメントを指定してレコードセットを作成する Set rs = db.OpenRecordset("select * from TWSQLK1",dbOpenDynaset, dbSeeChanges)   このレコードセットは正常に行きますが   直接SQLを記述する方法が、わかりません   

  • vb ado → vb2005 ado.net変換

    お世話になります。初めて投稿させていただきます。 VB6.0で下記のようなコードでコンボボックスcboMakerへフィールド値を格納しているのですがこのコードをVB2005のado.netで記述したいのですが可能でしょうか?可能であればどのようなコードを書けばよいのでしょうか。フィールドの値を1レコードづつ取得することは可能なのでしょうか? 初心者ですみません。宜しくお願いします。 Dim con As ADODB.Connection Dim rec As ADODB.Recordset Dim sql As String Dim recCnt As Long con = New ADODB.Connection con.ConnectionString "Provider=Microsoft.Jet.OLEDB.4.0;" & _ "Data Source=" & パス con.Open() rec = New ADODB.Recordset sql = "SELECT * FROM " & テーブル名 rec.Open(sql, con, adOpenStatic, adLockReadOnly) If rec.RecordCount < 1 Then 'レコードが存在しない MsgBox("未登録です。", G_MB_CAUTION, G_SYSTEM_NAME) Exit Function Else ReDim CboMakerId(rec.RecordCount) End If 'コンボボックスに値を挿入 ※「.List(recCnt)」から値を挿入する With Me.cboMaker .Clear() recCnt = 0 .List(recCnt) = "" .ItemData(recCnt) = 0 Do Until rec.EOF recCnt = recCnt + 1 .List(recCnt) = rec("Name") .ItemData(recCnt) = rec("ID") rec.MoveNext() Loop End With Me.cboMaker.ListIndex = 0 rec.Close() : rec = Nothing con.Close() : rec = Nothing End Function

  • 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での書き方)がわからないです。 よろしくお願いします。

このQ&Aのポイント
  • EPSON PX-M5081Fプリンターで034503エラーが発生しました。電源を何度か入れ直してもエラーが解消されません。エラーの解消方法を教えてください。
  • EPSON PX-M5081Fのプリンターエラー、034503が表示されます。電源の再起動を試してもエラーが解消されません。エラー解消方法を教えてください。
  • PX-M5081Fプリンターで034503エラーが発生しました。電源を数回再起動しても同様のエラーが表示されます。解消方法を教えてください。
回答を見る

専門家に質問してみよう