• ベストアンサー

アクセスVBAのSQL文の記述の仕方について

今、アクセスでプログラミングをしてまして どうもSQL文がおかしいみたいなんですが どこがおかしいか教えてください。 wSQL = wSQL & "SELECT" & vbCr wSQL = wSQL & " Sum(T_NyukinJiseki.締日起算積数(全入金)) AS 全入金" & vbCr wSQL = wSQL & ", Sum(T_NyukinJiseki.当月入金合計額) AS 当月入金合計額" & vbCr wSQL = wSQL & " FROM" & vbCr wSQL = wSQL & " T_NyukinJiseki" & vbCr wSQL = wSQL & " GROUP BY" & vbCr wSQL = wSQL & " T_NyukinJiseki.勘定年月" & vbCr wSQL = wSQL & ", T_NyukinJiseki.集金部所コード" & vbCr wSQL = wSQL & ", T_NyukinJiseki.取引部所コード" & vbCr wSQL = wSQL & " HAVING" & vbCr wSQL = wSQL & " (((T_NyukinJiseki.勘定年月)=" & Me!取込年度 & " 06)" & vbCr wSQL = wSQL & " AND" & vbCr wSQL = wSQL & " ((T_NyukinJiseki.集金部所コード)='" & SyuKin & "')" wSQL = wSQL & " AND" & vbCr wSQL = wSQL & " ((T_NyukinJiseki.取引部所コード)='" & Torihiki & "'));" これなんでお願い致します。 あと変数と変数をつなげるやり方も教えてください。

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

  • ベストアンサー
回答No.2

勘定年月は数値型フィールドですよね? wSQL = wSQL & " (((T_NyukinJiseki.勘定年月)=" & Me!取込年度 & " 06)" & vbCr の「06」の頭にスペースが挿入されています。 それを取り除けばいいと思います。 構文的にはあっています。 もし勘定年月は文字型フィールドだったら、「Me!取込年度 & "06"」をシングルコーテーションで囲むだけです。

taka20
質問者

お礼

回答ありがとうございます。 お世話になりました。デバッグとおりました。

その他の回答 (1)

  • hiroaki_0
  • ベストアンサー率53% (131/245)
回答No.1

vbcr っていらないと思うのですけど? あとは、細かくみていません。

taka20
質問者

お礼

回答ありがとうございます。 やっぱりいらないんですかね? けしときます。

