2

申し訳ありませんが、私はアクセスの初心者であり、以下の解決策を見つけることができないようです。

タスクに費やされた時間数を監視するための単純なアクセスデータベースがあります。このアクティビティが7時間を超えた時点で、この事実を示すためにレコードを更新します。おそらく、これを超えた月と年を示すタイムスタンプを付けます。

タスクに費やされた時間に関する情報は、その月の特定の1日に手動で入力され、7時間以上は数か月にわたって収集できます。ただし、7時間を超えたタスクの数と、これが発生した月を示す内訳を含むデータからレポートを作成できる必要があります。

自動化されたルール/アクションを設定して、7時間のしきい値でレコードを更新するにはどうすればよいですか?(現在、各レコードには、現在の合計時間が記録された単一のフィールドが含まれています)

4

1 に答える 1

0

フォームを使用して新しいレコードをテーブルに挿入する場合、これを行う方法はいくつかあります。VBAの知識があれば教えていただけると助かります。

MS Access 2013 を使用している場合は、データ マクロ (SQL Server トリガーと同等の MS Access) も使用できます。

下位バージョンの Access を使用しており、フォームを使用してデータをテーブルに挿入/更新していると仮定すると、次のことが可能になります。

1. Create a query that summarize all hours spent group by taskID (*SELECT TaskID, SUM(Task_Hours) AS TotalHours FROM Tasks GROUP BY TaskID*  let call this Query TasksTotals)
2. Modify your Tasks table to Include Date/Time you can call it TaskDate) and another field called SeventhHourReached with a Boolean or a text value to be Yes or No
3. Create another Query that filters all tasks that have already reached the 7th hours (SELECT TaskID FROM Tasks Where SevethHourdReached ="Yes" GROUP by TaskID) - Lets call this query Tasks7H

ここで、いくつかの VAB を実行する必要があります

フォームの現在のイベント プロシージャまたは更新後のフォーム フィールド時間 で、VBA で次のイベント プロシージャを使用します。

If DLookup("TotalHours", "TasksTotals", "TaskID = " & Me.TaskID &"") >= 7 Then
  If DLookup("TaskID", "Tasks7h", "TaskID = " Me.TaskID & "") <> Me.TaskID Then
  Me.SevethHoursReached = "Yes" ----- This is you used a text field
  End If
End if

フィールド SevethHourReached がフォームに表示されているが、無効またはロックされているか、無効でロックされていることを確認してください。

レポートでは、TaskDate フィールドのデフォルト値に関数 now() を使用した場合、7 時間に達した日付と時刻が表示されます。レポート クエリに対して、7 時間に達したすべてのレコードを yes としてフィルター処理できます。

于 2014-10-10T18:29:16.587 に答える