• ベストアンサー

VBでクエリー作成したい

失礼します。 初心者です。VBでクエリーを作成したいのですが、うまくいきません。 SQL分を作成してCreateQueryDef関数で作成しています。クエリーの作成自体はできます。しかし、DBからそのクエリーを開こうとすると、未定義関数・・・と表示されます。原因がデータの中にセールスポイント(1)というものがあり、この()(カッコ)があるとこのエラーがでているようです。しかし、こちらの都合上カッコをなくすことはできません。このカッコをエラーせずに指定できる方法はないでしょうか。 分かりにくい説明で申し訳ないですが、助けてください。

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

  • ベストアンサー
noname#182251
noname#182251
回答No.3

簡単なSQL文で試してみました SELECT テーブル1.名前(1) FROM テーブル1; これは「未定義関数・・・」のエラーが発生します で「問題部分」を[]でくくると SELECT テーブル1.[名前(1)] FROM テーブル1; エラーは発生しないようです。実際の環境でいかがでしょうか。 ちなみに[]でくくる方法は、アクセスのクエリー作成(デザインビュー)で作ったものを、SQL文として見ただけです。簡単ですが色々有効に使える手段だと思います。

vivatom
質問者

お礼

早速の返信ありがとうございます。 問題解決しました!助かりました。ありがとうございました。

その他の回答 (2)

noname#182251
noname#182251
回答No.2

SQL分(文?)を、少なくとも「未定義関数・・・」のエラーが発生する状態で提示できないでしょうか?

vivatom
質問者

補足

お返事いただきましてありがとうございます。 分かりにくくて申し訳ないです。 SQL文は以下にしています。 SQL = "SELECT 出品落札.回次No,出品落札.開催日,出品落札.出品No,出品落札.表示年,出品落札.検索年,出品落札.セールスポイント(1) " SQL = SQL & "FROM (出品落札 LEFT JOIN CarAC ON 出品落札.エアコンコード = CarAC.エアコンコード) このときにセールスポイント(1)を読み込んでくれないのです。テーブル側の(1)を省き、SQL文セールスポイントのみに変更すると、問題なく読み込めるのでこのカッコが原因ではないかと考えているのですが。ご教授ください。

  • VT250F
  • ベストアンサー率30% (26/84)
回答No.1

知人のホームページを紹介するので参考にして下さい 参考URL から、Visual Basic Tips を選択 その中のタイトル「Jetデータベース(DAO)クエリーの作成と削除」あたりに解法があると思います。

参考URL:
http://www.geocities.co.jp/SiliconValley/4805/

