• 締切済み

DBへのINSERT時に実行時エラーが発生

いつもお世話になっております。 現在、VBでDB(Oracle)にデータをINSERTするプログラムを作成したのですが、 実行時エラーが発生してしまいます。 色々調べてみたのですが、解決出来ず…です。 原因がわかる方がいらっしゃいましたら御教授下さい。 エラー詳細を下記します。 宜しくお願い致します。 【エラー詳細】 実行時エラー:40002 07S01:デフォルト・パラメータの不正使用です。

  • brhmn
  • お礼率63% (103/162)

みんなの回答

  • oboroxx
  • ベストアンサー率40% (317/792)
回答No.3

ODP.NETを使用している場合は違うかもしれませんが、OracleDataAdapterを使用しているとして、お話を進めます。 OracleDataAdapterのRowUpdatingイベントで引数のOracleRowUpdatingEventArgsのメンバーにCommandがあると思います。 これはOracleCommand型で、Insertをする時に止めてこれを見ればメンバーのCommandTextにSQL文が入っていると思います。 パラメーターを使用しているならば、Prametersを見ればパラメーターの値が調べられますのでチェックしてみてください。

回答No.2

実行時エラーなら、吐き出すクエリが間違っているのでしょう。 デバッグ実行やログ出力などで挿入しようとしているInsert文を抜き出せませんか? そのInsertをOracleで直接叩いてみてください。 きっと幸せになれます。

  • ken2r
  • ベストアンサー率25% (1/4)
回答No.1

Oracleが出してるエラーならエラー番号やエラーメッセージ で自分でネット検索したほうが早いですよ。

