ОФИЦИАЛЬНЫЙ ФОРУМ ГРУППЫ КОМПАНИЙ «ТЕХНОКОМ»

ОФИЦИАЛЬНЫЙ ФОРУМ ГРУППЫ КОМПАНИЙ «ТЕХНОКОМ» (http://forum.tk-chel.ru/index.php)
-   Система «АвтоГРАФ»: Программное обеспечение (http://forum.tk-chel.ru/forumdisplay.php?f=4)
-   -   OLE запросы по списку машин (http://forum.tk-chel.ru/showthread.php?t=3320)

Radik 21.10.2013 22:27

OLE запросы по списку машин
 
Здравствуйте
Мне нужно выбрать все рейсы каждой машины из группы.
Написал опрос через OLE, но есть такой глюк.
Если в ПО выбрать конкретную машину до того как запрошу данные через OLE, то только по этой машине возвращаются данные о рейсах. По другим машинам только общие сведения.
т.е. TripsNum не изменяется после каждого WaitForComputing
Как правильно запросить данные?

zsergey 22.10.2013 04:34

Покажите код.

Radik 22.10.2013 07:41

код
 
Код:


        private void QueryData(List<Car> list, Action<Exception> ready)
        {
            FirstTime = Start.ToString("dd.MM.yyyy") + " " + StartTime.ToString("HH:mm:ss");
            LastTime = End.ToString("dd.MM.yyyy") + " " + EndTime.ToString("HH:mm:ss");
            Task.Factory
                .StartNew(() => ReadNext(list))
                .ContinueWith(t => ready(t.Exception));
        }
        private void ReadNext(List<Car> list)
        {
            for (var i = 0; i < list.Count; i++)
            {
                var car = list[i];
                car.Reset();
                Graph.WaitForComputing(car.GroupName, car.CarDevice, FirstTime, LastTime, Gsm, 1);
                car.OnEndComputing(Graph);
                SetProgress(i, list.Count);
            }
            _exporter.Export(list);
        }
 
        public void OnEndComputing(IAutoGRAPHAutomation graph)
        {
            var tripsNum = graph.TripsNum;// <-- всегда однинаковые данные
            for (var tripIndex = 1; tripIndex <= tripsNum; tripIndex++)
            {
                graph.TripIndex = tripIndex;
                var item = new Trip();
                AddTrip(item);
                item.TripIndex = tripIndex;
                item.TripDriverName = graph.TripDriverName;
                item.TripDriverId = graph.TripDriverID;
                item.TripStartRealTime = graph.TripStartRealTime;
                item.CarDevice = graph.CarDevice;
            }
        }


zsergey 22.10.2013 09:06

в сях не силен, но механизм такой, что нужно перебирать группы, затем транспорт, который входит в эти группы. И уже по каждой единице в отдельности делать расчет (WaitForComputing). Рабочие примеры по Оле можно взять в инсталляторе.

atc52 22.10.2013 10:51

Вложений: 1
Вот вам пример на базе Excel

Radik 23.10.2013 04:53

нашел ошибку
было
Graph.WaitForComputing(car.GroupName,
стало
Graph.WaitForComputing(Graph.GroupFileName,

Спасибо за подсказку.


Текущее время: 16:22. Часовой пояс GMT.

Powered by vBulletin® Version 3.8.5
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot