2016-07-07 10 views
0

私は現在、以前の従業員によって開発されたアクセスデータベースを作成しており、必要に応じてシステムを維持/調整するために導入されました。従業員が行ったタスクの情報が保存され、メトリックを表示するために作成できるさまざまなレポートがあります。これらのレポートを読んでいる人にこれらのレポートをより明確にするために、私は "Date Viewed"をレポートヘッダーに追加したいと思います。フォーム情報がレポートに渡されました

レポートを開くために、マネージャは、対応するレポートをロードする[開始]ボタン(今日、昨日、または特定の日)をクリックします。 "Today"と "Yesterday"の両方で、Date =とDate =)を使用して日付を入力できます。しかし、私は特定の日付に似たようなことをやっている。

私の解決策は今までフォームのボタンを押すことで、InputBoxはその日のレポートをWHERE文で生成するためにマネージャーから日、月、年を取得します。レポートでこれらの値(dt、mo、yr)を使用したいと思いますが、vbaコードからこれらの値を取得するためにレポートに何を入れるべきか分かりません。これへのアイデア、またはそれにアプローチする別の方法は、評価されるでしょう!

現在のVBAコードは以下のとおりです。私が読んだところでは、情報を保存するための一時的なクエリ/テーブル/フォームを作成し、それをレポートに戻す手法があります。あるいは、これらの変数を「パブリック」にしてさまざまな場所から取得する方法がありますが、現在その方法は私の頭の中にあります。 REで

Private Sub SpecificSummary_Click() 

Dim stDocName As String 
Dim yr As Integer 
Dim mo As Integer 
Dim dt As Integer 

mo = InputBox("Enter Month:") 
dt = InputBox("Enter Day:") 
yr = InputBox("Enter Year:") 

stDocName = "SpecificSummary" 
DoCmd.OpenReport stDocName, acViewPreview, , "((Year([TimeStamp])) = " & yr & ") And ((Month([TimeStamp])) = " & mo & ") And ((Day([TimeStamp])) = " & dt & ")" 

End Sub 

詳細:HansUp

に今日と昨日レポートでは、レポートヘッダのテキストボックスを使用して、私は(=日付を使用)今日、そして=日付()のために - 1昨日のために。

更新:要望どおり、Todayレポートの現在のコード/方法をご紹介します。私が使用してレポート(TodaySummary)では、

Private Sub TodaySummary_Click() 

Dim today As Date 
Dim stDocName As String 
Dim yr As Integer 
Dim mo As Integer 
Dim dt As Integer 

today = Date 

yr = Year(today) 
mo = Month(today) 
dt = Day(today) 

stDocName = "DailySummary" 
DoCmd.OpenReport stDocName, acViewPreview, , "((Year([TimeStamp])) = " & yr & ") And ((Month([TimeStamp])) = " & mo & ") And ((Day([TimeStamp])) = " & dt & ")" 

End Sub 

...

=Date() 

日付をプリントアウトする

私はそれがあるべきよりも、これははるかに困難作り、としていますように私は感じます日付を年/月/日に分割する代わりに日付を使用し、WHERE条件をそのように使用する明白な方法が盲目的に不足しています。

+0

私が私を導くのを手助けしようとしていた投稿の1つがこの1つでしたが、OpenArgsの部分を使って少し混乱しているようでした。 http://stackoverflow.com/questions/398804/how-do-i-pass-a-parameter-into-an-access-report-programatically – BadgerMotsu

+0

@HansUp質問で更新されました。コントロールソースを= Date()としたテキストボックスのレポートヘッダーにあるものを使用します。そして、はい、現時点で3つの別々のレポートがあります。 – BadgerMotsu

+0

他のデザインの違いは、今日のInputboxの代わりにVBAコーディングであり、昨日WHERE条件を満たすために以下のコードを使用します。 今日=日付 年=年(今日) MO =月(今日) DT =日(今日) – BadgerMotsu

答えて

0

私はそれを得ました - あなたはすべてのクエリで同じレポートを使用していると仮定しましたが、これは確かに可能です。

あなたがしたいのは、レポートヘッダーのテキストフィールドを動的に変更することだけです。あなたはそれを確かに行うことができます。

Dim stDocName As String 
Dim yr As Integer 
Dim mo As Integer 
Dim dt As Integer 

Dim strTextDate As String 

mo = InputBox("Enter Month:") 
dt = InputBox("Enter Day:") 
yr = InputBox("Enter Year:") 

' Change this to match your date format 
strTextDate = "" & yr & "-" & mo & "-" & dt 

stDocName = "SpecificSummary" 

' Add date to last OpenArgs parameter of OpenReport 
DoCmd.OpenReport stDocName, acViewPreview, , , acWindowNormal, strTextDate 

Private Sub Report_Load() 
    Dim strTextDate As String 
    strTextDate = Nz(Me.Report.OpenArgs, "") 

    ' Replace "Text5" with your control 
    Text5.Value = strTextDate 
End Sub 

がするようにコードを変更します。レポートに

EDITのUSE REPORT_LOADイベント
はその後のように見えるためにイベントを編集
Report_Loadイベントを開きますコードを実行する前に、レポートデザインを閉じて保存してください。

+0

「2448:このオブジェクトに値を代入することはできません」というエラーが発生し、Text5.Value = strTextDate行が強調表示されます。行ごとに実行するstrTextDateは文字列を取得しますが、Text5ボックスに入力させません。確かに、Text5はレポートに日付を入力したいテキストボックスの名前ですか? – BadgerMotsu

+0

あなたのレポートで使用するコントロールでなければなりません - 私は単なる例でした – dbmitch

+0

編集済み - Report_Openを使用できません - まだアクセスできないコントロール - Report_Loadを使用してください – dbmitch

関連する問題