Произошли ошибки во время выполнения многошаговой операции OLE DB. По возможности, проверьте значения всех состояний OLE DB. Работа не выполнена.
Случалось ли вам видеть такую ошибку в своих программах на ADO.Net или ADODB?
А сколько времени вы бы потратили на поиск и устранения проблемы? ЦЕЛЫЙ ДЕНЬ или может быть НЕДЕЛЮ? Видя этот текст, совершенно не понятно, что искать!
Ситуация будет еще хуже если эта ошибка появляется случайным образом, а заказчик, у которого установлена программа находится далеко от вас.
По нашей статистике большинство ошибок подобного рода связаны с чтением и преобразованием значений колонок.
Чтобы не отнимать ваше время, в новой версии IBProvider Professional мы учли этот факт и разработали специальный механизм для повышения информативности сообщений об ошибках.
Теперь, вместо старых неинформативных ошибок, вы будете получать конкретные сообщения с номером колонки и статусом, которые позволят БЫСТРЕЕ решить проблему:
Посмотрите пример моделирования такой ситуации:
option explicit dim cn dim rs set cn=createobject("ADODB.Connection") cn.Provider="LCPI.IBProvider.3" cn.Properties("location") ="localhost:d:\database\ibp_test_fb25_d3.gdb" cn.Properties("user id") ="SYSDBA" cn.Properties("password") ="masterkey" cn.Properties("ctype") ="win1251" cn.Properties("ctype_none") ="win1251" cn.Properties("auto_commit") =true wscript.echo "point #001 (insert win2151 into NONE-column)" wscript.echo "" call cn.Open() call cn.Execute("RECREATE TABLE TEST_NONE (COL_NAME_WITH_NONE_ENC VARCHAR(128) CHARACTER SET NONE)") call cn.Execute("INSERT INTO TEST_NONE (COL_NAME_WITH_NONE_ENC) VALUES (_none 'русский текст (russian text)')") set rs=cn.Execute("select * from TEST_NONE") wscript.echo "str:"&rs(0).value set rs=nothing call cn.Close() wscript.echo "" wscript.echo "point #002 (select NONE-column with win1251 text as unicode_fss text)" wscript.echo "" cn.Properties("ctype") ="unicode_fss" cn.Properties("ctype_none") ="unicode_fss" call cn.Open() set rs=cn.Execute("select * from TEST_NONE") dim v on error resume next v=rs(0).Value wscript.echo "GENERAL ERROR SOURCE:"&err.Source wscript.echo "GENERAL ERROR DESCR:"&err.Description wscript.echo "GENERAL ERROR CODE:"&err.Number on error goto 0 wscript.echo dim i for i=0 to cn.Errors.Count-1 wscript.echo "--- PROVIDER ERROR: "&cstr(i+1) wscript.echo "Source : "&cn.Errors.Item(i).Source wscript.echo "Description : "&cn.Errors.Item(i).Description wscript.echo "Code : "&cn.Errors.Item(i).Number wscript.echo "SQLState : "&cn.Errors.Item(i).SQLSTATE wscript.echo "NativeError : "&cn.Errors.Item(i).NativeError next set rs=nothing call cn.Close()
Вывод (output):
point #001 (insert win2151 into NONE-column) str:русский текст (russian text) point #002 (select NONE-column with win1251 text as unicode_fss text) GENERAL ERROR SOURCE:LCPI.IBProvider.3 GENERAL ERROR DESCR:Ошибка получения данных колонки [номер: 1][COL_NAME_WITH_NONE_ENC]. Статус: DBSTATUS_E_CANTCONVERTVALUE. GENERAL ERROR CODE:-2147217913 --- PROVIDER ERROR: 1 Source : LCPI.IBProvider.3 Description : Ошибка получения данных колонки [номер: 1][COL_NAME_WITH_NONE_ENC]. Статус: DBSTATUS_E_CANTCONVERTVALUE. Code : -2147217913 SQLState : NativeError : 2253
В новой версии IBProvider Professional Edition помимо информативности сообщений:
- Улучшено кеширование метаданных при работе со значениями колонок
- Оптимизировано использование памяти под метаданные
- Улучшена работа с OCTETS-блобами (FB2.1, FB2.5)
- Исправлено несколько ошибок. Рекомендуем клиентам обновиться до последней версии