Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Разный результат одинакого запроса, TADOStoredProc и TADODataSet 
V
    Опции темы
ALeXandrK
  Дата 13.9.2007, 23:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 342
Регистрация: 31.1.2007
Где: Санкт-Петербург

Репутация: 2
Всего: 6



Выполняю одниковый запрос, но разными компонентами.
И что удивительно, они возвращают разный результат.

I вариант, который работает верно (кол-во записей результата равно одной):
Код

function TTimeTable.GetEmptyAuditory(IdSubj, IdTime: Integer): Integer;
var
  Q:TADODataSet;
begin
  Q := TADODataSet.Create(nil);

  with Q do 
  begin
    Connection := mBases.ADOConnection;
    CommandType := cmdText;
    CommandText := SQLQuery;
    Parameters.ParseSQL(CommandText, true);  
    Parameters.ParamValues['IdSubj'] := IdSubj;
    Parameters.ParamValues['IdTime'] := IdTime;
    Open;

    if IsEmpty then
      raise Exception.Create(eNoEmptyAuditories) at @TTimeTable.GetEmptyAuditory
    else
      Result := FieldByName(fnIdAud).AsInteger;

    Free;
  end;
end;


II вариант, который работает неверно (кол-во записей результата равно нулю):
Код

function TTimeTable.GetEmptyAuditory(IdSubj, IdTime: Integer): Integer;
var
  Aud: TADOStoredProc;
begin
  Aud :=  TADOStoredProc.Create(nil);

  with Aud do
  begin
    Connection := mBases.ADOConnection;
    ProcedureName := ProcName;  // соответствующий запрос в Access
    Parameters.ParseSQL(':IdSubj :IdTime', true);
    Parameters.ParamValues['IdSubj;IdTime'] := VarArrayOf([IdSubj,IdTime]);
    Open;

    if IsEmpty then
      raise Exception.Create(eNoEmptyAuditories) at @TTimeTable.GetEmptyAuditory
    else
      Result := FieldByName(fnIdAud).AsInteger;

    Free;
  end;
end;


SQLQuery:
Код

SELECT АудиторииПредмета.инАудитории 
FROM АудиторииПредмета 
WHERE (АудиторииПредмета.инАудитории NOT IN (SELECT Расписание.инАудитории FROM Расписание WHERE Расписание.ИнВремени = :IdTime)) 
AND (АудиторииПредмета.ИнПредмета =:IdSubj) 
GROUP BY АудиторииПредмета.инАудитории;


Запрос в Access проверял - работает правильно.

Это сообщение отредактировал(а) ALeXandrK - 14.9.2007, 12:24


--------------------
Богат не/ни тот, у кого много, а тот, кому хватает
PM WWW   Вверх
SergeBS
Дата 14.9.2007, 07:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1111
Регистрация: 10.6.2005
Где: Владимир

Репутация: 11
Всего: 22



ALeXandrK, 
Во 2 запросе - ошибка описания параметров.
PM MAIL   Вверх
ALeXandrK
Дата 14.9.2007, 11:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 342
Регистрация: 31.1.2007
Где: Санкт-Петербург

Репутация: 2
Всего: 6



Вообщем попробовал я одну штуку на обум и она оказалась верной:
Код

Parameters.ParamValues['IdSubj;IdTime'] := VarArrayOf([IdTime, IdSubj]);


Т.е. оказалось, что параметры не правильно присваиваются...
будем разбираться.

Это сообщение отредактировал(а) ALeXandrK - 14.9.2007, 12:28


--------------------
Богат не/ни тот, у кого много, а тот, кому хватает
PM WWW   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Базы данных и репортинг"
Vit
Петрович

Запрещено:

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами


Обязательно указание:

1. Базы данных (Paradox, Oracle и т.п.)

2. Способа доступа (ADO, BDE и т.д.)


  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи
  • Вопросы по SQL и вопросы по базам данных не связанные с Дельфи задавать здесь

FAQ раздела лежит здесь!


Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Vit, Петрович.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Базы данных и репортинг | Следующая тема »


 




[ Время генерации скрипта: 0.0928 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.