powered by simpleCommunicator - 2.0.35     © 2025 Programmizd 02
Форумы / Delphi [игнор отключен] [закрыт для гостей] / D5.ADO.MSSQL7.TADOCommand Автоопределение типа параметров
1 сообщений из 1, страница 1 из 1
D5.ADO.MSSQL7.TADOCommand Автоопределение типа параметров
    #32006322
tfox
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Написал я такую функцию:

function cmd_exec(sqlcom: TADOCommand;params: array of string;
values: array of variant; cmd_type: TCommandType;
ssql: string): boolean;
var i: integer;
begin
result := false;
with sqlcom do try
CommandText := '';
CommandType := cmd_type;
CommandText := ssql;
if CommandType = cmdStoredProc then Parameters.Refresh;
for i := 0 to High(params) do begin
if params = '' then break;

// Parameters.ParamByName(params).DataType := ftString;

Parameters.ParamByName(params).Value := values;
end;
Execute;
result := True;
except on E:Exception do frmErrExec(E,'Ошибка при исполнении команды',ssql)
end;
end;

RESTRICT_USER1,2 - это обычные строковые константы вида:
const RESTRICT_USER1 = 'USER1'; RESTRICT_USER2 = 'USER2';

По замыслу при передаче ей скрипта команды, имен параметров и значений
параметров эта функция должна исполнять команду, предварительно назначив
параметрам их значения. Например, вызываю:

cmd_exec(dm.cmd1,['r_user1','r_user2'],[RESTRICT_USER1,RESTRICT_USER2],cmdText,
'delete from bm_reqs where (man = suser_id()'+
' or man = suser_id(:r_user1) or man = suser_id(:r_user2)'+
') and (sel = 1)')

Возвращает ошибку ADO: "Приложение использует для текущей операции значение
неверного типа". Смотрю - автоматически почему то свойствам параметров DataType
присваивается значение ftSmallInt. Но ведь аргументами функции suser_is из T-SQL
должны быть или nchar или varchar! Не могу понять, где затыка, может, кто
сталкивался?

Можно принудительно назначить тип параметра (в исходнике было
закомментарено):
Parameters.ParamByName(params).DataType := ftString;

Тогда всё проходит замечательно. Можно допустим написать функцию, которая
преобразует значение типа варианта
(значения вида varString, varDate, varInteger) в значение типа DataType
(вида ftString, ftDate, ftInteger).
Но у меня стойкое и непроходящее ощущение, что это все обход проблемы,
которую, на самом деле можно решить

зы SP1,ADOExpressUpdate1 и 2, а также мистический ado_patch.exe на D5 поставлены
...
Рейтинг: 0 / 0
1 сообщений из 1, страница 1 из 1
Форумы / Delphi [игнор отключен] [закрыт для гостей] / D5.ADO.MSSQL7.TADOCommand Автоопределение типа параметров
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]