Дата публикации: 11.06.2010

Произошли ошибки во время выполнения многошаговой операции OLE DB. По возможности, проверьте значения всех состояний OLE DB. Работа не выполнена.

Случалось ли вам видеть такую ошибку в своих программах на ADO.Net или ADODB?

А сколько времени вы бы потратили на поиск и устранения проблемы? ЦЕЛЫЙ ДЕНЬ или может быть НЕДЕЛЮ? Видя этот текст, совершенно не понятно, что искать!

Ситуация будет еще хуже если эта ошибка появляется случайным образом, а заказчик, у которого установлена программа находится далеко от вас.

По нашей статистике большинство ошибок подобного рода связаны с чтением и преобразованием значений колонок.

Чтобы не отнимать ваше время, в новой версии IBProvider Professional мы учли этот факт и разработали специальный механизм для повышения информативности сообщений об ошибках.

Теперь, вместо старых неинформативных ошибок, вы будете получать конкретные сообщения с номером колонки и статусом, которые позволят БЫСТРЕЕ решить проблему:


Ошибка получения данных колонки [номер: 1][COLUMN_NAME]. Статус: DBSTATUS_E_CANTCONVERTVALUE.

Посмотрите пример моделирования такой ситуации:

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

Дата публикации: 11.06.2010. Права на материал принадлежат: IBProvider. При перепечатке ссылка на сайт https://www.ibprovider.com/rus обязательна.