前提・実現したいこと
csvから指定したカラムで
ファイルの集計を実現したい
発生している問題・エラーメッセージ
①集計を行おうとするカラムを変更すると、
集計関数の一部として指定された式を含んでいないクエリを実行しようとしました
とエラーが出てしまう
②集計を行おうとするカラムを指定すると、
オブジェクトtime_master.csvが見つかりませんでした。オブジェクトが存在していること、名前やパスが正しいことを確認してください
とエラーが出てしまう
該当のソースコード
VBSで記載しています
CSVファイル:log_master1.csv
コンピューター名,日時,操作種別,期間,端末機No,端末機名
PC1,2019/2/6 9:56,終了,0:00:05,1,吉田1
PC1,2019/2/6 9:56,開始,0:00:05,1,吉田1
PC1,2019/2/6 9:41,終了,0:02:23,1,吉田1
PC1,2019/2/6 9:39,開始,0:02:23,1,吉田1
PC1,2019/2/6 9:23,終了,0:05:08,1,吉田1
PC1,2019/2/6 9:18,開始,0:05:08,1,吉田1
PC2,2019/2/6 15:18,終了,2:19:53,15,田中2
PC2,2019/2/6 12:58,開始,2:19:53,15,田中2
PC2,2019/2/6 12:06,終了,0:00:44,15,田中2
PC2,2019/2/6 12:05,開始,0:00:44,15,田中2
PC2,2019/2/6 12:01,終了,1:27:49,15,田中2
PC2,2019/2/6 10:33,開始,1:27:49,15,田中2
PC1,2019/2/8 9:56,終了,1:00:05,1,吉田1
PC1,2019/2/8 9:56,開始,10:00:05,1,吉田1
PC1,2019/2/8 9:41,終了,1:02:23,1,吉田1
PC1,2019/2/8 9:39,開始,1:02:23,1,吉田1
PC1,2019/2/8 9:23,終了,1:05:08,1,吉田1
PC1,2019/2/8 9:18,開始,1:05:08,1,吉田1
PC2,2019/2/8 15:18,終了,2:19:53,15,田中2
PC2,2019/2/8 12:58,開始,2:19:53,15,田中2
PC2,2019/2/8 12:06,終了,1:00:44,15,田中2
PC2,2019/2/8 12:05,開始,1:00:44,15,田中2
PC2,2019/2/8 12:01,終了,1:27:49,15,田中2
PC2,2019/2/8 10:33,開始,1:27:49,15,田中2
目標:このように出したい :time_master.csv
端末機名,日付,稼働時間,
吉田1,2019/2/6,0:07:36
田中2,2019/2/6,3:48:26
吉田1,2019/2/8,3:07:36
田中2,2019/2/8,4:48:26
コンピューター名と端末機名は完全に一致しています。
ソート順は、
1)日時
2)端末機名
です
正常に完了する状態:
sub time_add()
Dim objADO
Dim strPath
strPath = "c:\csvdata"
Set objADO = CreateObject("ADODB.Connection")
objADO.Open "Driver={Microsoft Text Driver (*.txt; *.csv)};DBQ=" & _
strPath & ";ReadOnly=0"
objADO.Execute _
"SELECT コンピューター名, Format([日時],'yyyy/mm/dd') AS 日付, Format(Sum([期間]),'hh:nn:ss') AS 利用時間計" & _
" INTO time_master.csv " & _
" FROM log_master1.csv where 操作種別 = '終了'" & _
" GROUP BY コンピューター名, Format([日時],'yyyy/mm/dd');"
objADO.Close
Set objADO = Nothing
end sub
①が発生する状態:(select文のカラムのみ変更)
sub time_add()
Dim objADO
Dim strPath
strPath = "c:\csvdata"
Set objADO = CreateObject("ADODB.Connection")
objADO.Open "Driver={Microsoft Text Driver (*.txt; *.csv)};DBQ=" & _
strPath & ";ReadOnly=0"
objADO.Execute _
"SELECT 端末機名, Format([日時],'yyyy/mm/dd') AS 日付, Format(Sum([期間]),'hh:nn:ss') AS 利用時間計" & _
" INTO time_master.csv " & _
" FROM log_master1.csv where 操作種別 = '終了'" & _
" GROUP BY コンピューター名, Format([日時],'yyyy/mm/dd');"
objADO.Close
Set objADO = Nothing
end sub
↑は集計関数の関係上、GROUP BY側も変更が必要かと考えました
②が発生する状態:(select文のカラム・GROUP BY 句のみ変更)
sub time_add()
Dim objADO
Dim strPath
strPath = "c:\csvdata"
Set objADO = CreateObject("ADODB.Connection")
objADO.Open "Driver={Microsoft Text Driver (*.txt; *.csv)};DBQ=" & _
strPath & ";ReadOnly=0"
objADO.Execute _
"SELECT 端末機名, Format([日時],'yyyy/mm/dd') AS 日付, Format(Sum([期間]),'hh:nn:ss') AS 利用時間計" & _
" INTO time_master.csv " & _
" FROM log_master1.csv where 操作種別 = '終了'" & _
" GROUP BY コンピューター名, Format([日時],'yyyy/mm/dd');"
objADO.Close
Set objADO = Nothing
end sub
試したこと
GROUP BY 以下の指定カラムを変更したり、削除したりしたのですが、
②が発生します
また、AS句の文言を変更した場合にも②が発生します
(利用時間計 → 利用時間計2)
GROUP BYでは2バイト文字が使用できないのでしょうか?
AS句を1文字変えただけでなぜエラーになるのでしょうか?
回答3件
あなたの回答
tips
プレビュー