• ベストアンサー

【VB】VBでのSQL文の書き方が今一わからない

表題通りなのですが、いくつかの条件でクエリを行いたいのですが、書き方が今一わからずエラーに悩まされています。 SELECT * FROM テーブル WHERE 条件 条件のところに 出荷日付 A日~B日 フィールド1の文字列=CDEF フィールド2の文字列=GHIJ すべてに当てはまる条件を入れたい場合、どう書けばいいのですか? どうかお助けください。(m_m)

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

  • ベストアンサー
  • Kuppycat
  • ベストアンサー率50% (109/216)
回答No.3

AND でつなげてOKですよ。 書き方は2の方の回答を参照してくださいね。 出荷日付がDateTime型の場合、時間も関係してくるかも知れませんので、 出荷日付 between 'yyyy-mm-dd 00:00:00' and 'yyyy-mm-dd 23:59:59' としておいたほうがよいかも。

sineminna
質問者

お礼

あれから試行錯誤の上なんとかできました。 どうもありがとうございます。

全文を見る
すると、全ての回答が全文表示されます。

その他の回答 (2)

  • anmochi
  • ベストアンサー率65% (1332/2045)
回答No.2

質問の意図が全く分からないのでなんともいえないのだが・・・・。 Dim sql As String sql = "select" sql = sql & " *" sql = sql & " from" sql = sql & " テーブル" sql = sql & " where" sql = sql & " 出荷日付 between '" & Format$(A, "yyyy-mm-dd") & "' and '" & Format$(B, "yyyy-mm-dd") & "'" If f1dat <> "" Then sql = sql & " and フィールド1='" & f1dat & "'" End If If f2dat <> "" Then sql = sql & " and フィールド2='" & f2dat & "'" 質問をする時は、可能な限り ・言語(正確に! 例えばVBとVBAとVBSとVB.NETは全て違う) ・データベース接続コンポーネント(バージョンまで正確に! DAO3.6やADO2.7sp1やODBC) ・データベース(バージョンまで正確に! SQL Server 2000、Oracle 9.0.2、MySQL 4.x、PostgreSQL7.x、PostgreSQL8.x) などを明記してあげると良い。

sineminna
質問者

補足

言葉足らずですみません。 バージョンはVB6 コンポーネントはADO Data Control 6.0 データベースはMicrosoft Jet 4.0 OLE DB Provider です。 WHEREのあとに 条件1 AND 条件2 AND 条件3..... でいいのでしょうか。

全文を見る
すると、全ての回答が全文表示されます。
  • A98JED
  • ベストアンサー率28% (221/778)
回答No.1

