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

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

Kserg 15.08.2012 08:08

Ошибка экспорта данных
 
Добрый день!
Для нужд нашей внутренней системы забираю данные из системы "Автограф". Использую процедуру Autograph.ExportDataToFile
Вопрос такой. У нас бывает, что появляются проблемы с доступом в Интернет (падает скорость). Так вот в этом случае часто появляется ошибка "Ошибка экспорта данных в файл <имя файла>". Как обработать эту ошибку (чтоб не выводилась)?

plex 15.08.2012 08:15

ИМХО это не вязано с интернетом. У вас данные подгружает автограф или даталоадер?

SK 15.08.2012 08:40

С интернет-ом это не связано. Связано с программированием, правами доступа пользователя, файл занят другим приложением и т.п.
Может быть где-то не дождались готовности данных или еще что-то.
Без дополнительной информации сказать трудно.

Plex: речь про OLE.

plex 15.08.2012 10:59

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

Kserg 16.08.2012 00:49

> У вас данные подгружает автограф или даталоадер?
Данные подгружает автограф.
> Связано с программированием, правами доступа пользователя, файл занят другим приложением и т.п.
Вот кусок кода
Autograph.ExportDataToFile(dr_tmp+'\proba_'+IntToS tr(Autograph.GroupsNum)+IntToStr(Autograph.GroupCa rsNum)+IntToStr(Autograph.TripIndex)+'.dbf', 10,1);

Дальше делаю запрос через ADO к этой таблице, забираю данные и удаляю файл. Программирование прямое, без потоков.
Но... У нас в течении суток были проблемы на канале доступа в Инет и эта шибка появлялась регулярно (программа периодически забирает данные). Как только канал был восстановлен - ошибка не появляется. В данный момент все работает, но хотелось бы разобраться что это за ошибка и как ее обойти, чтоб не раздражать пользователей.

SK 16.08.2012 06:04

1. Это просто вызов функции экспорта.
2. Приведите кусок кода с запуском функции расчета.
3. Вы пробовали воспользоваться обработчиком try / catch ?
4. Что за dr_temp ? Это сетевой диск ?

Kserg 16.08.2012 06:14

Это кусок текста программы:

Autograph.StartComputing(Autograph.GroupFileName,A utograph.CarDevice, DateTimeToStr(adtn), DateTimeToStr(adtk),'GSM',0);
while Autograph.ComputingBusy<>0 do
Vis_form.Cursor := crHourGlass;
Vis_form.Cursor := crDefault;
Autograph.ExportDataToFile(dr_tmp+'\proba_'+IntToS tr(Autograph.GroupsNum)+IntToStr(Autograph.GroupCa rsNum)+IntToStr(Autograph.TripIndex)+'.dbf', 10,1);

try
A_db.SQL.Clear;
A_db.SQL.Add('select sernum, datetime, speed, level1, COUNTER3 from proba_'+IntToStr(Autograph.GroupsNum)+IntToStr(Aut ograph.GroupCarsNum)+IntToStr(Autograph.TripIndex) +' where tdatetime>'+Replace(FloatToStr(mtm),',','.')+' order by datetime');
A_db.Active := true;
except
on E:Exception do begin
if fl_log then
save_log(DateTimeToStr(now)+' Ошибка запроса к таблице DBF.'+chr(13)+' '+PChar(E.Message));
exit;
end;
end;

Так вот, все работает правильно, а ошибка происходит именно в момент выполнения процедуры Autograph.ExportDataToFile. Причем сообщение об ошибке выдается как обычное сообщение с кнопкой "Ок".

dr_temp это папка на локальном компьютере, где установлена моя программа и Автограф.

programmer 16.08.2012 07:22

Попробуйте Autograph.TripIndex = 1 перед ExportDataToFile

Добавлено через 2 минуты
Ещё надо бы сделать проверку TripsNum > 0

Kserg 16.08.2012 07:25

Прошу прощения. Я убрал часть кода. Autograph.TripIndex = j у меня есть. И проверка тоже стоит.


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

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