PDA

Просмотр полной версии : Проблема: Выгрузка в Excell числа прибытий в КТ


Smolinc
15.09.2011, 07:37
Добрый день, возникла у клиента такая потребность выгрузить часть данных в Excell.
У него там свои формулы и расчеты.
Перечитал в очередной раз документы по OLE, но так и не нашел параметр отвечающий за кол-во прибытий в КТ или я где то не доглядел.
Единственное что нашел это "Getin_CNTR", но в описании полей DBF для списков (как я понимаю это только в FastReporte можно использовать?).
Вот теперь сижу и думаю как бы мне подсчитать число прибытий в КТ (все которые есть в списке поинтс для данной группы).

storm
15.09.2011, 07:43
Smolinc,
вам нужно для начала задать TripEntriesListTypeName = checkpoints и TripEntriesListKindName = points
потом перебором EntryIndex от 1 до TripEntriesNum вы получите список КТ

допустим название КТ будет в поле EntryStartName

Дмитрий 22
15.09.2011, 09:56
Где то в этой теме http://forum.tk-chel.ru/showthread.php?t=278&page=3 я уже колбасился по поводу числа прибытий в КТ. Все отлично работает.

Smolinc
16.09.2011, 06:46
Где то в этой теме http://forum.tk-chel.ru/showthread.php?t=278&page=3 я уже колбасился по поводу числа прибытий в КТ. Все отлично работает.
Спасибо конечно, но я сразу сказал что нужно в EXCELL в отчетах это реализовать не проблема.
вам нужно для начала задать TripEntriesListTypeName = checkpoints и TripEntriesListKindName = points
потом перебором EntryIndex от 1 до TripEntriesNum вы получите список КТ
Это думаю вариант сейчас буду пробывать единственное сам список КТ мне не нужен поэтому просто буду перебирать все записи и считать чило вхождений.

SK
16.09.2011, 07:48
Где то в этой теме http://forum.tk-chel.ru/showthread.php?t=278&page=3 я уже колбасился по поводу числа прибытий в КТ. Все отлично работает.
Спасибо конечно, но я сразу сказал что нужно в EXCELL в отчетах это реализовать не проблема.
вам нужно для начала задать TripEntriesListTypeName = checkpoints и TripEntriesListKindName = points
потом перебором EntryIndex от 1 до TripEntriesNum вы получите список КТ
Это думаю вариант сейчас буду пробывать единственное сам список КТ мне не нужен поэтому просто буду перебирать все записи и считать чило вхождений.
Так получается, если Вам не нужна разбивка по КТ, то TripEntriesNum и будет числом вхождений...

storm
16.09.2011, 08:28
Так получается, если Вам не нужна разбивка по КТ, то TripEntriesNum и будет числом вхождений...
нет, ты немного не понял,

Smolinc правильно написал, нужно именно считать сколько раз входит в каждую КТ

SK
16.09.2011, 10:53
Так получается, если Вам не нужна разбивка по КТ, то TripEntriesNum и будет числом вхождений...
нет, ты немного не понял,

Smolinc правильно написал, нужно именно считать сколько раз входит в каждую КТ
Если в каждую - тогда цикл.

Smolinc
28.09.2011, 02:23
Ну вот добравшись снова до этой задачи и покумекав денек понял, что дальше просто тупик.
Может я что то не правильно делаю. Решил просто посмотреть какие данные будут в TripEntriesNum
сначала я рассчитываю рейс AG.StartComputing Cells(2, 2), Cells(3, 2), Cells(4, 2), Cells(5, 2), Cells(6, 2), 1потом устанавливаю тип и вид по советуstormTripEntriesListTypeName = checkpoints и TripEntriesListKindName = points. Но они Empty.
Или вместо points мне надо указывать название списка КТ?

storm
28.09.2011, 05:30
Но они Empty.
кто они?
нужно задавать примерно так
TripEntriesListTypeName = "checkpoints"
TripEntriesListKindName = "points"

Smolinc
28.09.2011, 05:44
Но они Empty.
кто они?
нужно задавать примерно так
TripEntriesListTypeName = "checkpoints"
TripEntriesListKindName = "points"
TripEntriesListTypeName, TripEntriesListKindName они Empty.
А если писать в "" то они равны "checkpoints" и "points" соответственно.
И TripEntriesNum в любом случае Empty. Вот как то так.

storm
28.09.2011, 05:51
чтобы не играть в телепатов, весь код в студию

Smolinc
28.09.2011, 06:08
Вот так хочу получить что выдает TripEntriesNum.

Private Sub Button_Click()

Set AG = CreateObject("AutoGRAPH.AutoGRAPHAutomation")

AG.StartComputing "Участок технологического транспорта.ini", "75769", Cells(1, 2), Cells(2, 2), "GSM", 1
AG.TripEntriesListTypeName = "checkpoints"
AG.TripEntriesListKindName = "Points"
Cells(3, 2) = AG.TripEntriesNum

End Sub

storm
28.09.2011, 06:33
скорее всего у вас не успевает отработать функция StartComputing, лучше замените ее на WaitForComputing с теми же параметрами или дождитесь когда флаг
ComputingBusy
Признак выполнения расчётов: 0 – готов, 1 – занят

будет равен 0

Smolinc
28.09.2011, 06:44
скорее всего у вас не успевает отработать функция StartComputing, лучше замените ее на WaitForComputing с теми же параметрами
О теперь считает спасибо. Пошел дальше делать.

TOOP
09.03.2013, 11:47
Возникла такая же необходимость как в этой ветке. Нужен подсчет количества прибытий в каждую геозону.
Взял этот код.
Код:
Private Sub Button_Click()

Set AG = CreateObject("AutoGRAPH.AutoGRAPHAutomation")

AG.StartComputing "Участок технологического транспорта.ini", "75769", Cells(1, 2), Cells(2, 2), "GSM", 1
AG.TripEntriesListTypeName = "checkpoints"
AG.TripEntriesListKindName = "Points"
Cells(3, 2) = AG.TripEntriesNum

End Sub


Заменил StartComputing на WaitForComputing.
Указал временной интервал в “Cells(1, 2)”, “Cells(2, 2)”, формата 01.02.2014 19:30:00.
Выдает ошибку в этой строке "Cells(3, 2) = AG.TripEntriesNum".
Пробовал делать цикл как написано выше. Программа ошибок не выдает. Но и результата тоже нет.

SK
09.03.2013, 13:33
Не спешите...


Sub Кнопка1_Щелчок()
Set AG = CreateObject("AutoGRAPH.AutoGRAPHAutomation")

Range("A8:Z65536").Clear

AG.SetGroupIndexByFileName Cells(1, 2)
AG.SetCarIndexByDevice Cells(2, 2)

AG.ComputingTimeout = 15 'таймаут на расчет
AG.WaitForComputing Cells(1, 2), Cells(2, 2), Cells(3, 2), Cells(4, 2), "GSM", 1

Tripsnum = AG.Tripsnum
Cells(8, 1) = "Кол-во рейсов:"
Cells(8, 2) = Tripsnum
Cells(9, 1) = "Файл КТ:"
Cells(9, 2) = AG.CarCheckPointsFile


SR = 11 ' начальная строка для вывода информации о рейсах и КТ

If Tripsnum > 0 Then
For x = 1 To Tripsnum
AG.TripIndex = x
AG.TripEntriesListTypeName = "checkpoints"
AG.TripEntriesListKindName = "points"
KTNum = AG.TripEntriesNum
Cells(SR, 1) = "РЕЙС №"
Cells(SR, 2) = x
SR = SR + 1
Cells(SR, 1) = "Кол-во КТ:"
Cells(SR, 2) = KTNum
SR = SR + 1

If KTNum > 0 Then
Cells(SR, 1) = "№ КТ"
Cells(SR, 2) = "Имя КТ"
Cells(SR, 3) = "Начало"
Cells(SR, 4) = "Конец"
SR = SR + 1
For xx = 1 To KTNum
AG.EntryIndex = xx
Cells(SR, 1) = xx
Cells(SR, 2) = AG.EntryStartName
Cells(SR, 3) = AG.EntryStartRealTime
Cells(SR, 4) = AG.EntryEndRealTime
SR = SR + 1
Next xx
SR = SR + 1
End If
Next x
End If

End Sub


http://gyazo.com/245d6f4cc534f11985b53303fd9efea6.png