2015-02-25 6 views
-1

Я использую zkemkeeper.dll для загрузки записи посещаемости с биометрического устройства.Как загрузить запись посещаемости с указанным временем через zkemkeeper

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 тысяч записей.
Также не знаю, как использовать функцию GetDataFile, я имею в виду, где она сохраняет файл.
Пожалуйста, помогите

ответ

1

По умолчанию zkemkeeper.dll не поддерживает «записи посещений загрузки между указанным диапазоном дат». Для этого вы должны использовать индивидуальный SDK от ZK

+0

Ganpathi PLZ разработать ваш ответ plz. – Saurabh

+0

Можете ли вы сказать нам, где мы можем найти этот священный индивидуальный SDK от ZK? –

0

Я получил регистрацию посещений решения с указанным временем (диапазон дат) через 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 
+0

Не могли бы вы подробнее рассказать о своем ответе, добавив немного подробного описания вашего решения? – abarisone

-1

первую очередь вы должны получить прочитать все записи в память .. тогда я создал одну форму, используя одну дату выбора времени и одну кнопку. теперь вы должны равняться машине и выбранной дате. наконец вы пишете функцию сохранения кодирования

-1

сохранить его в базе данных после выборки затем Select * FROM Где Как

0

попробовать это ..

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; 
0

У меня была аналогичная проблема, и я должен был решить это так. Если ваше приложение использует базу данных или хранилище данных на основе файлов, вы можете очистить журнал устройства после того, как вы сохраните все свои данные.

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(); 
    } 


} 

Таким образом, ваша следующая загрузка будет гораздо быстрее и операцией очистки, а также. Вы сможете загружать все данные журнала с устройства каждый раз, когда вам нужно, и, конечно же, вы можете фильтровать свои данные, как только они будут сохранены в вашей базе данных.

Пользователи не знают, находятся ли данные журнала на устройстве или в базе данных. Важно то, что данные хранятся где-то, и пользователи могут это видеть.