< | >

バックデイトでの日次処理、ケース2
  • (2009-03-01 12:13:59)
クエリを生成するDAOオブジェクト「QueryDef」

-------------------------------

日付を変更する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 >>
search
layout
admin

[▲page top]