空白が混ざってるレコードセットのCSV出力

解決


コアラ  2004-08-10 20:39:54  No: 115535  IP: [192.*.*.*]

いつも参考にさせていただいています。
SQLで取得したレコードセットをCSVに出力しているのですが、
表示されない列が発生し弱っております。
レコードセットの構造は下記です。

 担当者ID    出社時間  退社時間  休憩時間  休憩終了時間  
    1        10:10     17:30                  
    1                           12:00    12:30
    2        09:00    18:00     
    2                           11:00    11:30
    2                           11:30    12:00
    3        18:00    19:00
  
担当者ID、出社時間、退社時間までは過不足なくCSVに出力されるのですが、
休憩時間、休憩終了時間の2列は表示されません。
左辺の列が空白だからと思うのですが、改善策がわかりません。
どうかご教授ください。


'パラメータクエリを実行
Set RS = New ADODB.Recordset
Set RS = cmdMaster.Execute

'CSV吐き出し部分のソース

'** ファイルオープン
  fno = FreeFile
  Open fnm For Output As fno Len = 32000
  If mds Then
    For i = 0 To RS.Fields.Count - 1
      rec = rec & Chr(&H22) & RS(i).Name & Chr(&H22) & ","
    Next
    Print #fno, Left(rec, Len(rec) - 1)
  End If
  Do Until RS.EOF
    rec = ""
    For i = 0 To RS.Fields.Count - 1
      dummy = RS(i)
      If IsNull(dummy) Then
        s = ""
      Else
        s = dummy
      End If
      rec = rec & Chr(&H22) & RTrim(s) & Chr(&H22) & ","
    Next
    Print #fno, Left(rec, Len(rec) - 1)
    RS.movenext
  Loop
  Close fno
  RS.Close

編集 削除
Max  2004-08-11 09:36:27  No: 115536  IP: [192.*.*.*]

下記のとろこにブレークポイントを入れてデータを抽出するときに
どうなっているかを調べてみればいいんじゃないですか?
データ抽出したところで空白になっているんだったら元のデータが
おかしいということで。

    For i = 0 To RS.Fields.Count - 1    ←  ここにブレークポイント
      dummy = RS(i)
      If IsNull(dummy) Then
        s = ""
      Else
        s = dummy
      End If
      rec = rec & Chr(&H22) & RTrim(s) & Chr(&H22) & ","
    Next

編集 削除
コアラ  2004-08-11 11:13:19  No: 115537  IP: [192.*.*.*]

MAX様

ご指摘ありがとうございます。
どうもCSVうんぬんでなく、SQLに間違いがあるようです。
ただどう修正さればいいかがわかりません。
ぜひお教えください。SQLを記述します。

'パラメータクエリを作成
   sql = "SELECT 担当者ID,出社時間,退社時間,休憩開始時間,休憩終了時間,  " _
       & "DateDiff('n', 出社時間, 退社時間) AS 業務時間, " _
       & "DateDiff('n', 休憩開始時間, 休憩終了時間) AS 休憩時間 " _
       & "From KINTAI " _
       & "WHERE format(出社時間, 'YYYY/MM/DD') >= ? " _
       & "AND format(出社時間, 'YYYY/MM/DD') <= ? " _

・テーブルの全項目と差し引きした項目(DataDiff)を抽出しようとしています。
・またFROM TOにパラメータで日付SETし、その間のデータだけを抽出します。
・この時に、時間の各データはDATE型なのでformat関数でパラメータの形式と合わせています。

上記を実行すると「休憩開始時間」「休憩終了時間」と計算結果の「休憩時間」が抽出されません。
where句を取り払うと抽出できます。

where句をどのように修正すれば実現できますでしょうか。

※質問事項が変わってしまいました。。。どうかお願いいたします。

編集 削除
コアラ  2004-08-12 13:54:08  No: 115538  IP: [192.*.*.*]

SQLを誤っておりました。
WHERE句で絞りこみその条件に該当しなかったから
出力されなかったのに、騒いでおりました。
(お恥ずかしい。。。)

ありがとうございました。

編集 削除