• ベストアンサー

VBA 外部データの制御

SOURCEプロパティ文のSQL文を指定する箇所で .SOURCE "SELECT 社員名 FROM 社員 WHERE 部門ID IN(SELECT 部門ID FROM 部門 WHERE 部門名 = " & CombBOX & " )" とすると 右カッコがありませんとエラーがでます。 どうにか実行できないでしょうか?

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

  • ベストアンサー
  • nicotinism
  • ベストアンサー率70% (1019/1452)
回答No.3

部門名はテキスト型ですよね? WHERE 部門名 = " & CombBOX & " )" を WHERE 部門名 = ' & CombBOX & "' )" としては? また Dim strSql as String strsql = "SELECT 社員名 FROM 社員 WHERE 部門ID IN(SELECT 部門ID FROM 部門 WHERE 部門名 = ' & CombBOX & "' )" debug.print strsql としてイミディエイトウィンドウに出たもので確認する それでもダメなら イミディエイトウィンドウに出たものと ↓の行の前部分(数行)も提示されては? .SOURCE "SELECT 社員名 FROM 社員 WHERE 部門ID IN(SELECT 部門ID FROM 部門 WHERE 部門名 = " & CombBOX & " )"

chanchang
質問者

お礼

ありがとうございました。 どうもcomboboxの両端に空白を入れておいたのがひっかかていたようです。

その他の回答 (2)

回答No.2

> 右カッコがありません つまりカッコが終了出来ていませんね。 途中で文法がミスっています。 > IN(SELECT 部門ID FROM 部門 WHERE 部門名 = " & CombBOX & " )" 全然覚えていないので見当違いかもしれませんが。  ・CombBOXの両脇をシングルクォーテーションをつけてみる。  ・CombBOXはオブジェクトならプロパティ名までちゃんと指定する。 パッと見で気になったトコです。

chanchang
質問者

お礼

両方試しましたが、だめでした。 すみませんでした。

  • PrintScree
  • ベストアンサー率25% (538/2091)
回答No.1

