vb6.0実行時エラー'3075'の原因とは?

このQ&Aのポイント
  • Microsoft Visual Basic 6.0で以下のSQLを実行すると、実行時エラー'3075'が発生します。エラーの原因とは何でしょうか?
  • 実行時エラー'3075'が発生する場合、SQLの条件式やデータベースのフィールド名の指定が正しいか確認してください。
  • また、SQL文の組み立て方法やデータ型の不一致などもエラーの原因となることがあります。
回答を見る
  • ベストアンサー

vb6.0の実行時エラー'3075'について

システム: Microsoft Windows XP Professional Version 2002 Service Pack 3 データベース: Microsoft(R) Access 2000 言語: Microsoft Visual Basic 6.0 For 32-bit Windows Development で、以下のSQLを実行すると、実行時エラー'3075'が発生します。 xSQL1 = xSQL1 & " WHERE ((条件2 = '1' OR 条件3 = '1') " xSQL1 = xSQL1 & " AND (((int(使用現場数) >= 2) " xSQL1 = xSQL1 & " OR ((使用現場数 = '1' AND 調査年数 >= '1' " xSQL1 = xSQL1 & "AND ((最新の場所 in ('自社倉庫','自社空地','貸倉庫','借地','その他')))" xSQL1 = xSQL1 & "OR ((処分日 is not null) or 処分日 <> """")) ))" xSQL1 = xSQL1 & " AND (機械コード番号2 = '4401' OR 機械コード番号2 = '4402'" xSQL1 = xSQL1 & " OR 機械コード番号2 = '4702' OR 機械コード番号2 = '4703'" xSQL1 = xSQL1 & " OR 機械コード番号2 = '4704' OR 機械コード番号2 = '4705'" xSQL1 = xSQL1 & " OR 機械コード番号2 = '4706' OR 機械コード番号2 = '4707'" xSQL1 = xSQL1 & " OR 機械コード番号2 = '4708' OR 機械コード番号2 = '4709'" xSQL1 = xSQL1 & " OR 機械コード番号2 = '4710' OR 機械コード番号2 = '4713'" xSQL1 = xSQL1 & " OR 機械コード番号2 = '4309' OR 機械コード番号2 = '4701'))" xSQL1 = xSQL1 & " OR (((int(使用現場数) >= 3)" xSQL1 = xSQL1 & " OR ((使用現場数 = '2' AND 調査年数 >= '1'" xSQL1 = xSQL1 & " AND ((最新の場所 in ('自社倉庫','自社空地','貸倉庫','借地','その他')))" xSQL1 = xSQL1 & " OR ((処分日 is not null) or 処分日 <> """")) ))" xSQL1 = xSQL1 & " AND (機械コード番号2 <> '4401' AND 機械コード番号2 <> '4402'" xSQL1 = xSQL1 & " AND 機械コード番号2 <> '4702' AND 機械コード番号2 <> '4703'" xSQL1 = xSQL1 & " AND 機械コード番号2 <> '4704' AND 機械コード番号2 <> '4705'" xSQL1 = xSQL1 & " AND 機械コード番号2 <> '4706' AND 機械コード番号2 <> '4707'" xSQL1 = xSQL1 & " AND 機械コード番号2 <> '4708' AND 機械コード番号2 <> '4709'" xSQL1 = xSQL1 & " AND 機械コード番号2 <> '4710' AND 機械コード番号2 <> '4713'" xSQL1 = xSQL1 & " AND 機械コード番号2 <> '4309' AND 機械コード番号2 <> '4701'))))" 何がおかしいのでしょうか? ご教授願います。

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

  • ベストアンサー
  • Senna_FF
  • ベストアンサー率45% (153/334)
回答No.4

SQLステートメントの末尾の閉じ括弧”)”が1つ多くないですか?

tikutakutiku
質問者

お礼

すみません。おっしゃる通り")"を1つ削ったら上手く動きました。 こんな初歩的なミスをおかして、お騒がせして申し訳ございませんでした。 皆様、本当にアドバイスありがとうございました。

その他の回答 (3)

  • loveMySai
  • ベストアンサー率48% (12/25)
回答No.3

