[ad_1]
問題
How to get last row in date today from zk machine ?
私はマシン上の従業員の出勤に依存してアプリケーションに取り組んでいます
データを取得するにはマシン上のログ ファイル データに依存する必要があります
私はすでに csharp を使用してマシンに接続しており、勤怠のすべてのデータを取得しています
しかし、マシンごとに最後の行を取得する必要があります。つまり、今日の 1 日あたりの最後の出席行を意味します。
私はすでにzkemkeeper.dllを追加しました
私が試したこと:
ICollection<MachineInfo> lstMachineInfo = manipulator.GetLogData(objZkeeper, int.Parse(tbxMachineNumber.Text.Trim())); if (lstMachineInfo != null && lstMachineInfo.Count > 0) { BindToGridView(lstMachineInfo); ShowStatusBar(lstMachineInfo.Count + " records found !!", true); } else DisplayListOutput("No records found");
解決策 1
... = lstMachineInfo.Where( x => x.date < DateTime.Now ).Last(); or ... = lstMachineInfo.Where(...).OrderDescending( x => x.date ).First(); or etc.
解決策 2
public ICollection<MachineInfo> GetLogData(ZkemClient objZkeeper, int machineNumber) { string dwEnrollNumber1 = ""; int dwVerifyMode = 0; int dwInOutMode = 0; int dwYear = 0; int dwMonth = 0; int dwDay = 0; int dwHour = 0; int dwMinute = 0; int dwSecond = 0; int dwWorkCode = 0; ICollection<MachineInfo> lstEnrollData = new List<MachineInfo>(); objZkeeper.ReadAllGLogData(machineNumber); while (objZkeeper.SSR_GetGeneralLogData(machineNumber, out dwEnrollNumber1, out dwVerifyMode, out dwInOutMode, out dwYear, out dwMonth, out dwDay, out dwHour, out dwMinute, out dwSecond, ref dwWorkCode)) { string inputDate = new DateTime(dwYear, dwMonth, dwDay, dwHour, dwMinute, dwSecond).ToString(); DateTime today = DateTime.Today; lstEnrollData = lstEnrollData.Where(info => info.DateTimeRecord.StartsWith(today.ToString("yyyy-MM-dd"))) .ToList(); // Group the logs by employee and get the last attendance record for each employee lstEnrollData = lstEnrollData.GroupBy(info => info.IndRegID) .Select(group => group.OrderByDescending(info => info.DateTimeRecord).First()) .ToList(); MachineInfo objInfo = new MachineInfo(); objInfo.MachineNumber = machineNumber; objInfo.IndRegID = int.Parse(dwEnrollNumber1); objInfo.DateTimeRecord = inputDate; lstEnrollData.Add(objInfo); } // Make the API call for each attendance record return lstEnrollData; }
[ad_2]
コメント