.SOURCE "SELECT 社員名 FROM 社員 WHERE 部門ID IN (SELECT 部門ID FROM 部門 WHERE 部門名 = " & CombBOX & " )" INと(の間にスペースがないだけでは?

chanchang
質問者

お礼

スペースいれましたが同じエラーが返ってきました(:;)

関連するQ&A

  • SQL文について質問させて頂きます。

    いつもお世話になっております。いろいろSQL文の本を読んだのですがわからないので今回もよろしく お願い致します。 SELECT DISTINCT * FROM bukken WHERE (id IN (SELECT fid FROM fudou_kodawari WHERE kid IN (1,4))) というSQL文があるのですが、これだと1,4が1つでも含まれるリストが出てくるのですが1,4が完全に一致しないと出てこないようにするにはどのようにSQL文を変更すれば良いのでしょうか? 何卒よろしくお願い致します。

  • select文のwhere句に配列を入れて検索したい

    こんばんは。 題名の通り、select文のwhere句に配列を入れて検索したいのですが、 同じ質問↓も見つけ、やってはみるのですがうまくいかないので、教えてください。 http://oshiete1.goo.ne.jp/qa2940474.html 現在、 $member_id という配列にデータを入れ(この配列には正しく値が入っています。) $sql = "SELECT * FROM テーブル名 WHERE id IN (".$member_id."); としているのですが、うまくいきません。 どこがおかしいのでしょうか。 よろしくお願いします。

    • ベストアンサー
    • MySQL
  • テーブル上に存在しないデータの一覧を取りたい。

    mysql+phpで開発を行っています。 テーブル id 101 102 104 106 109 110 の様にデータが入っているテーブルaaaがあります。 プログラムで取得したid一覧が上記テーブルにレコードがあるのか確認するSQLは 例)select id from aaa where id in (101,102) で取得できるということは分かっています。 ここで select id from aaa where id in (102,103) とやると102の1件が取得できます。 今回知りたいことは 逆に取得できなかった103という値を取得する方法はないのかという事です。 select id from aaa where id=102; select id from aaa where id=103; 2回SQLを実行して値が戻ってこないSQL=テーブルにそのレコードが無いというプログラムを書けばいい事は分かっています。 しかし、処理が少なくとも数千回発生してしまう予定ですのでできれば別の方法がいいと思っています。 また、in区で使っている一覧はテーブルには入っておらず、また、こちらも数千個あるので、一時テーブルに入れるといってもかなりの時間がかかってしまうと思います。 何か一発で取得できるいい方法などありますでしょうか? ちなみにaaaテーブルは5万件ほどなので全件php側でメモリに展開してサーチも避けたいです よろしくお願いいたします。

  • 別テーブルからSELECTした値を持つ行を削除するSQLは?

    削除 SQL がわかりません。 SQL-1 SELECT id FROM table2 WHERE date_in IS NULL; これで取得したidを持つレコード(別テーブル)を削除したいのですが、 どうすれば組み合わさるのでしょうか? DELETE FROM table1 WHERE id=???

  • Pro COBOLでは、最後執行したSQL文を取得したい

    【背景】バッチプログラムを実行中、トラブルが発生した場合、どのSQL文が発行されてトラブルになったか知りたいです。   例えば、EXEC SQL SELECT * FROM USE_TABLE WHERE USE_ID=:USE_ID直後でトラブルになった場合、仮に:USE_ID='yxy19700804'でしたら、COBOLがOracleにEXEC SQL SELECT * FROM USE_TABLE WHERE USE_ID='yxy19700804'といったSQL文を発行した直後、トラブルになります。「EXEC SQL SELECT * FROM USE_TABLE WHERE USE_ID='yxy19700804'」をシステム的に取得方法がありますか?

  • SELECT文の二段重ね

    次のSQL文を実行します。 create table1 (id, english) insert table1 (1,"foo") insert table1 (2,"bar") create table2 (id, japanese) insert table2 (1, "ふー") insert table2 (2, "ばー") SQL文法としては誤ってますが、成功したとします。 いま、select id from table1 where english = 'foo'; で1が得られます。 いま、select japanese from table2 where id = 1; で"ふー"が得られます。 これを一つのSQLite3のselect文で実現できないでしょうか。 select japanese from table2 where id = (select id from table1 where english = 'foo'); で良いですか? カテゴリ選択にSQLiteが無いのは、人気が無いからですかね。

  • 副照会を簡単に使いまわせますか?

    たとえば、次のSQLがあったとして、 select キー1, キー2, sum(金額) (  select A.キー1 , A.キー2 , A.金額   from (select * from ~ where ...) A  union all  select '' , A.キー2 , A.金額   from (select * from ~ where ...) A  union all  select A.キー1 , '' , A.金額   from (select * from ~ where ...) A  union all  select ''   , '' , A.金額   from (select * from ~ where ...) A ) group by キー1, キー2 一番内側の副照会は、 (select * from ~ where ...) A は、4箇所とも同じSQL文で、とても長いのですが 2箇所目以降は、1箇所目と同じSQL文ということで 記述を省けたりするような構文があったりしないでしょうか? そこを、ビューにしろといわれるとその通りなのですが ビューにしたくないです。(プログラムで動的にここの副照会部分を パラメータに応じて作っているので、ビューにするとビューがいくつも できて、きりがない) Oracle9iで、利用しています。

  • 文字例の比較について WHERE句

    文字例の比較について、教えてください。 DELETE_FLAGという項目には、文字列の"1"、もしくはNULLが入っています。 セレクト文でDELETE_FLAGが"1"以外のものを抽出したいのですが、うまくいきません。 以下のSQL文を実行した際に、結果として5件ヒットしてほしいのですが、なぜか0件となってしまいます。 select count(product_id) from hpk_atoz_list_view where delete_flag != '1'; 原因わかりますでしょうか? よろしくお願いいたします。 ============================================================================ SQL> select delete_flag, product_id from product_list_view; DELETE_FLAG product_ID ---------------------------------   0002 1 1003   0002 1 1003   0002 1 1003   0002   0002 8行が選択されました。 SQL> SQL> select count(product_id) from product_list_view where delete_flag != '1'; COUNT(product_id) ---------- 0 SQL> SQL> select count(product_id) from product_list_view where delete_flag = '1'; COUNT(product_id) ---------- 3 SQL> SQL> select count(product_id) from product_list_view where delete_flag is not null; COUNT(product_id) ---------- 3 SQL> SQL> select count(product_id) from product_list_view where delete_flag is null; COUNT(product_id) ---------- 5 SQL> =====以上=====

  • Select結果をSelect

    お世話になります。 以下のSQL文のイメージでselectの結果をさらにselectしたいのですが”subquery has too many columns”というエラーを吐かれます。 Postgreに合った書き方がお分かりでしたら教えてください。 よろしくお願いします。 select * from [DB名] where [パスワード] = 'test' IN ( select * from [DB名] where [ユーザID]='1111' order by [更新日] desc limit 3) [やりたいこと] テストDBからユーザIDが1111の行を更新日をキーに降順で並べ、先頭から3行分を取り出す。 その3行からパスワードが"test"のものをselectしたい。

  • EXSIST述語を使った副問合わせについて

    SELECT HINMOKU_NAME FROM HINMOKU WHERE HINMOKU_CODE IN (SELECT HINMOKU_CODE FROM URIAGE WHERE URIAGE_DATE = '2004-11-10'); 上記をSQL文をEXISTS述語を使って書き換えると エラーが出てしまい、うまく書き換えがすることが できません。下記にエラーがでるSQL文を記載いたします。 SELECT HINMOKU_NAME FROM HINMOKU WHERE EXISTS (SELECT HINMOKU_CODE FROM URIAGE WHERE URIAGE_DATE ='2004-11-10' WHERE HINMOKU.HINMOKU_CODE=URIAGE.HINMOKU_CODE); 上記SQL文についてどこに問題があるのか、ご教授お願い致します。

専門家に質問してみよう