• ベストアンサー

クエリにSQL文を書き込みたい

アクセス2000にてソフト開発しています Q受注グラフというクエリがあります。 データが毎月変化するので、これにVB内に記述したSQL文を書き込みたいのですが、どの様にすれば いいのでしょうか ちなみにSQL文は下記です。 SQL = "SELECT JS.受注年月, JS.部署名, JS.当月受注実績 AS 当月, " & _ "(JY.請負1*10000) AS " & m当月 & ", (JY.請負2*10000) AS " & m翌月 & ", (JY.請負3*10000) AS " & m翌々月 & ", " & _ "FORMAT((JS.受注達成率*100),""###.#"") AS [受注達成率(%)]" & _ "FROM T受注実績集計 AS JS INNER JOIN (T受注予定集計 AS JY INNER JOIN 部署コード AS BC ON JY.部署コード = BC.施工部署コード) " & _ "ON (JY.部署コード = JS.部署コード) AND (JY.実績年月 = JS.受注年月)" & _ "WHERE JS.受注年月 = '" & m実績月 & "'" & _ "ORDER BY BC.部署コード;" 宜しく御願いします

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

  • ベストアンサー
  • venzou
  • ベストアンサー率71% (311/435)
回答No.3

VBAから既存のクエリのSQL文を変更したい、と言う事ですね。 であれば、下記の様にすればSQL文を変更できます。 SQL = "SELECT JS.受注年月, ・・・以下省略 CurrentDb.QueryDefs("Q受注グラフ").SQL = SQL

msaitou
質問者

お礼

有難うございます 出来ました!!

その他の回答 (3)

  • CHRONOS_0
  • ベストアンサー率54% (457/838)
回答No.4

保存してあるクエリのSQLを書き換えるには QueryDefオブジェクトのSQLプロパティーに SQLをセットしてやります CurentDB.Querydefs("Q受注グラフ").SQL=strSQL

msaitou
質問者

お礼

有難うございます 出来ました!!

  • mshr1962
  • ベストアンサー率39% (7418/18948)
回答No.2

新規クエリで「表示」「SQLビュー」を選択して そこに書き込めばいいのでは?

  • pbforce
  • ベストアンサー率22% (379/1719)
回答No.1

SQLクエリにして、直接書き込むのは回答にはならないのでしょうか?