最近、Access は、いじっていないので、明確なことは、言えませんが、参考までに投稿してみます。 >> accessでSQLを実行してみたところ、『演算子がありません』とのエラーメッセージが表示されました。 との、コメントですが、 xSQL1 = xSQL1 & " OR ((使用現場数 = '1' AND 調査年数 >= '1' " ← この部分で、'1' を、' で、くくっていますが、[調査年数]フィールドの型は、文字列ですか ? つまり、「1」の文字より大きい値を、判断させているような気がします。 xSQL1 = xSQL1 & "OR ((処分日 is not null) or 処分日 <> """")) ))" ← この部分で、[処分日]フィールドのNull値を判断させているようですが、[処分日]フィールドの型は、文字列ですか ? 気持ちは、解りますが、「処分日 <> """"」のような SQL の記載方法で、小生自身、以前、失敗した経験があります。 あと、各々のフィールドの型は、未明ですが、フィールドの型と、判断させる値の型は、一致してますか? 最後に、小生自身、エックス線管の名版作成の歳、Access をデータベースに利用した経験があります。 その際、テーブル名称とフィールド名称を日本語の文字を利用した際、[]で、くくると、うまく動作したことがありました。 的が、外れていたらごめんなさいね。 -以 上-

  • MARU4812
  • ベストアンサー率43% (196/452)
回答No.2

実行時エラー'3075'で検索すれば、SQLの文法が間違っているという レベルで共通だけど、その原因は複数あることが分かります。 Access のエラーメッセージが返ってきたのをそのまま表示している だけだと思われるので、エラーメッセージに日本語で原因を書いて くれてませんか? 「クエリー式'XXX'の文字列の構文エラーです」とか 「演算子がありません」とか。 それに合わせて修正したらいいと思います。 実際に実行されているSQL(提示のものは条件句のみですよね?) をテキスト出力して、Accessで直接実行してみて下さい。 その時点で動かないはずです。

tikutakutiku
質問者

補足

ご回答ありがとうございます。 accessでSQLを実行してみたところ、『演算子がありません』とのエラーメッセージが表示されました。ですが、演算子が足りない箇所はないように見えるのですが。。 ちなみに、vbでのエラーメッセージが表示されるダイアログボックスにメッセージが入りきっていないのですが、どうすればすべてのエラーメッセージを読めるのでしょうか? 基本的なこともわかっていなくて申し訳ないのですが、ご回答をお願い致します。

回答No.1

実行時エラー'3075'が具体的に何を表すかは不明です。 (おそらくSQL文の構文エラー関係のエラーと思われる) 処理日のデータ型が何かわからないが、その比較文は正しいのでしょうか?

tikutakutiku
質問者

補足

