Произошли ошибки во время выполнения многошаговой операции OLE DB. По возможности, проверьте значения всех состояний OLE DB. Работа не выполнена.
Случалось ли вам видеть такую ошибку в своих программах на ADO.Net или ADODB?
А сколько времени вы бы потратили на поиск и устранения проблемы? ЦЕЛЫЙ ДЕНЬ или может быть НЕДЕЛЮ? Видя этот текст, совершенно не понятно, что искать!
Ситуация будет еще хуже если эта ошибка появляется случайным образом, а заказчик, у которого установлена программа находится далеко от вас.
По нашей статистике большинство ошибок подобного рода связаны с чтением и преобразованием значений колонок.
Чтобы не отнимать ваше время, в новой версии IBProvider Professional мы учли этот факт и разработали специальный механизм для повышения информативности сообщений об ошибках.
Теперь, вместо старых неинформативных ошибок, вы будете получать конкретные сообщения с номером колонки и статусом, которые позволят БЫСТРЕЕ решить проблему:
Посмотрите пример моделирования такой ситуации:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 | 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):
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | 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)
- Исправлено несколько ошибок. Рекомендуем клиентам обновиться до последней версии