バックデイトでの日次処理、ケース2
- (2009-03-01 12:13:59)
-------------------------------
「日付を変更するVB」ではPCの日付を強引に戻してバックデイトの処理をするケース。難点は日付の戻し忘れ。処理中に電話やインターラプトが入って作業に戻ってくるとPCの日付を変更したことを忘れていて災難に合うことがある。そのためPCに日付は操作せず、データベースでバックデイト日付のデータ抽出する方式も用意した。
VBAのInputBox関数で目的の日付データを入力。それを日付パラメーターとしてSQL文を生成、バーチャルなクエリテーブルを展開。それをエクスポート(それはそのまま会計ソフトのインポート用データとなる)。
会計ソフトインポート用のデータとしては会計ソフトの規定するフォーマットに整形する必要があるが、それは秀丸マクロで行う。まずは目的の日付の会計データをエクスポートするまでの自動化を目指す。
テンポラリーなクエリを生成するために、はじめて「QueryDef」というDAOオブジェクトを使用した。Microsoft社の周到な準備に今回もひどく感動した。しかし、QueryDefはいったい何なのかよくわからない。Defが何の略かも調べられなかった。今後おいおいわかってくるかも。
Dim DB As DAO.Database
Dim qdf As DAO.QueryDef
Set DB = CurrentDb
strDate = InputBox("例[月日]:02/20")
strSQL = "SELECT [受注テーブル].受信日時, [受注テーブル].請求額 FROM" & vbCrLf & _
"受注テーブル WHERE ((([受注テーブル].受信日時)" & vbCrLf & _
"Like '2009/" & strDate & "*');"
On Error GoTo ERROR_Sub
'-------------------------------
'会計ソフトに落とすための一時的なクエリ生成
'-------------------------------
Set qdf = DB.CreateQueryDef("会計日次処理バックデイト", strSQL)
'-------------------------------
'生成された会計ソフトインポート用データのエクスポート
'-------------------------------
DoCmd.TransferText acExportDelim, "", "会計日次処理バックデイト", "C:\会計日次処理バックデイト.txt", False, ""
'-------------------------------
'生成されたクエリは次回の本プログラム起動時に残っている。
'同名のクエリが存在すると3012おいうエラーになるので、それを削除
'-------------------------------
ERROR_Sub:
If Err.Number = 3012 Then '3012はすでに同名のクエリが存在する場合
DB.QueryDefs.Delete "会計日次処理バックデイト"
Resume
End If
qdf.Close: Set qdf = Nothing
DB.Close: Set DB = Nothing
<< PCの省電力24時間稼働< | >(備忘録) Illustrator >>