関連するQ&A

  • まれにinsertエラーが発生する

    VB6からWindows版PostgreSQL8.2.4へ書き込みを行っています。 まれにinsertエラーが発生する為、困っています。(2日~7日に1回) エラー時のSQLログがあり、SQL文に間違いが無いことは確認ずみです。 エラー詳細を取っておらず詳細がわかりません。 (実際に現象を発生させようとしましたが、発生しません。) 追加するテーブル自体に主キーは設定していません。 データの書き込みは15秒に2レコード位なのですが、Update文の直後のinsert文がまれに失敗します。 とりあえず、トランザクション処理で回避していますが、PostgreSQLの設定値などの変更により、回避出来るのでしょうか。 また、この様な事はよくあることなのでしょうか。 説明が分かりづらく申し訳ありませんが、 宜しくお願いします。

  • VBで作成したパッケージを実行すると実行時エラー'429'が発生してしまいます。

    VBにてcsvファイルのデータをOracleデータベースにinsert、updateするプログラムを作成し、開発パソコンにて正常に動作することを確認しました。 開発パソコン ・Windows2000 Server(SP3) ・Visual Basic 6.0 Enterprise Edition ・Oracle 9i 本番パソコン ・Windows2000 Server(SP3) ・Oracle 9i テストパソコン ・Windows2000 Professional(SP1) 今、上記のように3台のパソコンがあります。 開発パソコンで開発したVBのプログラムをコンパイルしてexeを作成し、開発パソコン上から開発パソコン上のオラクルに対してプログラムを実行すると正常に動作します。 本番パソコンには、Visual Basicをインストールしていないため、プログラムを実行できるようにするには開発パソコンにてディストリビューションウィザードを使ってセットアッププログラムを作成し、本番パソコンにインストールする必要があると思います(質問1.ここまでは正しいですよね??)。 そこでウィザードに沿ってセットアッププログラムを作成し、まずはテストパソコンにてインストール後に実行してみたのですが、エラーが出てしまいました。 「実行時エラー'429' ActiveX コンポーネントはオブジェクトを作成できません。」 質問2.どうすればエラーが発生することなくプログラムを実行できるようになるでしょうか? テストパソコンにオラクルクライアントが必要?それとも何かDLLの更新などが必要? もしおわかりの方いらっしゃいましたら教えて下さい。 よろしくお願いします。

  • VB6より長文INSERT文でORA1756単一引用符が閉じられていないが発生する

    初めまして。 VB6、ORACLE8iでダイナセットを使用しテーブルに対してINSERT文を 発行していますが、INSERT文が長文になると”単一引用符が閉じられていません” とエラーが返ってきます。このSQL文と同一のものをPLUSにて実行させても 同一のエラーが発生するのですが、メモ帳等で改行して一行を短くすると 正常にINSERTされます。 それならと思い、SQL文作成コード内に改行コードを挿入したのですが VB上からは同じようにエラーが返ってきます。改行コード入りのSQL文を イミディエイトより取り込みPLUSにて実行させると正常に動作します。 どうすればVB上から正常実行できるのでしょうか? 初心者ゆえどうすればよいかさっぱりわからなくなりました。 VB上からは何か制約があるのでしょうか? どなたかご存知の方ご教授願います。 長文失礼しました。

  • VB 実行時エラー '3001'

    VB6.0(SP5)で開発していて、エラーが発生して困っております。 今まで使っていたプログラムにちょっとバグ改修をして、新しいバージョンのプログラムを配布したら、Win98マシンで何台か、次のエラーが出ました。 「実行時エラー'3001': 間違った種類または許容範囲外の引数を使用しているか、使用している引数が競合しています。」 プログラムは、「ログイン画面を表示し、IDとパスワードを入力し、DBに登録されているID&パスワードだったら実行」という処理をしています。DBはMySQLです。 エラーが出るマシンでは、このログイン画面(VBForm)が出る前に上記エラーを表示して、終了してしまいます。 ログイン画面を表示するまでの処理としては、 ・.iniファイルから各種パラメータを読み込んで変数にセット ・DBへの接続の文字列を作成する ・AdoConnectSetを実行 ・Formの各種プロパティを設定 ・FormのShowを実行 このような感じです。 そしてさらによくわからないのが、上記手順の合間合間に、MsgBox関数で「○○が終わった」などと、進行状況を表示する処理を追加すると、エラーが発生することなく、ログイン画面の表示までたどり着けるのです。 開発機はWin2000マシンですが、実行しているのはWin95,98,2000などいろいろで、上記のエラーが出るのは98マシンです。 (98マシンでちゃんと動作するのもあります) ズバリの解決法、情報へのポインタ、アドバイス、ヒント... を求めております。よろしくお願いいたします。

  • (Windows7)VB6でODBC接続エラー

    動作環境 OS:Windows7(64bit) DB:SQL2008 Express(SP1) VB6ランタイム適用済 お世話になります。 自作のVB6EXEをWindows7で実行したところ、下記のエラーが発生してしまいます。 ErrNo:-2147168242 メッセージ:アクティブなトランザクションがありません。 ソース上のどこで発生しているのか調べたところDBのCommit時に発生 していました。 ソース:  BeginTrans  Insert文  CommitTrans  ←ここでエラー エラーにはなるのですが、Insert文の内容はDBに反映されます。 また、BeginTrans、CommitTransを使用せず、Update、Insertのみを実行した 場合はエラーは発生しません。(DBにも値が登録されます) 現状、RollbackTransができない状態です。 以下は試してみたがダメだった内容です。  ・XPやVistaでは正常に動作していたので、互換モードをVistaに設定して実行  ・Windows7(32bit)で実行 調べていて、ODBCはデフォルトで自動コミットするという記載を見かけたのですが、 DB接続時に何かしらプロパティの設定が必要なのでしょうか? 上記エラーの回避策をご存知の方がいらっしゃいましたら、ご教授願います。

  • 実行時エラー '8021'とはどんな内容のエラーでしょうか?

    VB6 でプログラムを作成していますが、たまに"実行時エラー'8021':DCB (Device Control Block)の取得時に、ポートで内部エラーが発生しました。"というメッセージが表示されプログラムが止まってしまいます。どういった内容のエラーなのか分かりませんので、しっている方がいらっしゃいましたら教えて頂きたいのですが。よろしくお願いします。

  • insertでのエラーについて

    お世話になります。 アップロードしたバイナリデータを変数に入れて、それをinsertしているのですが、DBに入りません。 テーブルでは、data mediumblob not nullと設定しています。Perlスクリプト内で、次のように書いています。 $sql="insert into data_tbl(data)"; $sql.="values('" . $datafile . "')"; 上記の$datafileにバイナリデータが入っています。 このようにして実行しているのですが、You have an error in your SQL syntax. とエラーになりDBに格納できません。ご教授よろしくお願いします。

  • VB6.0で実行の度に異なるエラー

    VB6.0,Windows2000で作成したプログラムについてなのですが,立ち上げなおして実行する度に「実行時エラー'6' オーバーフローしました」「インデックスが有効範囲にありません」等のエラーが出て実行できない場合と,正常に実行できる場合があります. (実行の度に実際に異なるエラーが発生している訳ではないと思います) このような現象は何が原因だと考えられるのでしょうか. ご存知の方ご教授ください.

  • SELECT実行中にINSERTしたい

    テーブルTに対し、データ抽出に数分かかるようなSELECT文を実行しているとして、 そのSELECT文の実行中にInsertしたらどのような挙動になるでしょうか。 (INSERTした瞬間にエラーが発生する?) また、SELECT文の実行中にInsertしたら、 「SELECT文が実行終了するまで待って、そのあとにINSERTする」 という動きにしたい場合、どのように設定(or SQLを書けば?)すればよいでしょうか。

    • ベストアンサー
    • MySQL
  • Insert時に一意制約エラーがでる。

    よろしくお願いします。 VB6.0 DB:ORACLE8.1.6 クライアントWIN2000 サーバーWIN2000SERVER VBでデータをINSERTするプログラムを作ったのですが、どうしても一意制約エラーが出てしまいます。 これはデータの都合上仕方が無いのか? (データの主キーに「.」が入っているのでエラーになるのでしょうか?) プログラムが悪いのか? よろしくお願いします。 エラーは2回目の実行部分です。 データ(すべて文字型) 000   001   002 ベルリン12345 ベルリン 12345 ベルリン123.45 ベルリン 123.45 ベルリン123 45 ベルリン 123 45 プログラム strSql = "Insert Into KUNIBETU(k000,k001,k002) Values ('ベルリン12345','ベルリン,'12345')" '処理のチェック If Execute_sql(strSql) = False Then Err.Raise -1, , "失敗しました!" cn.RollbackTrans rs.Close Set rs = Nothing cn.Close Set cn = Nothing Exit Sub End If strSql = "Insert Into KUNIBETU(k000,k001,k002) Values ('ベルリン1234.5','ベルリン','123.45')" '処理のチェック If Execute_sql(strSql) = False Then Public Function Execute_sql(strSql As String) As Boolean Dim cmd As New ADODB.Command Execute_sql = False ' Commandオブジェクトを作成 Set cmd = New ADODB.Command cmd.ActiveConnection = cn cmd.CommandText = strSql ' アクション クエリーを実行 cmd.Execute      ←←←←←←エラー部分 Set cmd = Nothing Execute_sql = True Exit Function

専門家に質問してみよう