【问题标题】:How to download attendance record with specified time via zkemkeeper如何通过zkemkeeper下载指定时间的考勤记录
【发布时间】:2017-08-16 17:54:50
【问题描述】:

我正在使用 zkemkeeper.dll 从生物识别设备下载考勤记录。

if (axCZKEM1.ReadGeneralLogData(iMachineNumber))//read all the attendance records to the memory
{   
   while (axCZKEM1.SSR_GetGeneralLogData(iMachineNumber, out idwEnrollNumber, out idwVerifyMode
        , out idwInOutMode, out idwYear, out idwMonth, out idwDay, out idwHour, out idwMinute, out idwSecond, ref idwWorkCode))//get records from the memory
   {
    //code here   
   }
}

我的问题是如何通过 zkemkeeper 下载指定时间(日期范围)的考勤记录。
函数 ReadGeneralLogData 会从设备加载所有记录,因为设备包含超过 15,000 条记录,这会花费太多时间,这几乎会导致设备挂起。
也不知道如何使用 GetDataFile 函数,我的意思是它保存文件的位置。
请帮忙

【问题讨论】:

    标签: c# interop biometrics


    【解决方案1】:

    zkemkeeper.dll 默认不支持“下载指定日期范围内的考勤记录”。为此,您必须使用来自 ZK 的自定义 SDK

    【讨论】:

    • Ganpathi 请详细说明您的答案。
    • 你能告诉我们在哪里可以找到来自 ZK 的神圣定制 SDK 吗?
    • @Ganapathi,zk 没有提供定制的 sdk。他们的网站上只有标准 sdk 可用
    【解决方案2】:

    我遇到了类似的问题,我必须以这种方式解决它。如果您的应用程序使用基于数据库或文件的数据存储,您可以在保存所有数据后清除设备日志

    if (axCZKEM1.ReadGeneralLogData(iMachineNumber))//read all the attendance records to the memory
    {   
       while (axCZKEM1.SSR_GetGeneralLogData(iMachineNumber, out idwEnrollNumber, out idwVerifyMode
            , out idwInOutMode, out idwYear, out idwMonth, out idwDay, out idwHour, out idwMinute, out idwSecond, ref idwWorkCode))//get records from the memory
       {
        //save your data here   
       }
    
    //after that you clear the machine log
        if (axCZKEM1.ClearGLog(iMachineNumber))
        {
            axCZKEM1.RefreshData(iMachineNumber);//the data in the device should be refreshed
            message = "All att Logs have been cleared from teiminal!, Success";
        }
        else
        {
            axCZKEM1.GetLastError(ref idwErrorCode);
            message = "Operation failed, ErrorCode = " + idwErrorCode.ToString();
        }
    
    
    }
    

    这样您的下一次下载将快得多并且操作清晰。您将能够在每次需要时从设备下载所有日志数据,当然您可以在数据存储到数据库后进行过滤。

    用户不知道日志数据是在设备中还是在数据库中,请放心。重要的是数据存储在某个地方并且用户可以看到它。

    【讨论】:

    • 请记住,如果在记录下载和清除之间有人使用终端,那么该记录将会丢失,您可以使用终端锁定功能来缓解问题。
    【解决方案3】:

    我通过zkemkeeper获得了指定时间(日期范围)的解决方案下载考勤记录。

    If idwYear.ToString() = Date1.Value.Year.ToString() And idwMonth.ToString() = Date1.Value.Month.ToString() And idwDay.ToString() = Date1.Value.Day.ToString() Then
                 //type coding
    End If
    

    【讨论】:

    • 能否请您详细说明您的答案,添加更多关于您提供的解决方案的描述?
    • 你还是从设备上下载完整的数据,用条件块过滤掉数据。
    【解决方案4】:

    试试这个..

    lstMachineInfo = manipulator.GetLogData(objZkeeper,int.Parse(tbxMachineNumber.Text.Trim()));
    String dtFrom = dateFrom.Value.ToShortDateString();
    String dtTo = dateTo.Value.ToShortDateString();
    
    List<MachineInfo> newList = list.Where(x => x.DateOnlyRecord >= dateFrom.Value.AddDays(-1) && x.DateOnlyRecord <= dateTo.Value).ToList();
    ShowStatusBar(newList.Count() + " records found !!", true); 
    dataGridView.DataSource = newList;
    

    【讨论】:

      【解决方案5】:

      首先你必须读取内存中的所有记录.. 然后我使用一个日期时间选择器和一个按钮创建了一个表单。 现在您必须等于机器日期和选定日期。 最后你写了保存函数编码

      【讨论】:

        【解决方案6】:

        获取后将其保存到您的数据库,然后选择 * FROM Where Like

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2018-12-07
          • 2016-06-10
          • 2013-10-26
          • 2020-05-27
          • 1970-01-01
          • 1970-01-01
          • 2016-07-20
          • 1970-01-01
          相关资源
          最近更新 更多