関連するQ&A

  • VB6.0について教えてください。

    毎回お世話になっております。 現在、ACCESSで簡単なDBソフトを作成していますが、VB6.0で作成したいと思っています。VB6.0はACCESSのようなクエリを作成したり、一度作成したクエリを使って新たにクエリを作成したりできるのでしょうか? ACCESSをVBに置き換えた際、一番の違いやアドバイスを頂けたら有難いです。よろしくお願いいたします。

  • VB2005でSQL Server新規データベース作成

    VB2005からプログラムを使って、SQL Server2005のデータベースを新規に作成する方法を探しています。よくVB2005からプログラムを介して、SQLサーバーに接続する方法は見かけるのですが、新規にデータベースを作成するサンプルにお目にかかれません。 資料を見ながら「SqlCeEngine」等を使って試行錯誤しながらやってはいるものの、「定義されていない」とかエラーになってしまって・・・ VB2005もSQL Server2005もお初なのでパニック状態です。 先ずはサンプルプログラム等あれば参考にしたいのですが何方か教えて頂けないでしょうか。宜しくお願いします。

  • queryとparam

    下記のexecute_query関数はどのような処理を行う関数ですか? $paramの意味が分からないです。 // PDO、SQL文、$paramを利用してプリペアドステートメントを実行する function execute_query($db, $sql, $params = array()){ try{ $statement = $db->prepare($sql); return $statement->execute($params); }catch(PDOException $e){ set_error('更新に失敗しました。'); } return false; } // 添え字が '__error' のものをさらに配列として(二次元配列)要素を追加して変数 $errorの内容とする // $_SESSION['__error'] を配列として、エラー内容[]を追加している //(要素数が 0でなければ何らかのエラーがあって、その内容が記録されている) function set_error($error){ $_SESSION['__errors'][] = $error; }

    • ベストアンサー
    • PHP
  • mdbがとじれない

    VB6で開発をしています。 DB変数A = OpenDatabase(【mdb名】) Set QUERY変数B = DB変数A.CreateQueryDef("") QUERY変数B.SQL = SQL文 QUERY変数B.Execute (中略) Set レコード変数C = DB変数A.OpenRecordset(SQL文2) (中略) Set DB変数A = Nothing といった処理を行っています。 この処理を繰り返すのは問題ないのですが、 この処理で使用している【mdb名】はレコードロックされたままになってしまいます。 どのように修正したらよいのでしょう?

  • クエリーの作り方

    SQLから、Postgres上のデータを参照しています。 まず、この形式で取り出そうとしています。 $query = 'select * from comment where oya = ■■'; この、■■のところには整数が入りますが、 事前にアレイに入れてある数字「 $DB_data[0] 」から、 whileでぐるぐる回して検索したいのですが、 こうすると、エラーになります。 $query = 'select * from comment where oya = $DB_data[0]'; エラー Query failed: ERROR: syntax error at or near "$" at character 何か良い手はないでしょうか? 別のテーブルの数値を持ってきて、$を使わずに検索できれば・・ こういうのも可能でしょうか・・?

    • ベストアンサー
    • PHP
  • Access がSQLの()括弧を勝手に消す

    Access2010 でクエリをSQLビューで記述し、保存して閉じると 次にSQLビューを開いたときにSQLが変わってます。 改行が消されてたり、()括弧が消されてたり。 改行はまだいいんです。読み難さを我慢するだけなので。 でも()括弧を消した結果、SQL文法エラーになることがあり、 (それも他のDBでは正常に判定されるような、Access独自の構文解釈エラー) そうなるとSQLビューで開けず修正できず、泣く泣くクエリを作り直すハメになります。 ()括弧を勝手に消しておいて、文法エラーだから作り直せ なんて、 Accessは頭悪いとしか思えません。。。 勝手に変更されないようにできませんかね?

  • デザインビューで作成したクエリの実行

    よろしくお願いします。 環境  WindowsXP  Access2003  VB2005 以下の内容でAccessの準備をしました。  1.AccessでテーブルA,Bを作成。  2.テーブルAから条件に合ったデータを抽出する選択クエリC作成  3.選択クエリCとテーブルBの差分クエリDを作成  4.差分クエリDをテーブルBに追加する追加クエリEを作成 その後VBで以下のコードを実行すると途中でエラーにもならず終了するのですが Accessを開いてみても追加クエリEが反映されていません。 Sub test()   Dim Cnn As New ADODB.Connection   Dim Cmd As New ADODB.Command   Cnn.Provider = "Microsoft.Jet.OLEDB.4.0"   Cnn.Open("\\ファイルサーバー名\DB.mdb")   Cmd.ActiveConnection = Cnn   Cmd.CommandText = "追加クエリE" ← 反映されていない   Cmd.Execute()   Cmd = Nothing   Cnn.Close() : Cnn = Nothing End Sub Accessから追加クエリEを実行すると正常に反映されているのでAccessの 設定は合っていると思います。 また追加クエリEをAccessからパススルーを開いてSQLを直接”追加クエリEにコピペしても うまく動いてくれません。(反映されない) 何が間違っているのかご指摘ください。 よろしくお願いします。

  • アクセスのVBで作成した選択クエリが開けない

    アクセスのVBで選択クエリを作成し、それを開こうとすると、開けません。 作成された選択クエリをデザインビューで見てみると、変数janがそのまま入力されて しまっていて、クォーテーションマークで囲われていないのが原因のようなのですが・・・。 どうしたら良いか教えてください。。 コードは以下のとおりです。 Set DB = CurrentDb Set qdf = DB.QueryDefs("商品データ抽出") StrSQL = qdf.SQL StrSQL = "SELECT ASPOWNER_PRODUCT_MASTER.PRODUCT_ID, ASPOWNER_PRODUCT_JAN_CODE_V.JAN_CODE, ASPOWNER_PRODUCT_MASTER.DISPLAY_NAME FROM ASPOWNER_PRODUCT_MASTER AS ASPOWNER_PRODUCT_MASTER_1 INNER JOIN (ASPOWNER_PRODUCT_MASTER INNER JOIN (ASPOWNER_PRODUCT_JAN_CODE_V INNER JOIN ASPOWNER_PRODUCT_JAN_CODE_MAP ON ASPOWNER_PRODUCT_JAN_CODE_V.JAN_CODE_ID = ASPOWNER_PRODUCT_JAN_CODE_MAP.JAN_CODE_ID) ON ASPOWNER_PRODUCT_MASTER.PRODUCT_ID = ASPOWNER_PRODUCT_JAN_CODE_V.PRODUCT_ID) ON ASPOWNER_PRODUCT_MASTER_1.PRODUCT_ID = ASPOWNER_PRODUCT_MASTER.PRODUCT_ID" StrSQL = StrSQL & " WHERE (((ASPOWNER_PRODUCT_JAN_CODE_V.JAN_CODE)=" StrSQL = StrSQL & jan StrSQL = StrSQL & "));" qdf.SQL = StrSQL DoCmd.OpenQuery "商品データ抽出", acViewNormal, acEdit

  • sqlite_query()に関する質問

    ブラウザからポストでSQL文を受け取り、それをもとにDBを作成するスクリプトを考えています。 スクリプトの実行権限は、ページにログインできたユーザ(サイト管理者)のみ与えられています。 では、質問に移ります。 スクリプトに渡される$_POST['sql']の値が、クエリ文の言語仕様的に正しい書式ではなかった場合、 $sql = sqlite_escape_string($_POST['sql']); sqlite_query('hoge',$sql); の結果は、 Warning: sqlite_query() [function.sqlite-query]: near "なんたら~": syntax error in /なんたら~ といったエラーを吐き、 さらに、ファイルサイズ0の余計なクズファイルが作成されてしまうのですが、、 このクズファイルが結果的に作成されないように設計するには、どのようにしたら良いでしょうか。 私なりに2つの方法を考えてみましたので、アドバイスを頂けると嬉しいです。 (1) $_POST['sql']の時点で正規表現をもとに、SQL文の書式が正しいかチェックをし、 誤った書式のSQL文をsqlite_query()に渡すことを回避する方法。 ※私の能力的に、希望とする正規表現を正確に考え出すことができるか、はなはだ怪しいため、 できれば、避けたい方法です。 (2) 正規表現を使った方法だと、やや繁雑になりそうなので、それはやめにし、 ひとまず、SQL文の正誤を問わず、sqlite_query()を実行させ、 その結果、クズファイルが出来てしまうようなら削除する、といった方法。 ※クズファイルが生成されたかどうかのチェックは、 生成されたファイルのファイルサイズ == 0? をもとに行います。 ※ただし、私の利用するサーバの仕様上、 クズファイルは 所有者=「apache」 として作成されてしまうため、 もしかしたら、スクリプトからは削除できないかもしれません。 その場合には、こちらの方法は廃案となります。汗 (3) その他の方法(オススメの方法がありましたら、是非教えて下さい!) 以上、どなたか、ご助言よろしくお願い致します。

    • ベストアンサー
    • PHP
  • VBにてEXE作成

    VBにてとあるシステムを開発しました。 SETUP.EXEを作成して遠隔地に配布したいのです。が SETUP.EXEを起動してインストールはできるのですが 印刷実行時にエラーが出てしまいます。 VBから実行は出力できます。 ディストリビューション ウィザードの使用方法が 悪いのでしょうか。 OS :Windows2000 TOOL:VB6.0 SP5,Spread3.0,ImputMan6.5J DB :ORACLE8.05