- ベストアンサー
ACCESSパススルークエリでオラクルDB接続
パススルークエリを用いてオラクルDBの「売上明細」テーブルのデータを抽出する。 抽出の対象はLOCALのテーブル「対象年月」で指定した月のデータに絞る。 上記の抽出をする場合、選択クエリのSQLでは Select * From 売上明細 Where Exists (Select * From 対象年月 Where 売上明細.YM=対象年月.YM); で抽出出来るのですが、パススルーだと#942「表またはビューが存在しません。」 のエラーが出ます。 年月の条件を付けずにすべてのデータを抽出することは出来るのですが 構文教えていただけるとありがたいのですが
- h6322813
- お礼率19% (45/233)
- Access(アクセス)
- 回答数2
- ありがとう数0
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
パススルークエリをオラクルに投げるとオラクル側での処理 のみになるので、もし質問の添付図のように日付が限られて いるならば以下のように、 Select * From 売上明細 Where 売上明細.YM=201911 対象年月をWhere句で絞ってパススルークエリを投げるか、 あるいは、実際には他に比較するフィールドがあるならば DAOを使って全データのスナップショットの レコードセットを取得し、VBAで処理をする、あるいは ADO接続で処理をするかではないですか。ADOの場合は SQL-Serverへの接続、処理とほとんど変わらないので 具体的な方法はWeb上にたくさんあると思いますが。
その他の回答 (1)
- oboroxx
- ベストアンサー率40% (317/792)
パススルーはアクセスでは処理しないので、Localのテーブルを見るのは不可能だと思いますよ。
関連するQ&A
- パススルークエリでのロックについて
毎度お世話になっております。 SQLSERVER2000とACCESS2003を使用しています。 画面から抽出条件を入力し、画面表示ボタンを押すと 抽出条件をWHERE句にしたパススルークエリが実行され、 在庫、入庫予定、入庫実績、出荷実績を計算、 画面表示するプログラムを作りたいと考えています。 パススルークエリはSELECT文ですが、 サブクエリが多くあり、 FROM句にはたくさんのテーブルが入ります。 また、他端末で実績入力中でも 入力中の実績は反映されなくてもよいので、 実行、画面表示したいのです。 他の質問を検索して、 http://oshiete1.goo.ne.jp/qa3392465.html SELECT文でもロックが発生することを知りました。 しかし、どのように対処するかは理解できませんでした。 ロックをおこすことなく他端末での実績入力も問題なく行われ、 画面表示もできるようにするにはどうすればよいのでしょうか よろしくお願いします。
- ベストアンサー
- SQL Server
- ACCESSでパススルークエリにパラメータを使用したい
毎度お世話になっております。 WindowsXP、Access2003、SQLServer2000を使用しております。 ADOでSQLServerからデータを抽出したいのですが、 パラメータを使用したいと考えております。 SELECT CODE FROM テーブル1 WHERE CODE = ? とし adoCmd.CommandTimeout = 0 With adoCmd .CommandText = strSQL .CommandType = adCmdUnknown .Prepared = False .Parameters.Refresh End With adoCmd.Parameters(0).Value = InputBox(Trim(strBuf)) Set adoSet = adoCmd.Execute とすることで動作しました。 しかしSQL文を下記に変更したところエラーになりました。 SELECT t1.CODE FROM (SELECT CODE FROM テーブル1 WHERE CODE = ? ) as t1 LEFT JOIN (SELECT CODE FROM テーブル2 WHERE CODE = ? ) as t2 ON t1.CODE = t2.CODE のようにすると、 .Parameters.Refresh の部分で 実行時エラー -21474672595(80004005) 構文エラーまたはアクセス違反です。 となってしまいました。 2つの?の内、片方を定数に、片方を?にしてもエラーになりました。 ?を両方とも定数にすれば実行できました。 JOIN句がある場合に?を使ってはいけないのでしょうか。 何がエラーの原因かわからない状態です。 ご教授お願いいたします。
- ベストアンサー
- その他(データベース)
- Accessフォーム上の値を条件として、パススルークエリを実行する方法について
皆さんのお知恵を拝借致したく質問します。 AccessXP上でパススルークエリを使って、Oracleのデータをテーブルとして取得しています。 これをAccessフォーム上のテキストボックスで入力した値を元にデータを取得するようにしたいのですが、SELECT文中のWHERE条件にどのように組み込めば良いのか分からずに困っています。 このようなデータ取得は無理なのでしょうか。 ご教示のほど、お願いいたします。
- ベストアンサー
- その他(業務ソフトウェア)
- Oracleのシングルクォーテーション
いつもお世話になっております。 Oracleの「'(シングルクォーテーション)」の使い方について教えてください。 テーブルAのフィールド001には2桁の数値が文字列型として格納されています。 (1)SELECT COUNT(*) FROM テーブルA WHERE フィールド001 = '09' でデータの抽出をしているのですが、データがあるにも係らず、「0」となってしまいます。 (2)SELECT COUNT(*) FROM テーブルA WHERE フィールド001 = 09 では、「09」だけでなく「9」までカウントしてしまいます。 データの中には「09」「9」が混在していて、これらを別々にカウントしたいのですが、(1)では結果を得ることが出来ません。シングルクォーテーションの使い方に間違いがあるのでしょうか? 別々にカウントする方法があればご教授いただけないでしょうか? よろしくお願いします。
- 締切済み
- Oracle
- AccessのクエリでvbLfのみ抽出するには
Access2010のクエリー(SQL)で vbLfかvbCrLfが含まれているレコードを抽出するには、 SELECT [テーブル1].* FROM テーブル1 WHERE [テーブル1].フィールド1 Like "*" & Chr(10) & "*"; vbLfが含まれているレコードは抽出せず、 vbCrLfが含まれているレコードだけを抽出するには、 SELECT [テーブル1].* FROM テーブル1 WHERE [テーブル1].フィールド1 Like "*" & Chr(13) & Chr(10) & "*"; でよいと思いますが、 vbCrLfが含まれているレコードは抽出せず、 vbLfが含まれているレコードだけを抽出するには、 どのように記述すればよいのでしょうか。 よろしくお願いします。
- ベストアンサー
- Access(アクセス)
- ACCESSクエリーで特定の項目を更新したい
ACCESSでテーブルから抽出したクエリーの特定の列だけに 1という数字をふりたいのですが、 update 抽出元のテーブル set 任意のセル = 1 where クエリー名 更新クエリーで上記SQLを設定しても、クエリー実行時に、 バラメータを要求され、 全てのテーブル列に1がふられます。 式が違うのでしょうか。 デザインビューにしてSQLビューに切るかえる。 select 列 from 抽出元のテーブル where 抽出の条件 ; みたいなデータです。 where の前を書き換えます。 select 列 from 抽出元のテーブル の部分を update 抽出元のテーブル set 任意のセル = 1 としてください。 最終的には以下のイメージ update 抽出元のテーブル set 任意のセル = 1 where 抽出の条件 ;
- 締切済み
- その他MS Office製品
- Oracle delete文について
お世話になります。 Oracle初心者です。 delete文の条件で他テーブルの列の値(列名は両方テーブルとも同じ) と同じ所の行を削除したいと思っているのですが、 コンパイルエラーになります。 基本的な書き方が悪いのでしょうか。 どなたかご親切な方、御教示頂きたく宜しくお願い致します。 記 delete from ( select 受注NO from T受注明細 where T受注明細.受注NO = D売上.受注NO)
- ベストアンサー
- Oracle
- ACCESS更新クエリー活用方法について
ACCESSでテーブルから抽出したクエリーで表示された特定の列だけに 1という数字をふりたいのですが、 update 抽出元のテーブル set 任意のセル = 1 where クエリー名 上記方法、更新クエリーで上記SQLを設定しても、クエリー実行時に、 バラメータを要求され、結果 全てのテーブル列に1がふられます。 式が違うのでしょうか。あくまでもクエリーで抽出されたものだけに 1をふりたいのですが。 デザインビューにしてSQLビューに切るかえる。 select 列 from 抽出元のテーブル where 抽出の条件 ; みたいなデータです。 where の前を書き換えます。 select 列 from 抽出元のテーブル の部分を update 抽出元のテーブル set 任意のセル = 1 としてください。 最終的には以下のイメージ update 抽出元のテーブル set 任意のセル = 1 where 抽出の条件 ;
- ベストアンサー
- その他MS Office製品
- SQLで'ABC'をDBの'AB'にHIT
sqlite3をVC++2013で扱っています。 もしかしたら、単純な方法があるのかもしれないので質問させてください。 DBに渡す文字が'ABC'でDB内のデータ'AB'にHITさせたいと思っています。 現状思いつく方法は select * from テーブル where キー like 'A%'; select * from テーブル where キー like 'AB%'; select * from テーブル where キー like 'ABC%'; と渡す文字を一文字ずつ増やして検索して row数が0以上の一番小さい数のデータを取得するという方法しか思いつかないのですが。 何か良い方法はありますでしょうか?
- ベストアンサー
- その他(データベース)
- SQL Server を使っています。SQLの質問です。
SQL Server を使っています。SQLの質問です。 得意先テーブルと商品テーブルと売上明細テーブルがあります。 一つの商品に関して得意先ごとに最新の売上明細データの一覧を作成したいと考えて います。 ■売上明細データ 明細ID (meisai_id) 得意先ID (tokuisaki_id) 商品ID (syohin_id) 売上金額(uriage_kingaku) 売上日 (uriage_date) ■売上明細データ(table_uri_maisai) meisai_id tokuisaki_id syohin_id uriage_kingaku uriage_date ================================================================= 1 aaa 001 100 2010/01/01 2 aaa 002 200 2010/01/01 3 bbb 001 105 2010/01/02 4 bbb 002 205 2010/01/02 5 ccc 001 110 2010/01/03 6 ccc 002 210 2010/01/03 7 aaa 001 100 2010/01/04 8 aaa 002 200 2010/01/04 9 bbb 001 105 2010/01/05 10 bbb 002 205 2010/01/05 11 ccc 001 110 2010/01/06 12 ccc 002 210 2010/01/06 上のような明細があり、「syohin_id」が「001」のデータに関して、 得意先ごとの最新のデータだけを抽出したいと考えています。 この場合ですと、以下の3件のデータが抽出できればよいわけです。 7 aaa 001 100 2010/01/04 9 bbb 001 105 2010/01/05 11 ccc 001 110 2010/01/06 tokuisaki_id と syohin_id の2つを特定して1件のデータを抽出するには 以下のSQLで実現できましたが、syohin_id だけを指定して複数のデータを 出すことがどうしてもできません。 SELECT * FROM table_uri_meisai WHERE uriage_date = (select max(uriage_date) FROM table_uri_meisai WHERE tokuisaki_id = 1 AND syohin_id = 1) AND tokuisaki_id = 1 AND syohin_id = 1 どなたかご指導ください。 よろしくお願いします。
- ベストアンサー
- SQL Server