Стоит электронная очередь Норма.
Работает Debian + PostgreSQL +PHP + Java + QCubed.
QCubed - идиотская библиотека для php.
Задача написать отчет сколько по времени идет обслуживание посетителей.
Решил легче написал отчет в Microsoft Excel и через ODBC + MSQuery вытянуть нужные данные.
Драйвера ODBC PostgreSQL для Windows 7 64 естественно прдеварительно установил.
Первый макрос VBA Excel
CODE:Sub ЗапросПостгрес()
Dim Query As QueryTable, connstring As String
connstring = "ODBC; DSN=PostgreSQL35W; UID=phppgadmin; PWD=123456; Database=equeue; Port=5432"
'strQuery = "SELECT * FROM service;"
strQuery = "SELECT rel_request_event.request_id, request_event_type.id, request_event_type.name, rel_request_event.event_date, rel_request_event.event_time, rel_request_event.operator_id, service.name FROM public.rel_request_event rel_request_event, public.request_event_type request_event_type, public.service service WHERE (rel_request_event.operator_id=5) AND (rel_request_event.event_date>{d '2013-07-01'}) AND (service.id=rel_request_event.service_id) AND (request_event_type.id=rel_request_event.event_type_id) OR (rel_request_event.operator_id=6) AND (rel_request_event.event_date>{d '2013-07-01'}) AND (service.id=rel_request_event.service_id) AND (request_event_type.id=rel_request_event.event_type_id) ORDER BY rel_request_event.request_id, rel_request_event.event_time "
With ActiveSheet.QueryTables.Add(Connection:=connstring, _
Destination:=Range("A1"), Sql:=strQuery)
.Refresh
End With
End Sub
(Добавление)
Второй макрос где полученные данные просто считаем среднее значение времени
CODE:Sub РасчетСреднегоВремениОбслуживания()
Dim Str1 As String, TimeService As Date, event_type_id As Integer, y As Integer
i = 1
While ActiveSheet.Cells(i + 1, 1).Value
i = i + 1
Str1 = "=E" + Str(i + 2) + "-" + "E" + Str(i)
event_type_id = ActiveSheet.Cells(i, 2).Value
If event_type_id = 6 Then
If ActiveSheet.Cells(i + 1, 2).Value = 28 Then
ActiveSheet.Cells(i, 9).Formula = Replace(Str1, " ", "")
TimeService = TimeService + ActiveSheet.Cells(i, 9)
y = y + 1
End If
If ActiveSheet.Cells(i + 3, 2).Value = 28 Then
ActiveSheet.Cells(i, 9).Formula = Replace(Str1, " ", "")
TimeService = TimeService + ActiveSheet.Cells(i, 9)
y = y + 1
End If
End If
ActiveSheet.Cells(i + 1, 8).Value = i
Wend
Str1 = "=СРЗНАЧ(I2:I" + Str(i + 1) + ")"
ActiveSheet.Cells(i + 2, 9).FormulaLocal = Replace(Str1, " ", "")
End Sub (Отредактировано автором: 22 Июля, 2013 - 16:00:38) |