AccessVBAでSQL文を書いています

このQ&Aのポイント
  • AccessVBAでSQL文を書く方法について解説します。
  • AccessVBAを使用して顧客コードと受注日を条件にポイント管理テーブルからデータを取得する方法について説明します。
  • AccessVBAでテキスト型と数値型のデータを条件にSQL文を作成する方法についてご説明します。
回答を見る
  • ベストアンサー

AccessVBAでSQL文を書いています

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

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

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

こんにちは sql = "select 顧客コード from ポイント管理テーブル " sql = sql + " where 顧客コード = '" & Me.顧客コード & "'," sql = sql + " AND 受注年 = '" & Me.受注年 & "'" sql = sql + " AND 受注月 = " & Me.受注月 sql = sql + " AND 受注日 = " & Me.受注日 & ";" で,いけると思いますよ.

yu--ko
質問者

お礼

ありがとうございました。 初歩的な事で申し訳ありませんでした。 おかげさまで解決いたしました

関連するQ&A

  • SQLでNOT INと!=ALLの違い

    現在、仕事で使用する機会がありそうなのでOracleでSQLを勉強しています。 ある教本の練習問題をしていて気になったので質問させてください。 単純な受注に関するデータベースの問題です。 CUSTOMER_TとSLIP_Tというテーブルがあり、 CUSTOMER_Tは顧客コード、顧客の名前、顧客の住所が載っています。 SLIP_Tは受注番号、発注した顧客の顧客コード、受注した日が載っています。 2007年1月10日以降に受注したことのない顧客の名前を出力する問題なのですが私は以下のように解答しました。 SELECT CUST_NAME FROM CUSTOMER_T WHERE CUST_CODE != ALL(SELECT CUST_CODE FROM SLIP_T WHERE SLIP_DATE >= '2007-1-10'); しかし解答は以下でした。 SELECT CUST_NAME FROM CUSTOMER_T WHERE CUST_CODE NOT IN(SELECT CUST_CODE FROM SLIP_T WHERE SLIP_DATE >= '2007-1-10'); 自分で簡単なデータベースを作り試してみたのですが出力結果は同じになりました。 この二つのSQL文の違いにどのような問題があるのでしょうか?よろしくお願いします。

  • SQLで関係のないテーブルの内容を合体させたい

    SQLでの副問い合わせ(サブクエリ)について教えて下さい。自分の出したい結果が思うように得られず悩んでおります。 結果を得たものをCSVに落としたいわけですが”見え方”ヴィジュアル面に問題があります。 欲しい結果をそれぞれSQLにしますと ≪受注表テーブルから≫ SELECT 担当, 顧客コード FROM 受注表 WHERE 担当 = '田中' AND 商品コード = 'A1' AND 顧客コード = '003' ; SELECT 担当, 顧客コード FROM 受注表 WHERE 担当 = '田中' AND 商品コード = 'A1' AND 顧客コード = '020' ; ≪入荷表テーブルから≫ SELECT 担当, 入荷日 FROM 入荷表 WHERE 担当 = '田中' AND 入荷コード = 'X013' AND 入荷日 = '20080701' ; SELECT 担当, 入荷日 FROM 入荷表 WHERE 担当 = '田中' AND 入荷コード = 'X123' AND 入荷日 = '20080630' ; ≪欲しい結果の見え方≫ 担当 顧客コード 担当 顧客コード 担当 入荷日 担当 入荷日 ── ───── ── ───── ── ─── ── ───── 田中 003 田中 020 田中 20080701 田中 20080630 田中 003 田中 020 田中 20080701 田中 20080630 このように関係のないレコードを横並びにするにはどうしたらよいでしょうか? 使っているDBはOracle10、SQL server、MySQL、HiRDBそれぞれで実行したいのですが・・・ どなたかご教示ください。

  • SQLで違うテーブルの結果を組み合わせたい

    SQLでどう結果を返したらいいのかわからないので力を貸してください。 下記の受注表と入荷表があります。 受注表 担当 商品コード 顧客コード ── ──── ───── 田中 A1 001 田中 A1 002 田中 A1 003 山田 A2 020 山田 A1 003 田中 A1 020 入荷表 担当 入荷コード 入荷日 ── ───── ───── 山田 X013 20080701 山田 X013 20080701 田中 X013 20080701 山田 X013 20080630 山田 X013 20080630 田中 X123 20080630 自分の欲しい結果を出すためのSQLは下記のクエリです。 ≪受注表テーブルから≫ SELECT 担当, 顧客コード FROM 受注表 WHERE 担当 = '田中' AND 商品コード = 'A1' AND 顧客コード = '003' ; SELECT 担当, 顧客コード FROM 受注表 WHERE 担当 = '田中' AND 商品コード = 'A1' AND 顧客コード = '020' ; ≪入荷表テーブルから≫ SELECT 担当, 入荷日 FROM 入荷表 WHERE 担当 = '田中' AND 入荷コード = 'X013' AND 入荷日 = '20080701' ; SELECT 担当, 入荷日 FROM 入荷表 WHERE 担当 = '田中' AND 入荷コード = 'X123' AND 入荷日 = '20080630' ; これらで出る結果をただ下記のように横並びに出したいのですがどうしたらよいでしょうか? 「担当」の項目に関しては複数でますが気にしないで下さい。 ただ全く関係のないテーブル同士の結果を「横並び」表示にしたいだけです。 担当 顧客コード 担当 顧客コード 担当 入荷日 担当 入荷日 ── ───── ── ───── ── ──── ── ───── 田中 003 田中 020 田中 20080701 田中 20080630

  • 重複するレコードを調べるSQL

    重複するレコードを調べるSQL 初歩的な質問ですみません! 重複するレコードを調べるために以下のようなSQLを作ったのですが、 遅くて困っています。 もっと速くする方法があれば教えてください! 異なるカテゴリーでも商品コードが重複しているものがないかを探すSQLです。 SELECT A.商品コード, A.X, B.カテゴリー FROM (SELECT COUNT(商品コード) X, 商品コード FROM テーブルA WHERE 追加年月 = 201008 GROUP BY 商品コード) A, (SELECT 商品コード, カテゴリー FROM テーブルA WHERE 追加年月 = 201008 ) B " WHERE A.X >= 2 AND B.商品コード = A.商品コード

  • SQL文の実行速度について

    こんにちは。SQLを勉強しています。 質問をさせてください。 Oracleテーブル(test_table:レコード数はかなりあると考えて構いません) にnumber(int),value(varchar), code(varchar)の3つのフィールドが存在 するとします。 今、codeを指定してvalueを取得したいと考えています。 (1)---------------------------- select value from test_table where code='001'; select value from test_table where code='002'; select value from test_table where code='003'; (2)---------------------------- select code, value from test_table where code='001' or code='002' or code='003' (1)と(2)ではどちらが実行速度が速いのでしょうか? 実際に実行すればわかることですが、そういった環境が ないので、確認できません。宜しくお願い致します。

  • SQL文で困っています。

    ID(NUMBER型)と NUM(NUMBER型)と nenngetu (date型)を持ったテーブルAAAから、 ID=1000 のなかで日時が一番古い処理NOをselectするSQL文を書きましたが上手く実行されません。 select NUM from AAA where nenngetu = (select min(年月) from D_KR_SAP_IFRIREKIKANRI) and ID=1000; ID=1000の条件をはぶき、 select NUM from AAA where nenngetu = (select min(年月) from D_KR_SAP_IFRIREKIKANRI); でしたら、実行できました。 oracleで実行しようとしています。 どなたか、書き方を教えてください。

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

  • SQLのSELECT文教えてください。

    VB5.0で、DBはSqlServer2000です。 SQL文のSELECT文で質問です。 ○A_TABLEの構成(概略) ・・・担当コード1・・・担当コード2 ○TANTO_TABLE 担当コード/担当名 (質問)TANTO_TABLEからA_TABLEの担当コード1と担当コード2の担当名を抽出したいのです。 次のSQLだと担当コード1のみしか抽出できません。 効率よく担当コード1と2の担当名を抽出するSQLを教えてください。お願いします。 SELECT 担当名 FROM A_TABLE,TANTO_TABLE WHERE A_TABLE.担当コード1 = TANTO_TABLE.担当コード

  • date型を年月で指定するSQL文

    初歩的な質問かと思いますが… ご質問失礼いたします。 SQL文で2000年の1月を表示させたい時、 SELECT * FROM syouhin WHERE nengatsuhi BETWEEN '2000/1/1' AND '2000/1/31 というように、BETWEENではなく、 SELECT * FROM syouhin WHERE nengatsuhi = ?? BETWEENを使わずに2000年1月だけを指定することは可能でしょうか?

    • ベストアンサー
    • MySQL
  • 【初歩的な質問ですが・・・】 SQL文書き方がわかりません

    SQLの知識に乏しい者です。 よろしくお願い致します。 ●テーブルA ・会計コード ・年度 ・部署番号 ・社員番号 ・その他幾つかのデータ ※Where句で「年度>2002年」以降を抽出 のテーブルがあります。 この時、Bテーブルで ●テーブルB ・会計コード(主キー) ・年度 ・部署番号(主キー) ・社員番号(主キー) ・その他幾つかのデータ ※Aテーブルで抽出されたデータの中から絞り込む というテーブルを抽出するSQL文を組みたいのですが、効率の良いやり方がわかりません。 副問合せで  Select [B表で抽出した列名…]  From B表  Where 会計コード = (Select 会計コード               From A表               Where 年度 > '2002')  AND 部署番号 = (Select 部署番号             From A表               Where 年度 > '2002') ・・・・以下省略 の様に書くと効率が悪い気がしました。 (実際には、副問合せが6個書くことになるため) 良い書き方を知っている方がいらっしゃいましたら、よろしくお願い致します。

専門家に質問してみよう