関連するQ&A

  • Access2007 の SQL文です。

    宜しくお願いします。 DoCmd.RunSQL ("update 予算月別 inner join 予算実績 on 予算月別.科目ID=予算実績.科目ID " _ & " set 合計金額 =sum(当年予算) where (月度>=開始日) and (月度<=終了日) group by 科目ID; ") これで 実行時エラー '3137': SQL ステートメントの最後には、セミコロン(;)が必要です。 下記のSQL文は実行できました。 これを編集したものです。 DoCmd.RunSQL ("update 予算月別 inner join 予算実績 on 予算月別.科目ID=予算実績.科目ID " _ & " set 金額01 =当年予算 where 月度=開始日 ; ")

  • AccessVBAでSQL文を書いています

    私の環境はOS:Xp      ACCESS2000です。 宜しくお願いします。 タイトルの通りSQL文を書いているんですが、書き方が解りません。 sql = "select 顧客コード from ポイント管理テーブル " sql = sql + " where 顧客コード = '" & Me.顧客コード & "'," sql = sql + " 受注年 = '" & Me.受注年 & "'," sql = sql + " 受注月 = " & Me.受注月 & "," sql = sql + " 受注日 = " & Me.受注日 & "" 初歩的な質問なのですが、上記はどのように記述したらよいのでしょう? ちなみに、顧客コードと受注年がテキスト型 受注月と受注日は数値型としてテーブルに持っています。 よろしくおねがいします。

  • SQLのエラーについて

    SQLの初心者です。 アクセス2000で下記のSQLを実行するとエラーになります。 SQLの書き方に問題が有るのでしょうか? どなたか教えて頂けたら幸いです。 宜しくお願いします。 エラーの内容 SQL実行中に以下のエラーが発生しました。 エラーコード:-3100 [Microsoft][ODBC Microsoft Access Driver] クエリ式 'U.商品CD=商品マスタ.商品CD INNER JOIN 部署マスタ ON U.部署CD=部署マスタ.部署CD' の 構文エラー : 演算子がありません。 SQLステータス:37000 SQLの内容 SELECT U.商品CD,商品マスタ.商品名,U.受払年月日,U.部署CD,部署マスタ.部署名, U.SUM受払数 AS 受払数 FROM [SELECT 商品CD,受払年月日,部署CD,SUM(受払数) as SUM受払数 FROM 受払TBL WHERE 受払年月日 = 20110513 GROUP BY 商品CD,部署CD,受払年月日,受払数] AS U INNER JOIN 商品マスタ ON U.商品CD=商品マスタ.商品CD INNER JOIN 部署マスタ ON U.部署CD=部署マスタ.部署CD ORDER BY 商品CD,部署CD,受払年月日,受払数

  • SQLの書き方について

    下記のSQL文に科目マスタから科目名を取得する文を追加したいと考えてます。 色々と考えてみたのですが、私のスキルでは上手く行かなくて困っています。 どなたか教えて頂けないでしょう? 宜しくお願いします。 DB:アクセス97・アクセス2000 科目マスタ 科目CD  科目名 SELECT U.商品CD, 商品マスタ.商品名, U.[部署CD], 部署マスタ.部署名, U.SUM受払数 FROM 部署マスタ INNER JOIN ((SELECT 商品CD,受払年月日,部署CD,SUM(受払数) as SUM受払数 FROM 受払TBL WHERE 受払年月日 = '20110510' GROUP BY 商品CD,部署CD,受払年月日,受払数) AS U INNER JOIN 商品マスタ ON U.商品CD = 商品マスタ.商品CD) ON 部署マスタ.部署CD = U.部署CD ORDER BY U.商品CD, U.[部署CD], U.受払年月日, U.[SUM受払数] 科目名を取得する文を追加後のSQL文 SELECT U.商品CD, 商品マスタ.商品名, U.部署CD, 部署マスタ.部署名, U.科目CD, 科目マスタ.科目名, U.SUM受払数 FROM 部署マスタ INNER JOIN ((SELECT 商品CD,受払年月日,部署CD,科目CD,SUM(受払数) as SUM受払数 FROM 受払TBL WHERE 受払年月日 = '20110510' GROUP BY 商品CD,部署CD,受払年月日,科目CD,受払数 ) AS U INNER JOIN 商品マスタ ON U.商品CD = 商品マスタ.商品CD INNER JOIN 科目マスタ ON U.科目CD = 科目マスタ.科目CD ) ON 部署マスタ.部署CD = U.部署CD ORDER BY U.商品CD, U.部署CD, U.受払年月日, U.科目CD, U.SUM受払数 上記のSQLを実行するとエラーになります。 SQL実行中に以下のエラーが発生しました。 エラーコード:-3100 [Microsoft][ODBC Microsoft Access Driver] クエリ式 'U.商品CD = 商品マスタ.商品CD INNER JOIN 科目マスタ ON U.科目CD = 科目マスタ.科目CD' の 構文エラー : 演算子がありません。 SQLステータス:37000 宜しくお願いします。

  • SQLでの集計結果取得について

    以下のようなSQLを書いたのですが,ほしい結果が得られませんでした。 受注に存在しない得意先についても得意先コードと得意先名を得たかったので、 "from 受注 Right Outer Join 得意先 On 受注.得意先コード = 得意先.得意先コード" としたのですが, 受注に存在しない得意先についてはデータが得られませんでした。さらに、Where句で、"受注.得意先コード =* 得意先.得意先コード"と書くとエラーが出てきてしまいました。 どうすれば得意先に存在する得意先すべての集計結果が得られるのでしょうか? String sql = "Select 得意先.得意先コード, Min(得意先.得意先名) " + "As 得意先名, Sum(受注.受注合計金額) " + "from 受注 Inner Join 得意先 " + "On 受注.得意先コード = 得意先.得意先コード " + "where 受注.得意先コード = 得意先.得意先コード " + "and 受注状態区分 = '" + joutaiKubun + "' " +      "and 納入日 between '" + startYMD + "' and '" +        "endYMD + "' " + "Group By 得意先.得意先コード " +      "Order By 得意先.得意先コード ";

    • ベストアンサー
    • Java
  • SQLについて

    以下のSQLを実行すると。 SQL実行中に以下のエラーが発生しました。 エラーコード:907 [Oracle][ODBC][Ora]ORA-00907: 右カッコがありません。 というエラーが表示されます。 どこがおかしいでしょうか? SELECT Q1.Pコード, Q1.Qコード, T1.E名称 A名称, T2.E名称 B名称, T3.E名称 C名称, T4.E名称 D名称, FROM ( ( ( ( SELECT Pコード, Qコード, Aコード, Bコード, Cコード, Dコード, FROM 報告書 WHERE Pコード = '0001' AND Qコード = '0001' AND ) Q1 INNER JOIN Eマスタ T1 ON Q1.Aコード = T1.Eコード ) INNER JOIN Eマスタ T2 ON Q1.Bコード = T2.Eコード ) INNER JOIN Eマスタ T3 ON Q1.Cコード = T3.Eコード ) INNER JOIN Eマスタ T4 ON Q1.Dコード = T4.Eコード ORDER BY Pコード, Qコード;

  • sqlについて

    下に書いたsqlのコードの内容(どういう処理でどういう結果になるのか)が知りたいです。 どなたかわかる方教えてください。 select b.ym, b.no,     isnull(e.sumcnt,0)as val, null as bunsi, null as bunbo from (select distinct ym,no from Table_A)b inner join (select ym from Table_B where cd=1)d on b.ym=d.ym left outer join (select b1.ym,b1.no,sum(c1.cnt)as sumcnt from Table_A b1 inner join (select ym from Table_B where cd=1)d1 on b1.ym=d1.ym inner join Table_C c1 on b1.ym=c1.ym group by b1.ym,b1no)e on b.ym=e.ym and b.no=e.no

  • SQL文を教えて下さい

    VB2008、SQL Server で開発をしています。 下記の条件でデータを取得したいのですが、SQL文がうまくできず、困っています。 おわかりの方、教えてください。 仕様:得意先マスタ(得意先M)の全件と、売上テーブル(売上T)を読みます。     売上テーブルの商品コードの商品名を商品マスタ(商品M)より取得します。     得意先マスタの全得意先を取得する必要があります。     すべての得意先の売上データが存在するわけではありません。 ACCESS上でクエリを作成し、SQLビューにすると、こうなります。 inptSyoCD:画面から入力した商品コード 1,まず、クエリ1: SELECT 売上T.伝票日付, 売上T.伝票番号, 売上T.得意先コード, 売上T.明細区分, 売上T.商品コード, 商品M.商品名称 FROM 売上T LEFT JOIN 商品M 売上T.商品コード = 商品M.商品名 WHERE 売上T.明細区分=1 AND 売上T.商品コード= inptSyoCD ; 2,次に、実際に処理するSQL文: SELECT 得意先M.得意先コード, 得意先M.得意先名称,       クエリ1.伝票日付, クエリ1.伝票番号, クエリ1.明細区分, クエリ1.商品コード, クエリ1.商品名  FROM 得意先M LEFT JOIN クエリ1 ON 得意先M.得意先コード = クエリ1.得意先コード ORDER BY 得意先M.得意先コード,売上T.伝票日付,売上T.商品コード; この2つをひとつのSQL文にする方法がわかりません。 よろしくお願いいたします。

  • SQL文のエラーについて

    下記のSQL文な実行するとエラーになってしまいます。 数時間考えましたが、上手く行きません。 どなたか教えて頂けないでしょう? 宜しくお願いします。 DB:アクセス97 アクセス2000 SQL実行中に以下のエラーが発生しました。 エラーコード:-3010 [Microsoft][ODBC Microsoft Access Driver] パラメータが少なすぎます。1 を指定してください。 SQLステータス:07001 SELECT mid(U.受払年月日,1,6), U.部門CD, 部門マスタ.部門名, U.商品CD, 商品マスタ.商品名, U.科目CD, 科目マスタ.科目名, U.SUM受払数 FROM (部門マスタ INNER JOIN ((SELECT mid(受払年月日,1,6),部門CD,商品CD,科目CD,SUM(受払数) as SUM受払数 FROM 受払TBL WHERE 受払年月日 BETWEEN '201101' and '201105' GROUP BY mid(受払年月日,1,6),部門CD,商品CD,科目CD) AS U INNER JOIN 商品マスタ ON U.商品CD = 商品マスタ.商品CD) ON 部門マスタ.部門CD = U.部門CD ) INNER JOIN 科目マスタ ON U.科目CD = 科目マスタ.科目CD ORDER BY U.受払年月日, U.部門CD, U.商品CD, U.科目CD

  • 削除クエリについて

    ACCESS2000で開発しています。 現在LOOPで A_TBL と B_TBL を日付とコードでリンクさせ同じデータがあれば削除するという処理をしています。 件数が多いためこれでは時間がかかるため、一括で削除できる削除クエリができないかと考えています。 どなたかご教授お願いします。 <現在のプログラム> SQL="SELECT 年月, コード, 日付 FROM A_TBL AS A INNER JOIN B_TBL AS B ON (A.日付 = B.日付) AND (A.コード = B.コード) WHERE (A.年月='200707')" Set RS = CurrentDb.OpenRecordset(SQL, dbOpenSnapshot) Do While Not RS.EOF SQL= "DELETE * FROM A_TBL WHERE (年月='200707') AND (コード='" & RS!コード & "') AND (日付='" & RS!日付 & "')" CurrentDb.Execute SQL RS.MoveNext Loop RS.Close Set RS = Nothing

専門家に質問してみよう