ご回答ありがとうございます。 以前は、以下のSQLを実行していましたが、上手く動作していましたので、処分日の比較は正しいと思います。 xSQL1 = "" xSQL1 = "SELECT * " xSQL1 = xSQL1 & " FROM 金額表示一覧表" If FrmHikaku.Chk_genba Then xSQL1 = xSQL1 & " WHERE (条件2 = '1' OR 条件3 = '1') " xSQL1 = xSQL1 & " AND (使用現場数 >= '1' AND 調査年数 >= '1') " Else xSQL1 = xSQL1 & " WHERE (条件2 = '1' OR 条件3 = '1') " xSQL1 = xSQL1 & " AND ((int(使用現場数) >= 2) " xSQL1 = xSQL1 & " OR ((使用現場数 = '1' AND 調査年数 >= '1' " xSQL1 = xSQL1 & "AND ((最新の場所 in ('自社倉庫','自社空地','貸倉庫','借地','その他')))" xSQL1 = xSQL1 & "OR ((処分日 is not null) or 処分日 <> """")) ))" End If すみませんが、ご回答をお願い致します。

関連するQ&A

  • 実行時のエラー。動作環境の確保

    複数の機械(PC-9821 V12;Win95; FMV S3 20;Win95, FMV ME3/505;Win98SE, DELL XPS R450;Win98SE, Aptiva573;Win98, Gateway G6-200;Win95)で実行状況を見ています(Win2000は使えなくなった)。 開発は ME3/505 で行い他の機械で動くかどうかを調べています。 参照設定は Visual Basic For Application Visual Basic runtime object and peocedures Visual Basic object and procedures OLE automation の4つです。 バージョンは Microsoft Visual Basic 6.0(SP5) For 62-bit Windows Development です。 現時点で配布可能な形体にする方法が分からないので RedHouse氏のVisual Basic 6.0 SP5 ランタイムライブラリ http://www.vector.co.jp/soft/win95/util/se188840.html を使用しています。 先に書きました通り、ADO, DAOは使用していません。使い方がわかりません(下記参照)。 http://oshiete1.goo.ne.jp/kotaeru.php3?q=683267 しかし.なぜか. 実行時エラー '429' ActiveXコンポーネットはオブシェクトを作成できません。 が発生します。 すべての機械にVisual Studio をインストールすればよいかもしれません(使用者・所有者がすべて同一人物ですから法律上の問題はないでしょう)が、言語を取り扱う機械は通信回線を切断しておきたい(ウイルス対策)のです。 Visual Studioを導入することなく、すべての機械でEXEファイルコピーだけで動作するようにするには、どのようなことをしたらよいのでしょうか。 なお MDAC 2.7 SP1(下記回答内参照アドレスよりDl)を実行しましたが http://oshiete1.goo.ne.jp/kotaeru.php3?q=510091 と同様に動かない機械では dao360.dll が存在しません。

  • SQL結合条件

    結合抽出(テーブルの表示)の方法はこのままで WHERE句にあるようなの条件を付け加え 計算も行いたいのですが、よい方法はありませんか? どなたか、ご享受ください。 SELECT MS.商品コード, MS.倉庫コード, MS.現在庫数, ISNULL(SUM(UTP.数量),0)  T売上明細ファイル1OR4, MS.現在庫数 + ISNULL(SUM(UTP.数量),0)  帳簿在庫 FROM T商品別倉庫在庫 MS LEFT JOIN T売上明細ファイル UTP ON MS.倉庫コード = UTP.倉庫コード AND MS.商品コード = UTP.商品コード --WHERE --T売上明細ファイル UTP PLUS条件 -- UTP.売上区分コード = 1 --OR --UTP.売上区分コード = 4 GROUP BY MS.商品コード, MS.倉庫コード, MS.現在庫数

  • VB5 SP3、Spread2.5J環境で実行時エラー

    OS:WinXP PRO SP2、WinNT SP6 他 VB:5.0 SP3 SPREAD:2.5J (1998/07/25) 上記環境で作成したプログラムがあります。 プロジェクトの構成は、検索画面、メイン画面、コード検索用子画面と いった画面があり、それぞれにスプレッドを使用しています。 メイン画面のスプレッドは、行が取引先、列が商品のマトリックスに なっていて、検索したデータによって、コンボボックス型や、 チェックボックス型のセルが作られ、背景色もセル毎に変更されます。 複雑な請求書のプログラムですので、EXEのサイズや、メモリ使用量などは、 結構なものなのですが、最近までは問題なく動作していました。 その状態から、取引先毎に小計行を追加したり、実績数が未入力の行を 非表示にするコンボボックスを追加する仕様変更を行い、普通に使う分には 問題なく動作しています。 しかし、3,500行程度のデータを表示して、下の方の取引先の実績数を 入力後、実績数未入力のデータを非表示にした場合、下記の3つのエラーが エラートラップに関係無く表示され、VB(or EXE)が終了することがあります。 同じ処理をしても、現象が出る時と出ない時があります。 1.実行時エラー '-2147417848(80010108)' 'Action'メソッドは失敗しました:'_DSpreadSheet'オブジェクト (※ReDrawの場合もあり) 2.問題が発生したため、Visual Basicを終了します。 3.vb5.exe-アプリケーションエラー "0x76992d36"の命令が"0xf3011ad6"のメモリを参照しました。 メモリが"read"になることはできませんでした。 GrapeCity社のサイトや、他のHPでも検索したのですが、同様の現象が 見当たらず、メモリ使用を極力抑えたロジックに変更してみたりも したのですが、全く状況が変わらず困窮しております。 OSをインストールし直しても同じです。 同様の現象が出た方はいらっしゃいますでしょうか? また、対処方法を御存知の方がいらっしゃいましたら、御教えください。 よろしくお願い致します。

  • WHERE句の制限の有無について

    下記の様なWHERE句を使っていますが、注釈の部分を生かす 極端に時間がかかるようになってしまいます。 (注釈は他の行でも大丈夫です、2~3行殺せば早くなります) なにか制限でもあるのでしょうか? WHERE u.締日コード = @締日コード AND u.入庫日付 <= @終了日付 AND u.部門コード = isnull(@部門コード,u.部門コード) AND u.分類 in ('輸入','輸出') AND u.分類 = isnull(@分類,u.分類) AND u.仕訳コード = isnull(@仕訳コード,u.仕訳コード) AND u.商社 = isnull(@商社,u.商社) --下記を復活すると遅くなる(4秒→38秒) --AND u.保管河岸コード =isnull(@保管河岸コード,u.保管河岸コード) --AND u.品名コード =isnull(@品名コード,u.品名コード) AND ( u.在庫員数 <> 0 or ISNULL(a.当期出庫員数,0) <> 0 or ISNULL(b.出庫員数,0) <> 0 or u.在庫重量 <> 0 or ISNULL(a.当期出庫重量,0) <> 0 or ISNULL(b.出庫重量,0) <> 0 )

  • VBでの実行時エラー’429’について

    お世話になります。 PC環境はWindowsXP SP2です。 VB6.0のexeから.NETのDLLを利用する・・・というのをしているのですが、 3台のPCのうち、一台だけどうしても「実行時エラー'429'ACtiveXコンポーネントはオブジェクトを作成できません」というメッセージが出て異常終了になってしまいます。 この一台だけOSから再インストールし直しても動かず、困っています。 .NETのdllにデバッグ用のメッセージを組み込んでみたのですが、 メッセージが出ないので、どうやらDLLコール時にエラーとなっているようです。 Windows ScriptのVB Scriptを最新にしてみたり、 system32配下にdao360.dllがなかったので、追加してregsvr32コマンドにてレジストリ登録したりしたのですが、 どうも上手くいきません。 お忙しいところ恐れ入りますが、 何か思い当たる点などありましたらご教授願えませんでしょうか? よろしくお願いします。

  • VB5.0 で実行時エラーがでる

    VB5.0でDBGRIDを呼び出し、戻ってきてからメッセージボックスを表示しようとすると、「実行時エラー5 プロシージャの呼び出し、または引数が不正です」が出ます。それもEXEから実行する時だけです。 OSはXPです。 以下のプログラムで、メッセージボックスを表示しなかったら実行時エラーはでません。 F_SelKokyak.Show vbModal If Wk_Modoru = 0 Then   Set RecUri = MAINdb.OpenRecordset("Select * " & _ " From FT_Uriage " & _ " Where Uri_MiseCode = " & Wk_MiseCode & _ " And Uri_KaisKbn = " & 1 & _ " And Uri_KyakCode = " & Sel_KyakCode & _ " And Uri_UriSbt = " & 0 & _ " And Uri_UriKakKin <> 0" & _ " Order By Uri_UriNo; ") If RecUri.RecordCount = 0 Then RecUri.Close Set RecUri = Nothing If Wk_KaisKbn = 2 Then MsgBox "売掛金はありません。", vbCritical, "入力エラー" F_EigMainInp!txtKyakName2.SetFocus Exit Sub End If End If

  • ガラス器具のリサイクル

    会社の倉庫を整理していたら、200~500mlのビーカー、50~200mlのフラスコが合計で300点くらい出てきました。皆新品同様or洗浄すれば使えそうな状態の良いものばかりです。 今後、業務での使用予定はなく、倉庫も手狭な為、処分しなくてはなりません。 ただ廃棄物(ゴミ)としてしまうのはあまりにもったいないので、引き取り先を探そうと思います。 何か良い方法があればご意見ください(処分については、上司からまかされています)。

  • 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マシンでちゃんと動作するのもあります) ズバリの解決法、情報へのポインタ、アドバイス、ヒント... を求めております。よろしくお願いいたします。

  • VB6.0 実行時エラー 374について

    スミマセンが、どなたか教えてください。 顧客先よりシステムのバックアップを持って戻り、 自分の事務所にて復元させようとしてバックアップファイルを展開しました。ソフトはVB6.0で作られているので一応、デバッグ環境にも VB6.0はインストールしました。 デバッグ環境にて現地のexeを実行したところ、 実行時エラー 374 コントロール'VB.UserControl'をアクティブ化できませんでした。 このコントロールにこのアプリケーションとの互換性がない可能性があります。 アプリケーションで提供されたバージョンのコントロールを使用しているかどうか確認して下さい。 上記のメッセージが表示されてアプリケーションが動きません。 この場合の解決方法をご存知の方がいらっしゃいましたら教えていただけませんか? よろしくお願い致します。

  • VBでの実行時エラー’424’について

    現在サーバのリプレースをおこなっております。 旧サーバ:Win NT Server 4.0 SP6 新サーバ:Win 2003 Server 旧サーバで稼動していたVBのexeを新サーバで動かそうとすると 「424 オブジェクトが必要です」というエラーになります。 exeはVB5.0で作成されたものです。 PG内でDAOを使ってOracleへ接続おり、その辺りが怪しいのかなと思うのですが、解決できず困っています。 同じような経験をされた方、DAO接続についてご存知の方、なにか情報ありましたらご教授いただけないでしょうか。