関連するQ&A

  • SQL文のEXISTSについて

    DBはmysql5.0を使っています。 以下のSQL文を、EXISTSを境に2つに分解することはできないでしょうか?? SELECT ROUND(SUM(IFNULL(T.DAIKIN,0) - IFNULL(T.TESURYO,0))/10000,1) INTO v_PRICE2 FROM TORIHIKI AS T WHERE T.TORIHIKI_KBN = '1' AND EXISTS (SELECT * FROM TORIHIKI AS T2 WHERE T2.TORIHIKI_DATE >= F_DATE AND T2.TORIHIKI_DATE <= T_DATE AND T2.TORIHIKI_KBN = '2' AND T2.KEHAI_CD = LPAD(v_SOBA_CD,5,'0') AND T2.KAIIN_SBT = v_KAIIN AND T.SEIRI_NO = T2.SEIRI_NO AND ROUND((IFNULL(T2.DAIKIN,0) + IFNULL(T2.TESURYO,0))/10000,1) >= p_MIN AND ROUND((IFNULL(T2.DAIKIN,0) + IFNULL(T2.TESURYO,0))/10000,1) < p_MAX );

  • Access VBA パススルークエリ

    Access2000(VBA)にてパススルークエリを生成してOracleのデータを取得しようとしております。 結果は正しく取得できるのですが、取得にかかる時間が非常に遅くて困惑しております。 SQL*plusやObjectBrowser等でSQLを実行すると2秒程度で結果が返るのですが、 Accessのパススルークエリですと60秒程度かかります。 SQLの内容は以下のように集計するものになります。 どなたか、改善方法が分かる方がいらっしゃればお教え下さい。 以上です。 SELECT A.請求先コード 請求先CD, B.会社名 請求先名, 20140401 集計開始日, 20140431 集計終了日, SUM(A.合計金額) 合計金額_合計, SUM(A.消費税額_外税) 消費税額_合計, (SUM(A.合計金額) + SUM(A.消費税額_外税)) 税込合計金額_合計, SUM(D.入金額) 入金額_合計, ((SUM(A.合計金額) + SUM(A.消費税額_外税)) - SUM(NVL(D.入金額,0))) 未入金額_合計 FROM 売上_TRN A, 顧客先_MST B, 入金_TRN D, 顧客_TRN E, 顧客_TRN F WHERE A.請求先コード = B.顧客先コード AND A.顧客先コード = E.顧客先CD AND A.請求先コード = F.顧客先CD AND A.売上日 Between 20140401 AND 20140431 AND A.売上NO = D.売上NO(+) AND (nvl(A.摘要コード1,' ') <> 'DM') AND A.赤伝NO = ' ' GROUP BY A.請求先コード, B.会社名 ORDER BY A.請求先コード

  • クエリに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.部署コード;" 宜しく御願いします

  • ACCESS SQL 括弧について

    AS 売上の合計をAS 07売上の合計に変えたところ かっこの使い方が正しくないと言われました。 ASの名前を変えただけなのですが、何が問題なのでしょうか? SELECT IIf([07売上の合計]=[売上],"●","×") AS 比較 FROM [SELECT ■T_M店マスタ.企業コード, ■T_M店マスタ.データレベル, Sum(■売上三期.[07年_売上]) AS 07売上の合計 FROM ■T_M店マスタ INNER JOIN ■売上三期 ON ■T_M店マスタ.店コード = ■売上三期.店コード GROUP BY ■T_M店マスタ.企業コード, ■T_M店マスタ.データレベル HAVING (((■T_M店マスタ.データレベル)="10"))]. AS 店 INNER JOIN [SELECT [●T_K調査データ(売上)企業レベル(単独店込み)].企業コード, [●T_K調査データ(売上)企業レベル(単独店込み)].売上, Format(DateAdd("m",-6,CDate("H" & Left([決算期],2) & "年" & Right([決算期],2) & "月")),"yyyy" & "年") AS 式1 FROM [●T_K調査データ(売上)企業レベル(単独店込み)] WHERE (((Format(DateAdd("m",-6,CDate("H" & Left([決算期],2) & "年" & Right([決算期],2) & "月")),"yyyy" & "年"))="2007年"))]. AS 企業 ON 店.企業コード = 企業.企業コード WHERE (((IIf([07売上の合計]=[売上],"●","×"))="×"));

  • 【再】2)-SQL文の書き方を教えてください。

    http://oshiete1.goo.ne.jp/kotaeru.php3?q=694458 先日この問題で投稿しましたが、未完成のため、再度要望を整理し、ご指導をお願いいたします。 W←tabel名:名称、日付、数量 明細データ:     名称   日付    数量 A   2003/10/01   200 B   2003/10/03   500 C   2003/10/10   4000 A   2003/10/03   200 A   2003/10/03   100 C   2003/10/15   100 B   2003/10/15   300 C   2003/10/15   50 B   2003/10/15   60 求めているクエリーのイメージ:    2003/10/15 時点 ================================================ 名称     当日数量     当月数量     A          0       300     B         360       860     C         150       4150 ------------------------------------------------- 先日教えてもらったSQL文、希望のクエリーを作れないです。 -------------------------------------------------- select 名称, sum(AAA) as 当日数量, sum(BBB) as 当月数量 from ( select 名称, 0 as AAA, sum(数量) as BBB from W where 日付 >= #2003/10/01# and 日付 <= #2003/10/15# group by 名称 union select 名称, sum(数量) as AAA, 0 as BBB from W where 日付 = #2003/10/15# group by 名称 ) group by 名称; このSQL文は、2番目のSelectのところでエラーが出る (From句の構文エラーです) -------------------------------------------------- 後、Accessバージョンによって、SQL文が変わるでしょうか?当方は、Access97を使っている。 ご指導をお願いいたします。

  • ACCESSのVBAのSQLを教えてください。

    テーブル1とテーブル2があり、それをUNIONで結合して、リンクさせたOracleのテーブルキーと 結合し、Oracleのテーブルにないキーを検索したいのですが、うまく出来ません。 ACCESSのVBAで作りたいのですが・・どうかご教授願います。 構成  テーブル1   項目名  Key 顧客コード1   名前 テーブル2     項目名   Key 顧客コード1   Key 顧客コード2      名前 Oracleのテーブル  テーブルB     項目名  Key 管理コード  テーブル1の顧客コード1とテーブル2の顧客コード2をUNIONでまとめたものをA1としA1.顧客コードとします それとOracleのテーブルであるテーブルBの管理コードと結合して テーブルBにないA1の顧客コードを抽出するSQL文を作成したいと思います。 (管理コード,顧客コード1,顧客コード2は同じ属性、同じ桁数) SELECT A1.管理コード FROM ( SELECT T1.顧客コード1 as 顧客コード FROM テーブル1 T1 UNION SELECT T2.顧客コード2 as 顧客コード FROM テーブル2 T2 )A1, テーブルB WHERE A1.顧客コード = テーブルB.管理コード AND テーブルB.管理コード IS NULL; エラーにはなりませんが、実行結果は、管理コード 0件です。データ的には、テーブルB側にはテーブル1にはあるがテーブルB側にないデータはあります。

  • SQL文でクロス集計をしたい

    アクセスでクロス集計のSQL文で作りたいと思っています。 このようなデータがあります 年月 支払先 数量 金額 201301 A 10 1000 201302 A 5 500 201302 B 20 2000 201301 C 10 3000 201303 C 15 1500 このデータを下記のように表示したいのですが、 分からなくて困っています。 支払先  データ   201301 201302 201303 A 数量     10      5 A 金額 1000 500 B 数量      20 B 金額 2000 C 数量     10 15 C 金額 3000 1500 合計 数量 20 25 15 合計 金額 4000 2500 1500 どのようにすれば実現出来ますか? 今は、 SELECT 支払先, "数量" AS データ, Sum(IIf([年月]='201301',[数量],0)) AS 201301, Sum(IIf([年月]='201302',[数量],0)) AS 201302, Sum(IIf([年月]='201303',[数量],0)) AS 201303, FROM T_データ GROUP BY 支払先; のクロス集計を 数量と金額、数量の合計と金額の合計でクロス集計をしたクエリを UNIONで実現しています。 出来れば数量と金額は1つのクエリで実現したいと思いますが方法があれば教えて頂きたい と思います。 どうぞ、よろしくお願い致します。

  • 列名無効について

    お世話になります。 下記のSQLを実行すると列名無効になってしまいます。 なにが悪いのかまったくわからないので アドバイスをお願いします。 最終行の当月一括仮消売上でエラーになっています。 --当月一括仮消売 select t1.取引先コード, (sum(NVL(ukm.売上検収金額,0))) * -1 AS 当月一括仮消売上 from T_ZZ売上検収 uk, T_ZZ売上検収明細 ukm, (select max(t.取引先コード) as 取引先コード, t.部門番号 from (SELECT b.部門番号 FROM M_ZZ部門 b WHERE not exists(SELECT b.部門番号 FROM M_ZZ部門グループ g,M_ZZ部門グループ明細 gm Where g.部門グループ番号 = gm.部門グループ番号 AND gm.部門番号 = b.部門番号 AND g.部門グループ番号 = 67) AND b.削除フラグ = '0') b, (SELECT t.取引先コード, t.部門番号 FROM M_ZZ取引先 t, M_ZZ部門 b where t.部門番号 = b.部門番号 and b.削除フラグ = '0') t group by t.取引先コード,t.部門番号) t1 where uk.売上検収SEQ = ukm.売上検収SEQ and uk.得意先コード = t1.取引先コード and uk.案件属性 = '0' and uk.元売上検収SEQ IS NULL and uk.承認区分 = '1' and uk.削除フラグ = '0' --開始日付 and uk.検収日 >= to_date('20040401 00:00:00','yyyy/mm/dd hh24:mi:ss') --終了日付 and uk.検収日 <= to_date('20040430 23:59:59','yyyy/mm/dd hh24:mi:ss') --仕入商品販売 and ukm.サービス分類コード != '07' group by t1.取引先コード,当月一括仮消売上 よろしくお願いします。

  • Oracl[10g]の SQL文について(No.7)

    何度も本当に恐縮です。自力で頑張ろうと思いましたが無理でした。(;_;) Oracl[10g]の SQL文について、教えて下さい。 [A]テーブルに [CODE](key) と [NAME]フィールドがあるとします。 内容は、 A-1 NAME-1 A-2 NAME-2 A-3 NAME-3 と、します。 [A2]テーブルに [NO](key) と [CODE1] と [KIN1] と [CODE2] と [KIN2] フィールドがあるとします。内容は、 1 A-1 100 (null null) 2 A-1 10 A-3 300 3 A-2 20 A-1 10 4 A-3 5000 A-1 20 と、します。 5 A-3 500 結果が、 A-1 NAME-1 110[A2]テーブル[KIN1]の合計 30[A2]テーブル[KIN2]の合計 A-2 NAME-2 20[A2]テーブル[KIN1]の合計 0(null) A-3 NAME-3 5500[A2]テーブル[KIN1]の合計 300 と、なる様にする為には、どういうSQL文を書けば良いのでしょうか ? SELECT A.CODE, A.NAME, SUM(A2.KIN1) AS KIN1, SUM(A2.KIN2) AS KIN2 FROM A,A2 WHERE A2.CODE1=A.CODE OR A2.CODE2=A.CODE GROUP BY A.CODE, A.NAME と、すると何故か A-1 NAME-1 5130 330 A-2 NAME-2 20 10 A-3 NAME-3 5510 320 と、言う結果になってしまいます。 よろしくお願い致します。

  • ACCESS2000 合計の表示がおかしい

    毎日の売上と仕入れの金額をそれぞれ合計して出したいのですが、 サンプル仕入れなどで0円の売上がある日の合計が正しく表示されず、 例えば0円の売上が4つと100円の売上が1つの場合、 400円と表示されます。 仕入れに関しても同様です。 どうすれば正しく表示されるようになるのか教えてください。 以下はソースです。 SELECT T受注伝票.受注日 , Sum(T受注伝票.税込金額計) AS 合計 , T発注伝票.発注日 , Sum(T発注伝票.税込金額計) AS 合計1 FROM T受注伝票 INNER JOIN T発注伝票 ON T受注伝票.受注日 = T発注伝票.発注日 GROUP BY T受注伝票.受注日 , T発注伝票.発注日 HAVING   ((T受注伝票.受注日) Between [FROM] And [TO]) AND   ((T発注伝票.発注日) Between [FROM] And [TO])) ORDER BY    T受注伝票.受注日    , T発注伝票.発注日;