• 締切済み

プログラム(SQL他)質問です

 予約時間表をつくってのですが、 思うようにデータベースからデータを取ってくることが出来ません。 お願いします、教えてください。 今の状態では10時から11時の予約を表示しようとすると、10時だけではなく、11時のマスも埋めてしまいます。表は1~15日までの日の行(i)と、9~19時までの、時間列(j)からなっています。 DBの方は、年(yyyy)、月(MON)、日(DAY)、開始時間(A_TIME)、終了時間(B_TIME)会社名(CP)です。 必要な情報があれば、教えて下さい。 よろしくお願いします。 . i = 1 . For i = 1 To 15 Step 1 <TR><TD>@{i}日</TD> . For j = 9 To 20 Step 1 .pSQL = "SELECT * FROM kaigi1_tbl " .pSQL = pSQL & "WHERE YYYY = '" & today_nend & "' AND " .pSQL = pSQL & "MON = '" & mm & "' AND " .pSQL = pSQL & "DAY = '" & i & "' AND " .pSQL = pSQL & "((A_TIME <= '" & j & "') AND (B_TIME >= '" & j & "'))" .SQL pSQL .if ( WB_DETAIL_CODE = "100" )Then <TD><FONT>(空白)</FONT></TD> .elseif (j = 12)Then <TD><FONT>(空白)</FONT></TD> .else . STAT = 0 . LoopFetch . COMP = DBGetCol(6) . End Fetch . if (COMP = "n") THEN <TD><FONT COLOR="#FF0000">■</FONT></TD> . elseif (COMP = "h") THEN <TD><FONT COLOR="#0099FF">■</FONT></TD> . end if .end if . Next j </TR> . Next i

みんなの回答

  • yuizuian
  • ベストアンサー率42% (103/245)
回答No.1

この部分↓ .pSQL = pSQL & "((A_TIME <= '" & j & "') AND (B_TIME >= '" & j & "'))" A_TIME <= '" & j & "'は A_TIME <= '" & i & "'の下記間違いですよね? この場合、A_TIMEがi「以下」かつB_TIMEがj「以上」になりますよね。 つまりこの例だと、11以下10以上となり、10も11も含まれてしまいます。 だから、 .pSQL = pSQL & "((A_TIME < '" & i & "') AND (B_TIME >= '" & j & "'))" として、A_TIMEがi「よりも小さく」てB_TIMEがj「以上」のものとすれば 正しく取得できると思いますよ。

関連するQ&A