Произошли ошибки во время выполнения многошаговой операции 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)
- Исправлено несколько ошибок. Рекомендуем клиентам обновиться до последней версии