条件を and でつなげてください。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • アクセスクエリ ハテナを抽出するには

    テーブルは 文字(フィールド) ? あ となっていて、 クエリで SELECT [テーブル1].文字 FROM テーブル1 WHERE ((([テーブル1].文字) Like "?")); とすると、 ? あ が抽出されます。 ?がワイルドカードとなり、1文字の文字列を抽出する、という条件になってしまったためだと思われますが、ワイルドカードではなく、ハテナとして抽出したい場合はどうすればいいでしょうか? エクセルのように、Like "~?"としたら、何も抽出されませんでした。

  • SQL文を教えてください。

    MYSQLを使っています。 【売上テーブル】 || 日付 || 金額 || ----------------- || 2011/01/01 || 100 || || 2011/01/01 || 200 || || 2011/01/02 || 600 ||           ・           ・           ・ || 2012/12/31 || 500 || || 2012/12/31 || 100 || SELECT SUM(金額) FROM 売上テーブル WHERE 日付 BETWEEN '2011-01-01' AND '2011-12-31' GROUP BY DATE_FORMAT(日付, '%Y/%m') で月初から月末のデータを表示させることはできますが、 2011/01/10~2011/02/09を一か月として 以降は 2011/02/10~2011/03/09 2011/03/10~2011/04/09        ・        ・        ・ 2011/12/10~2012/01/09 といった感じに1年間のデータを表示させる方法がわかりません。 どうぞ宜しくお願いします。

    • ベストアンサー
    • MySQL
  • VBでSQL

    SQLでテーブル1に該当レコードがなければインサート あればアップデートをする処理をしたいのです IF ??? THEN UPDATE テーブル1 SET SELECT * FROM テーブル2 WHERE 条件 ELSE INSERT INTO テーブル1(SELECT * FROM テーブル2) END IF ???はプライマリキーで判定をしようと考えています こんな感じでやろうとしたところ うまくいきませんでした VB上で実行しよううとしているからなのでしょうか? ADOでSQLサーバに接続しています 条件分岐もどういう条件(VBでの書き方)がわからないです。 よろしくお願いします。

  • ユニオンクエリで期間指定抽出のSQL記述について

    いつもお世話になっております。 Access 2007で、「人名集計」テーブルと「資料送付」テーブルがあり、それぞれ、同一のフィールド名でテーブルが作成されております。 これを「発送日」フィールドの昇順で並べ替えながら結合するユニオンクエリを作成しました。 SELECT * FROM 人名集計 UNION ALL SELECT * FROM 資料送付 ORDER BY 発送日; とりあえず、上記のSQLでは動いていますが、このSQLに、 「発送日」の期間を指定して、抽出条件(パラメータ)を加えようとしていますが、うまくいきません。 WHERE句を使って、Between 「最初の日付を入力」 And 「最後の日付を入力」 のような文を SQLの何処にどのように記述すればよいのか、教えてください。 宜しくお願い申し上げます。

  • 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(nenngetu) from AAA) and ID=1000; ID=1000の条件をはぶき、 select NUM from AAA where nenngetu = (select min(nenngetu) from AAA); でしたら、実行できました。 oracleで実行しようとしています。 どなたか、書き方を教えてください。

  • アクセスのクエリ 1文字以上を抽出

    アクセスのクエリの抽出条件で、「1文字以上」とする方法を教えてください。 抽出条件をビルドで作ってみたのですが、 勝手にダブルコーテーションがついてしまいます。 1文字以上の値はあるのに何も抽出されません。 sql文は SELECT [テーブル1].[フィールド1] FROM テーブル1 WHERE ((Len([テーブル1]![フィールド1])>"1")); となっています。 ご教授よろしくお願いします。

  • 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文の書き方を教えて下さい。 以下の2つのクエリー(1のクエリー&2のクエリー)を1つのクエリーで1度に抽出をかけたいのですがSQL文の書き方がわかりません。 データの発生条件としては TableBのField1は必ずTableAのField1に存在するという条件です。 TableAのField1が「AAA」から「EEE」まである場合は、TableBのField1も必ず「AAA」から「EEE」の範囲内で発生します。 よろしくお願い致します。 1のクエリー ---------------------------------------------------------------- TableA Field1 ---------------------------------------------------------------- AAA AAA AAA BBB BBB CCC DDD DDD EEE EEE EEE ---------------------------------------------------------------- Field1をサマライズしてカウントと名称を取得するクエリー Select Count(TableA.Field1) as RecCount, TableA.Field1 From TableA 結果 RecCount  Field1 3      AAA 2      BBB 1      CCC 2      DDD 3      EEE ---------------------------------------------------------------- 2のクエリー ---------------------------------------------------------------- TableB Field1 ---------------------------------------------------------------- BBB CCC CCC EEE ---------------------------------------------------------------- Field1をサマライズしてカウントと名称を取得するクエリー Select Count(TableB.Field1) as RecCount, TableB.Field1 From TableB 結果 RecCount  Field1 1      BBB 2      CCC 1      EEE ---------------------------------------------------------------- 希望する結果 TableAのRecCount TableBのRecCount TableAのField1 3                   AAA 2         1         BBB 1         2         CCC 2                   DDD 3         1         EEE

  • SQL文 この部分はなんていうのでしょう?

    SELECT T_テーブル1.フィールド1 FROM T_テーブル1 ORDER BY T_テーブル1.フィールド1; なら、 ”ORDER BY句” SELECT T_テーブル1.フィールド1 FROM T_テーブル1 WHERE (((T_テーブル1.フィールド1)="A")); なら ”WHERE句” と言いますが、 DELETE Table1.* FROM Table1; や UPDATE テーブル1 Set テーブル1.フィールド1 = "い" WHERE (((テーブル1.フィールド1)=”あ")); や DROP Table Table1; の deleteやupdateやdropの部分は何て言うのでしょうか? そのまま、SELECT句DELETE句などというのでしょうか?