![]() |
Ошибка экспорта данных
Добрый день!
Для нужд нашей внутренней системы забираю данные из системы "Автограф". Использую процедуру Autograph.ExportDataToFile Вопрос такой. У нас бывает, что появляются проблемы с доступом в Интернет (падает скорость). Так вот в этом случае часто появляется ошибка "Ошибка экспорта данных в файл <имя файла>". Как обработать эту ошибку (чтоб не выводилась)? |
ИМХО это не вязано с интернетом. У вас данные подгружает автограф или даталоадер?
|
С интернет-ом это не связано. Связано с программированием, правами доступа пользователя, файл занят другим приложением и т.п.
Может быть где-то не дождались готовности данных или еще что-то. Без дополнительной информации сказать трудно. Plex: речь про OLE. |
SK, да про OLE я понял. Предположил Вдруг программа неприяно вопринимает тот момент когда даталоадер допиывает в бинарник новые данные а при этом форируется выгрузка, хотя понятно что такая связь маловероятна.
|
> У вас данные подгружает автограф или даталоадер?
Данные подгружает автограф. > Связано с программированием, правами доступа пользователя, файл занят другим приложением и т.п. Вот кусок кода Autograph.ExportDataToFile(dr_tmp+'\proba_'+IntToS tr(Autograph.GroupsNum)+IntToStr(Autograph.GroupCa rsNum)+IntToStr(Autograph.TripIndex)+'.dbf', 10,1); Дальше делаю запрос через ADO к этой таблице, забираю данные и удаляю файл. Программирование прямое, без потоков. Но... У нас в течении суток были проблемы на канале доступа в Инет и эта шибка появлялась регулярно (программа периодически забирает данные). Как только канал был восстановлен - ошибка не появляется. В данный момент все работает, но хотелось бы разобраться что это за ошибка и как ее обойти, чтоб не раздражать пользователей. |
1. Это просто вызов функции экспорта.
2. Приведите кусок кода с запуском функции расчета. 3. Вы пробовали воспользоваться обработчиком try / catch ? 4. Что за dr_temp ? Это сетевой диск ? |
Это кусок текста программы:
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 это папка на локальном компьютере, где установлена моя программа и Автограф. |
Попробуйте Autograph.TripIndex = 1 перед ExportDataToFile
Добавлено через 2 минуты Ещё надо бы сделать проверку TripsNum > 0 |
Прошу прощения. Я убрал часть кода. Autograph.TripIndex = j у меня есть. И проверка тоже стоит.
|
Текущее время: 15:04. Часовой пояс GMT. |
Powered by vBulletin® Version 3.8.5
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd. Перевод: zCarot