2016-05-03 8 views
1

シンプルな時計データベースを構築しました。Access 2013で最後に変更されたレコードに日付/時刻を挿入します。

  • ID(オートナンバー)
  • 社員
  • TimeIn(日付/時刻)
  • タイムアウト(日付/時刻):表には4つの列があります。

従業員には、クロック入力とクロック出力の2つのボタンがあるフォームのみが表示されます。 各ボタンには、Clickボタンがクリックされたことに応じて、fOSUserNameNow()TimeInまたはTimeOutの下に新しいレコードをテーブルに追加するOn Clickイベントがあります。

このすべての機能は素晴らしいですが、1日あたりの作業時間数を示すレポートが必要です。正確なDateDiff()のレポートを取得するには、TimeInTimeOutのデータを同じ行に配置する必要があります。私はLastModified、MovePrevious/MoveNext、およびIfNullを試して、私は手動で移動せずに同じ行にTimeOutを得ることができません。

答えて

0

ない完璧な、しかし、あなたはこのような何かを始めることができます:あなたはこのように行うことができ

update clock 
set timeOut = Now() 
where employeeId = fOsUsername() 
and id in (select top 1 id from clock where employeeId = fOsUsername() 
        and timeOut is null and timeIn > Date()-1 
        order by id desc 
     )  
+0

私はこれを試してみましたが、以下のコンパイルエラーました:予想:行番号をかラベルまたはステートメントまたはステートメントの終わり。それは "id"によって引き起こされるようです。 – shadow2451

+0

@ shadow2451これはVBAではなくSQLです。 –

+0

申し訳ありません、私はVBAに入っていますが、まだSQLをあまり使っていません。これは、クエリに挿入するか、フォームのOn Clickプロシージャとして挿入しますか? – shadow2451

0

Select 
    EmployeeID, 
    Sum(TimeIn) As ClockIn, 
    Sum(TimeOut) As ClockOut 
From 
    YourClockTable 
Group By 
    EmployeeID, 
    DateValue(Nz(TimeIn, TimeOut)) 
+0

私はこれがクエリにあると思います(申し訳ありませんが、私はまだSQLに精通していません)。これは、私がレポートを実行するときに私にIDを入力するためのパラメータボックスを与えている。レポートの[ClockIn]および[ClockOut]テキストボックスにはどのような形式を使用する必要がありますか? – shadow2451

+0

はい、SQLです。あなたのテーブル名などに合わせて修正し、SQLペインに貼り付けてください。もちろん、このソースを使用するようにレポートを調整する必要があります。値はdatetimeなので、使用する形式は_h:nn_ – Gustav

+0

です。レポート(ClockIn、ClockOut、およびID)を実行して空白の結果を残すと、次の3つの入力ボックスが表示されます: "この式は正しく入力されていません。複雑すぎて評価することはできません "。なぜ入力ボックスが表示されますか? – shadow2451

関連する問題