Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Delphi, Ado, DataTime...(  [new]
ЕвгенийОнегин
Member

Откуда: Донецк
Сообщений: 55
Проблема такого рода.. Имеется хранимая процедура :
CREATE PROCEDURE PacksTotalDay2
	@Drawing as int,
	@Date as datetime = NULL,
	@Category as int = 999
AS
IF @Date IS NULL
  IF @Category=999
    SELECT Agents.Code, Agents.ShortName, Agents.FullName, Packs.Drawing, Sum(2 - Packs.Pack/1000) AS TotalPacks1, Sum(Packs.Pack/1000 - 1)  AS TotalPacks2 
    FROM Packs RIGHT JOIN Agents ON Packs.Agent=Agents.Code
    WHERE Packs.Drawing=@Drawing
    GROUP BY Agents.Code, Agents.ShortName, Agents.FullName, Packs.Drawing
    ORDER BY Agents.FullName, Packs.Drawing
   
  ELSE
    SELECT Agents.Code, Agents.ShortName, Agents.FullName, Packs.Drawing, Sum(2 - Packs.Pack/1000) AS TotalPacks1, Sum(Packs.Pack/1000 - 1)  AS TotalPacks2
    FROM Packs RIGHT JOIN Agents ON Packs.Agent=Agents.Code
    WHERE Packs.Drawing=@Drawing AND Agents.Category=@Category
    GROUP BY Agents.Code, Agents.ShortName, Agents.FullName, Packs.Drawing
    ORDER BY Agents.FullName, Packs.Drawing
ELSE
  IF @Category=999
    SELECT Agents.Code, Agents.ShortName, Agents.FullName, Packs.Drawing, Sum(2 - Packs.Pack/1000) AS TotalPacks1, Sum(Packs.Pack/1000 - 1)  AS TotalPacks2
    FROM Packs RIGHT JOIN Agents ON Packs.Agent=Agents.Code
   WHERE Packs.Drawing=@Drawing AND  dbo.DateInt(Packs.DateTime)  = dbo.DateInt(@Date)
   GROUP BY Agents.Code, Agents.ShortName, Agents.FullName, Packs.Drawing
   ORDER BY Agents.FullName, Packs.Drawing
  ELSE
    SELECT Agents.Code, Agents.ShortName, Agents.FullName, Packs.Drawing,  Sum(2 - Packs.Pack/1000) AS TotalPacks1, Sum(Packs.Pack/1000 - 1)  AS TotalPacks2
    FROM Packs RIGHT JOIN Agents ON Packs.Agent=Agents.Code
    WHERE dbo.DateInt(Packs.DateTime)  = dbo.DateInt(@Date)
     AND Packs.Drawing=@Drawing AND Agents.Category=@Category
    GROUP BY Agents.Code, Agents.ShortName, Agents.FullName, Packs.Drawing
    ORDER BY Agents.FullName, Packs.Drawing
return @@rowcount
GO


где DateInt функция -

CREATE FUNCTION "DateInt" (@Date datetime )   
RETURNS smalldatetime AS  
BEGIN 
 RETURN cast(floor(convert(float,@Date)) as smalldatetime)
END

Из QA все работает прекрассно, вызываю например так...
PacksTotalDay2 259, '6.7.2005'
выдает то что нужно.

Из делфи передаю параметры так:

tq3.Parameters.ParamByName('@Date').value := NULL; в этом случае все ок..

или так:
//FiltrCombo: TDateTimePicker;
tq3.Parameters.ParamByName('@Date').value := FiltrCombo.Date;
tq3.ExecProc;

выдает записи по непонятно какой дате.. толи не несколько дней смещений какоето..
В чем может быть проблема...

Причем именно такое взаимодействие организовую не в первый раз.. Есть аналогичная хранимая процедура.. там все ок..

Может при создании хранимой процедуры нужны какието опции при работе с датами..

Жду помощи....
9 июн 05, 12:56    [1609297]     Ответить | Цитировать Сообщить модератору
 Re: Delphi, Ado, DataTime...(  [new]
Anatoly Podgoretsky
Member

Откуда:
Сообщений: 62912
В Дельфи дата (база) смещена на два дня, эту чепуху Борланд совершил в Д2, гордо бья себя в грудь утверждая про совместимость с OLE Dat=e/

Если параметр @Date явно указан как TDateTime, то будет работать нормально, иначе то что наблюдаешь.
9 июн 05, 13:05    [1609344]     Ответить | Цитировать Сообщить модератору
 Re: Delphi, Ado, DataTime...(  [new]
ЕвгенийОнегин
Member

Откуда: Донецк
Сообщений: 55
Anatoly Podgoretsky
В Дельфи дата (база) смещена на два дня, эту чепуху Борланд совершил в Д2, гордо бья себя в грудь утверждая про совместимость с OLE Dat=e/

Если параметр @Date явно указан как TDateTime, то будет работать нормально, иначе то что наблюдаешь.


Точно.. недоглядел.. заработало..:) Дольше проблему описывал..! За помощь спасибо! А борланд "молодец" мог бы и предупредить.. )
9 июн 05, 13:16    [1609417]     Ответить | Цитировать Сообщить модератору
 Re: Delphi, Ado, DataTime...(  [new]
JibSkeart
Member

Откуда: Из далекой галактики
Сообщений: 19870
Интерестно , не сталкивался с такой ситуацией ...
будем знать .


 ш
(';')
(V),(V),,
JS
9 июн 05, 13:16    [1609418]     Ответить | Цитировать Сообщить модератору
 Re: Delphi, Ado, DataTime...(  [new]
Anatoly Podgoretsky
Member

Откуда:
Сообщений: 62912
ЕвгенийОнегин
Anatoly Podgoretsky
В Дельфи дата (база) смещена на два дня, эту чепуху Борланд совершил в Д2, гордо бья себя в грудь утверждая про совместимость с OLE Date/


А борланд "молодец" мог бы и предупредить.. )

А он и предупредил совместимость с OLE - я не поленился проверить, подло обманули
9 июн 05, 13:21    [1609440]     Ответить | Цитировать Сообщить модератору
 Re: Delphi, Ado, DataTime...(  [new]
Anatoly Podgoretsky
Member

Откуда:
Сообщений: 62912
JibSkeart
Интерестно , не сталкивался с такой ситуацией ...
будем знать .

Ну обычно редко сталкиваются, в большинстве случаев смещение корректируется автоматически, когда известно где TDatetime и где OleDatetime
9 июн 05, 13:24    [1609453]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить