過去ログ

                                Page     208
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
   通常モードに戻る  ┃  INDEX  ┃  ≪前へ  │  次へ≫   
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
 ▼日付を使った条件について  ひえええ 03/2/20(木) 1:03
   ┗Re:日付を使った条件について  こうちゃん 03/2/21(金) 12:25
      ┗Re:日付を使った条件について  ひえええ 03/2/23(日) 15:13
         ┗Re:日付を使った条件について  よろずや 03/2/23(日) 20:50
            ┗そうですよね、SQL一発!  こうちゃん 03/2/24(月) 9:00
               ┗Re:そうですよね、SQL一発!  ひえええ 03/2/24(月) 10:59
                  ┗Re:そうですよね、SQL一発!  こうちゃん 03/2/24(月) 13:54
                     ┗Re:そうですよね、SQL一発!  ひえええ 03/2/24(月) 19:54

 ───────────────────────────────────────
 ■題名 : 日付を使った条件について
 ■名前 : ひえええ
 ■日付 : 03/2/20(木) 1:03
 -------------------------------------------------------------------------
   こんにちは。
テーブルの中にある日付(開始日、終了日)を比較して3か月前になったものを
全権間作して件数だけ抽出したいと思っています。
現在の状況は、
件数がでるが、その条件のところをとおっていない
ループも全件まわっている
開始日、終了日をDateDiff関数で年を月に換算している
終了日が3以下になったら件数という変数に1を追加
というつもりのロジックを書いてます。
日付の型がきっとおかしいと考えられるので教えて下さい。
よろしくおねがいします

 ───────────────────────────────────────  ■題名 : Re:日付を使った条件について  ■名前 : こうちゃん <nakajima19@hotmail.com>  ■日付 : 03/2/21(金) 12:25  -------------------------------------------------------------------------
   ひえええさん、こんにちは

質問の意味がよくわかりませんので、少し教えてください。
>テーブルの中にある日付(開始日、終了日)を比較して3か月前になったものを
なんと何を比較して「3か月前」と判断するのでしょう?
現在から開始日?現在から終了日?開始日から終了日?

>全権間作して件数だけ抽出したいと思っています。
>現在の状況は、
>件数がでるが、その条件のところをとおっていない
>ループも全件まわっている
>開始日、終了日をDateDiff関数で年を月に換算している
>終了日が3以下になったら件数という変数に1を追加
>というつもりのロジックを書いてます。
そのロジックをアップできませんか?そのほうが回答しやすいと思います。
>日付の型がきっとおかしいと考えられるので教えて下さい。
>よろしくおねがいします

回答でなくてごめんなさいね。

 ───────────────────────────────────────  ■題名 : Re:日付を使った条件について  ■名前 : ひえええ  ■日付 : 03/2/23(日) 15:13  -------------------------------------------------------------------------
   こうちゃん さんありがとうございます
かんたんなロジックをいれておきました。
ちなみに、日付け形式(Date)を数字に変換すると
新しい日付けの方が数値が大きくなるのでしょうか?
初心者なのにいきなりこんな難しいものにぶつかってます。くすん
こちらも御存じであれば教えて下さい。

>質問の意味がよくわかりませんので、少し教えてください。
>>テーブルの中にある日付(開始日、終了日)を比較して3か月前になったものを
>なんと何を比較して「3か月前」と判断するのでしょう?
終了日からです

kaisi = ds!開始日
owai = ds!終了日
’テーブルの内容をそれぞれ代入

syuryobi = DateAdd("m".-3,owari)
syuryo - DateDiff("m",syuryo,date)

ここで、「kaisi」と「syuryo」はDate宣言ですが
いいのでしょうか?おそらくはじめDateで宣言して
数字に代入するところがおかしいとおもいます。
「syuryobi」と「syuryo」はIntegerです。
済みませんが、返答おまちしてます
>
>>全権間作して件数だけ抽出したいと思っています。
>>現在の状況は、
>>件数がでるが、その条件のところをとおっていない
>>ループも全件まわっている
>>開始日、終了日をDateDiff関数で年を月に換算している
>>終了日が3以下になったら件数という変数に1を追加
>>というつもりのロジックを書いてます。
>そのロジックをアップできませんか?そのほうが回答しやすいと思います。
>>日付の型がきっとおかしいと考えられるので教えて下さい。
>>よろしくおねがいします
>
>回答でなくてごめんなさいね。

 ───────────────────────────────────────  ■題名 : Re:日付を使った条件について  ■名前 : よろずや  ■日付 : 03/2/23(日) 20:50  -------------------------------------------------------------------------
   >>>テーブルの中にある日付(開始日、終了日)を比較して3か月前になったものを
>>なんと何を比較して「3か月前」と判断するのでしょう?
>終了日からです
普通こういうのは、いちいち数えたりはしません。
今日から3ヶ月後の日付と終了日を比較してカウントするSQL文を書けば
一発で答が得られます。
SELECT COUNT(*) FROM テーブル名 WHERE 終了日 <= 今日から3ヶ月後の日付
ってな感じです。
あれっ、開始日はどうするんだろう?
問題を小出しにすると、解決までに時間がかかることになりますよ。

 ───────────────────────────────────────  ■題名 : そうですよね、SQL一発!  ■名前 : こうちゃん <nakajima19@hotmail.com>  ■日付 : 03/2/24(月) 9:00  -------------------------------------------------------------------------
   よろずやさん、こんにちは

>普通こういうのは、いちいち数えたりはしません。
>今日から3ヶ月後の日付と終了日を比較してカウントするSQL文を書けば
>一発で答が得られます。
>SELECT COUNT(*) FROM テーブル名 WHERE 終了日 <= 今日から3ヶ月後の日付
>ってな感じです。
>あれっ、開始日はどうするんだろう?

SQLを紹介したかったんですが、どこ基準かわからなくて書きようがなかったんです。

>問題を小出しにすると、解決までに時間がかかることになりますよ。
ということで、ひええええさん、もう少し全体がみえるようにしていただけますか?

 ───────────────────────────────────────  ■題名 : Re:そうですよね、SQL一発!  ■名前 : ひえええ  ■日付 : 03/2/24(月) 10:59  -------------------------------------------------------------------------
   よろずやさん、こうちゃんさん
ありがとうございます。SQLでいいんですね。
いままでVBにこだわっていたせいでよけいわからなくなっていました。
詳細を説明します

開始日と終了日があり、終了日3ヶ月前に近付いたらアナウンスをするので
該当するものの件数とクエリを出したいのです。
フォームのボタンそれぞれをクリックすると件数がメッセージボックスで表示され、
クエリが開くようにしたいのです。
先ほどのよろずやさんの解答により大分わかってきたのですが、SQLでは
終了日から3ヶ月前と入れ込むのが難しいのではないでしょうか?
よろしくお願いいたします。

 ───────────────────────────────────────  ■題名 : Re:そうですよね、SQL一発!  ■名前 : こうちゃん <nakajima19@hotmail.com>  ■日付 : 03/2/24(月) 13:54  -------------------------------------------------------------------------
   ひえええさん、こんにちは

>開始日と終了日があり、終了日3ヶ月前に近付いたらアナウンスをするので
>該当するものの件数とクエリを出したいのです。
>フォームのボタンそれぞれをクリックすると件数がメッセージボックスで表示され、
>クエリが開くようにしたいのです。
>先ほどのよろずやさんの解答により大分わかってきたのですが、SQLでは
>終了日から3ヶ月前と入れ込むのが難しいのではないでしょうか?
チェックした日(今日)が終了日の3ヶ月以内と考えたほうがわかりやすいのでは?

こんな感じでいかがでしょ?
以下のモジュールでは終了日が今日以降で、3ヶ月以内のレコード件数をカウントします。
ADOつかってますので、参照設定おわすれなく^^


Sub test11()
  
  Dim CheckPoint As Date
  Dim strSQL As String
  Dim DataConn As ADODB.Connection
  Dim Rs As ADODB.Recordset
  
  CheckPoint = DateAdd("m", 3, Date)
  
  strSQL = "SELECT Count(*) AS 件数 FROM テーブル3 "
  strSQL = strSQL & "WHERE 終了日 > #" & Date & "# "
  strSQL = strSQL & "AND 終了日 <= #" & CheckPoint & "# "
  
  Set DataConn = CurrentProject.Connection
  Set Rs = New ADODB.Recordset
  
  Rs.Open strSQL, DataConn, adOpenStatic
  
  If Not Rs.EOF Then
    MsgBox Rs("件数")
  End If
  
  Rs.Close
  Set Rs = Nothing
  Set DataConn = Nothing

End Sub

 ───────────────────────────────────────  ■題名 : Re:そうですよね、SQL一発!  ■名前 : ひえええ  ■日付 : 03/2/24(月) 19:54  -------------------------------------------------------------------------
   こうちゃんさん、よろずやさん
ありがとうございます!!一発でできました。
SQLをもっと勉強しなければ。
SQLですごく役に立つおすすめ本はないでしょうか?
よかったら教えてください。

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━    通常モードに戻る  ┃  INDEX  ┃  ≪前へ  │  次へ≫    ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━                                 Page 208