Импорт из икселя в оракл.
Дело вот в чем:
Имеется приложение BCB 5.0, задачей которого является:
- считывание информации из некоторого excel-файла (это происходит посредством использование объектов класса Variant)
- работа с БД ORACLE (посредством использования компонентов TADOStoredProcedure и TADOQuery )
- считанная информация из excel обрабатывается посредством запуска ряда процедур БД, в качестве параметров процедур выступают считанные данные.
- формирование log-файла ошибок, появление которых возможно при проверке и записи данных
- после проведения проверок запускается процедура БД на добавление записи, параметрами которой опять же являются считанные из excel данные!!!
Проблема заключается в том, что нет стабильности работы приложения, которая проявляется в виде внезапного появления окна borland-ового CPU-отладчика во время работы программы!!!
При этом, чтобы программа возобновила работу, достаточно повторно нажать кнопку запуска приложения!!!
В этой ситуации в log-файле фиксируется ошибка некорректного выпролнения процедуры, которую запускают компоненты ADO. Вот пример ошибки-
(Строка EXCEL файла № 0
ВНИМАНИЕ!!! данных по NRN
значение - 0
Не найдено в БД!
Ячейки <D05> Ошибка добавления затраты в БД!! )
!!!!!!!!!!!!!!!!!!!далее следует расшифровка ошибки!!!!
ORA-06550: line 1, column 28:
PLS-00103: Encountered the symbol "«" when expecting one of the following:
( ) - + mod not null others <an identifier>
<a double-quoted delimited-identifier> <a bind variable>
table avg count current exists max min prior sql stddev sum
variance execute multiset the both leading trailing forall
year month DAY_ HOUR_ MINUTE_ second TIMEZONE_HOUR_
TIMEZONE_MINUTE_ time timestamp interval date
<a string literal with character set specification>
<a number>
)
!!!!!!!!!!!Класс ошибки!!!!!!!!!!!!!!!
Exception
))
Ругань на параметры процедуры, хотя при повторном запуске все будет нормально!!!
Подобное явление происходит случайно, при повторном запуске приложения, при одинаковых исходных данных, обработка вполне может нормально завершиться. Некорректая работа при выделении и удаление памяти маловероятна, т.к. сам я это тщательно проверил и ниразу не фиксировалось исключение класса EAccessViolation.
Благодарю за внимание!!!!
Gromoff
Цитата:
Originally posted by A_L_E_X_ZED
ORA-06550: line 1, column 28:
PLS-00103: Encountered the symbol "«" when expecting one of the following:
( ) - + mod not null others <an identifier>
<a double-quoted delimited-identifier> <a bind variable>
table avg count current exists max min prior sql stddev sum
variance execute multiset the both leading trailing forall
year month DAY_ HOUR_ MINUTE_ second TIMEZONE_HOUR_
TIMEZONE_MINUTE_ time timestamp interval date
<a string literal with character set specification>
<a number>
)
ORA-06550: line 1, column 28:
PLS-00103: Encountered the symbol "«" when expecting one of the following:
( ) - + mod not null others <an identifier>
<a double-quoted delimited-identifier> <a bind variable>
table avg count current exists max min prior sql stddev sum
variance execute multiset the both leading trailing forall
year month DAY_ HOUR_ MINUTE_ second TIMEZONE_HOUR_
TIMEZONE_MINUTE_ time timestamp interval date
<a string literal with character set specification>
<a number>
)
А Oracle какой версии? В какой кодовой странце создана база и какую использует клиент?
Вообще, похоже на глюки Oracle или ADO при работе с кодовой страницей или полями типа дата/время.
Ошибка возникает случайно. Очень похоже на ошибки работы с памятью. Хотя это не ошибка памяти так как стоит try блок который ловит EAccessViolation
Исключение такого класса не появлялось.
Скорее всего что некорректно работает компонент TADOStoredProcedure. Ошибка возникает при вызове метода StoredProcedure ExecProc();
Подскажите как грамотно организовывывать интерфейс при работе с БД исходя из вашего опыта.
Цитата:
Originally posted by A_L_E_X_ZED
Подскажите как грамотно организовывывать интерфейс при работе с БД исходя из вашего опыта.
Подскажите как грамотно организовывывать интерфейс при работе с БД исходя из вашего опыта.
Лично я не люблю ADO. Вечно с ним "глюки". Мне понравился DOA. И проблем с ним за два года еще не было.
При исползовании компонента TADOStoredProcedure в C++Builder 5.0 , при определении строки подключения к любой БД ORA 8xx желательно в окне выбора драйвера выбрать (MicroSoft OLEDB for ORA...), при выборе драйвера (ORACLE) подключение будет реализовано, но определение параметров хранимых процеур будет производится некорректно, что повлечет при выполнении процедуры исключения.
Цитата:
Originally posted by A_L_E_X_ZED
Подскажите как грамотно организовывывать интерфейс при работе с БД исходя из вашего опыта.
Подскажите как грамотно организовывывать интерфейс при работе с БД исходя из вашего опыта.
Я скажу, но тебе не понравится. 8)
Мы используем компоненты ODAC для прямого доступа к БД Oracle, посредством установленного Oracle Client.
Всем большое спасибо за ответы!!!
Сравнительная характеристика компонент DOA и ODAC.