Форум: "Базы";
Текущий архив: 2004.06.27;
Скачать: [xml.tar.bz2];
ВнизПараметры в ADOQuery Найти похожие ветки
← →
Style © (2004-06-01 16:42) [0]Пытаюсь использовать Delphi+ADO+MSSQL.
У меня проблемма с конвертации типов данных ADO и MSSQL
На сервере есть хранимая процедура DepCheck_ins
В теле SQL.Text у объекта ADOQuery описываю параметрыdeclare
@intResult int,
@strMessage varchar(255)
exec @intResult = DepCheck_ins
@AuditID = :AuditID, //Float
@DepartmentID = :DepartmentID, //Float
@FlagAll = :FlagAll, //SmallInt
@Flag = :Flag, //SmallInt
@FlagBrief = :FlagBrief, //OleString
@FlagName = :FlagName, //OleString
@strMessage = @strMessage out
select
intResult = @intResult,
strMessage = @strMessage
Комментариями пометил типы данных которые указываю
в редакторе TParameters.
Так вот параметры Flag и FlagAll в процедуре объявлены как TinyInt, а в ADO у TParameter я такого типа не нашел :(
Подставил SmallInt и при попытке выполнения процедуры ругается что не может сконвертировать SmallInt в TinyInt.. Тоже самое и с Integer.procedure TFrm_Main.SetFlag(Name : string; Dep,Flag: Integer);
begin
qry_flagins.close;
qry_flagins.Parameters.ParamByName("DepartmentID").Value := Dep;
qry_flagins.Parameters.ParamByName("Flag").Value := Flag;
qry_flagins.Parameters.ParamByName("FlagBrief").Value := Name;
qry_flagins.Parameters.ParamByName("AuditID").Value := AuditID;
qry_flagins.Open; {ошибка, не могу с конвертировать SmallInt в TinyInt}
if(qry_flagins.FieldByName("IntResult").Value > 0) then
begin
frm_Main.ShowError(qry_flagins.FieldByName("StrMessage").Value);
end;
end;
В общем не знаю что и делать :(
← →
bushmen © (2004-06-01 16:47) [1]>не могу с конвертировать SmallInt в TinyInt
А у тебя все параметры по типам совпадают? И почему бы тебе не мспользовать ADOStoredProc вместо ADOQuery ? Проще бы было.
← →
ZrenBy © (2004-06-01 16:52) [2]Они у тебя случаем не отрицательные ?
← →
stone © (2004-06-01 17:34) [3]TADOQuery.ParamCheck + F1
← →
Style © (2004-06-02 09:22) [4]
> А у тебя все параметры по типам совпадают? И почему бы тебе
> не мспользовать ADOStoredProc вместо ADOQuery ? Проще бы
> было.
Эта процедура возвращает записи. и StoredProc выдает ошибку о том, что ADOCommand не может принимать Query Result.
> Они у тебя случаем не отрицательные ?
Нет, флаги посылаю положительные
Flag = 1
а параметр FlagAll = NULL это поле paNullable
> TADOQuery.ParamCheck + F1
Ну и что, если я отключу проверку параметров, то как без них буду работать?
---
В общем я так и не разобрался как передавать в параметр TinyInt хранимой процедуры нужное значение. Да и сам ADOStoredProc определяет этот параметр как ftWord, хотя на самом деле TinyInt это просто byte 0..255.
Не стал я мучиться и изменил параметры в коде самой хранимой процедуры, из TinyInt на Integer.
← →
KSergey © (2004-06-03 08:22) [5]Ну почему-то у борланда нет типа поля 8-битового целого. Может и в ADO нет? Я как-то не проверял, признаюсь.
А вообще, раз уж все равно такой запрос - я бы его просто динамически формировал в виде текста, безо всяких глупых параметров
Чес. слово - головняков меньше. Я всегда так делаю. Надоели мне параметры страшно.
Только я не понял по поводу ХП возвращает набор записей. Вы же и из запроса запись возвращаете?? Или из ХП не нужен? Или просто все recordset"ы ловим на клиенте?
← →
Nikolay M. © (2004-06-03 09:01) [6]
> > А у тебя все параметры по типам совпадают? И почему бы
> тебе
> > не мспользовать ADOStoredProc вместо ADOQuery ? Проще
> бы
> > было.
>
> Эта процедура возвращает записи. и StoredProc выдает ошибку
> о том, что ADOCommand не может принимать Query Result.
На здоровье. В чем проблема возвращать набор данных и out-параметры? Имхо, TADOStoredProc - как раз твой случай.
Страницы: 1 вся ветка
Форум: "Базы";
Текущий архив: 2004.06.27;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.033 c