значение Null для параметра объекта ADODB.Command
Релиб
Форумы       Участники    Календарь    Кто он-лайн?
Добро пожаловать, гость ( Вход | Регистрация )
        



значение Null для параметра объекта... Expand / Collapse
Автор
Сообщение
29.06.2002 21:19
Junior Member

Junior MemberJunior MemberJunior MemberJunior MemberJunior MemberJunior MemberJunior MemberJunior Member

участник
Last Login: 19.03.2003 11:13
Сообщ.: 11, Visits: 122
Использую ActivePerl и через Win32::OLE, ADO объекты коннекчусь к MS SQL.
Не могу поставить значение Null в параметры вышеуказанному объекту Command.

Код:
$cmd->Parameters($i)->{Value} = "Null";

- ошибку:
Application uses a value of the wrong type for the current operation.


а код:
$cmd->Parameters($i)->{Value} = Variant(VT_DATE, "NULL");

Вызывает ошибку:
Item cannot be found in the collection corresponding to the requested name or ordinal.


Буду благодарен, если кто-нибудь поделиться, как передавал NULL-овые значения в Win32::OLE объекты.
Сообщ. #754046
30.06.2002 18:22
Supreme Being

Supreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme Being

участник
Last Login: 20.09.2003 13:10
Сообщ.: 121, Visits: 1 332
В таблице на mssql поле "allow nulls"?
Сообщ. #754065
01.07.2002 8:59
Junior Member

Junior MemberJunior MemberJunior MemberJunior MemberJunior MemberJunior MemberJunior MemberJunior Member

участник
Last Login: 19.03.2003 11:13
Сообщ.: 11, Visits: 122
да, конечно
и параметру я изменяю аттрибуты

$cmd->Parameters(1)->{Attributes} = adParamNullable | adParamLong;


Кроме того, вылез еще один глюк. Когда пытаюсь передать параметр adLongVarBinary - в поле типа image, то он (объект ADODB.Command или Win32::OLE - не уверен) преобразует данные каким-то странным образом, так, что их длина становится в 2 раза больше. Например

my $content;
open IN, $dir.$file_name;
binmode IN;
sysread IN, $content, -s IN;
close IN;

$cmd->Parameters(1)->{Attributes} = adParamNullable | adParamLong;
#$cmd->Parameters(1)->{Value} = Variant(VT_UI1|VT_ARRAY, $content);
$cmd->Parameters(1)->{Type} = adLongVarBinary;
$cmd->Parameters(1)->{Value} = scalar $content;

После этого оказывается, что
$cmd->Parameters(1)->{Size} == 2*length($content)
Что делать, непонятно... :((
Сообщ. #754078
02.07.2002 13:59
Junior Member

Junior MemberJunior MemberJunior MemberJunior MemberJunior MemberJunior MemberJunior MemberJunior Member

участник
Last Login: 19.03.2003 11:13
Сообщ.: 11, Visits: 122
Тема закрыта. Со всем разобрался. Обращайтесь - ответьте в этой теме.
Сообщ. #754188
« пред. тема | след. тема »


Эту тему читают Expand / Collapse
Посетители: 0 (0 гостей, 0 участников, 0 скрыт.участников)
Сейчас нет участников, просматривающих тему.
Модераторы: Alexey, boombastik, bazile, pl

Время GMT +3:00, Сейчас 11:40