Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.06.27;
Скачать: CL | DM;

Вниз

Параметры в 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;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.022 c
3-1085722526
Alert
2004-05-28 09:35
2004.06.27
MySQL + Delphi


1-1087291485
Moon
2004-06-15 13:24
2004.06.27
Перерасход памяти


14-1086296354
GanibalLector
2004-06-04 00:59
2004.06.27
Hook в книгах?


3-1086093248
t100
2004-06-01 16:34
2004.06.27
Абра-кадабра в qrdbmemo хотя в dbmemo все в порядке.


8-1081352734
Pa5ha
2004-04-07 19:45
2004.06.27
iD3DXFont