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

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

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

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

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

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

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

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


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

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

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

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