1

これは私の最初の質問です、親切にお願いします。Access でマクロを作成していて、一連のレポートを次々に実行したいと考えています。問題は、すべてのレポートに入力する必要がある日付範囲があることです。一部は前週のもので、一部は前月のものです。

VBA またはマクロ クリエーターで、前月または前週の日付範囲を自動的に計算し、フィールドにデータを入力して、毎回手動で日付範囲を入力することなくプロセスを完全に自動化する方法はありますか。

私はVBAの初心者です。どんな助けでも素晴らしいでしょう、ただ私を正しい方向に向けてください。良い一日を過ごしてください。

4

2 に答える 2

2

このクエリは、MS Access のクエリ デザイン ウィンドウを使用して作成され、SQL ビューから切り取られます。先週のレコードが表示されます。ここで、ww は週番号で、table1 に表示されます。

SELECT Table1.AKey, Table1.atext, Table1.ADate, 
       Format([ADate],"ww") AS Week, Month([ADate]) AS [Month], 
       Year([ADate]) AS [Year]
FROM Table1
WHERE (((Format([ADate],"ww"))=Format(Date(),"ww")-1)
AND ((Year([ADate]))=Year(Date())));

1 つの列が月と呼ばれることに気付くでしょう。これを使用して、前の週を設定するのと同様の方法で前の月を設定できます。たとえば、先週と先月の両方:

SELECT Table1.AKey, Table1.atext, Table1.ADate, 
       Format([ADate],"ww") AS Week, Month([ADate]) AS [Month], 
       Year([ADate]) AS [Year]
FROM Table1
WHERE (((Format([ADate],"ww"))=Format(Date(),"ww")-1) 
AND ((Year([ADate]))=Year(Date()))) 
OR (((Month([ADate]))=Month(Date())-1) 
AND ((Year([ADate]))=Year(Date())));

SQL はもっときれいに書くことができますが、クエリ デザイン ウィンドウから始めることもできます。

于 2012-11-14T14:52:45.947 に答える
0

開いたデータベースに日付に独自のフィールドがあると思います。
このようなことができます

strSQL = "SELECT * FROM reports WHERE Date >= " & now() -7
rs.open(strSQL)
' for the last week

strSQL = "Select * FROM reports WHERE Date >= " & now() - 30
rs.open(strSQL)
' for the last month

ただし、 now() をテーブルと同じ形式にフォーマットする必要があります。これは、最も生のコードです。私は似たようなものを処理しなければなりませんでしたが、これは非常にうまくいきました

于 2012-11-14T14:53:18.363 に答える