• 0
walexw

два select'а в одной процедуре

Вопросы

Вопрос наполовину по SQL наполовину по Delphi:
Есть БД в ней процедура такого вида:
SELECT DISTINCT FAM FROM TURNIR WHERE FAM=@par;
SELECT DATE, PLAY, SCORE FROM TURNIR WHERE FAM=@par;
В отчете (FastReport) первый запрос используется как "шапка"
второй - это собственно сам набор данных, игры и счет выбранного человека.
Мне необходимо на форме (проект виндовый) увидеть в гриде второй SELECT
Если грид через DataSource подключаю к процедуре, то приходит первый.
Не могу понять как обратиться к второму. При входе в FastReport там предлагается
на выбор ADOQuery1 и соответственно ADOQuery2. И нет проблем.
Кто знает как это повторить на форме, подскажите plz.
(Да еще, БД не моя, править запрос, разбивать на два или писать новый у меня нет прав.)
Спасибо.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

7 ответов на этот вопрос

  • 0

я не понял, а что приходит из процедуры в программу?
как два разных датасета передаются в делфи?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
  • 0
47 минут назад, walexw сказал:

Не могу понять как обратиться к второму.

ADO?

Работаем с первым. Потом:

myADOStoredProc.Recordset := myADOStoredProc.NextRecordset(i); // здесь i - фейковая Integer переменная, она не понадобится далее

И продолжаем работать с первым, но теперь там уже сидит второй :)


Возможно, прокатит и такой финт ушами:
 

myADOStoredProc.open;

tmpQuery.Recordset:=myADOStoredProc.NextRecordset(i);

// и пробуем использовать StoredProc как первый набор данных, а tmpQuery - как второй. Но не факт, что такое получится,

// возможно - для правильного подтягивания рекордсета в сторонний квери потребуется сперва открыть его фейковым запросом, например

/// `Select 1`

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
  • 0
Только что, krapotkin сказал:

кошмар. в АДО несколько датасетов ? O_O

Да. И иногда очень удобно.

Сразу получаешь полный набор консистентных данных (главных и зависимых), выполнив всего один запрос к базе.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
  • 0

Всем большое спасибо за помощь!
Сам разобрался. Помогло применение двух ДатаСетов
Обратиться ко второму селекту смог через

ADODataSet2.Recordset := ADODataSet1.Recordset.NextRecordset(RecCount);

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Для публикации сообщений создайте учётную запись или авторизуйтесь

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

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти

  • Последние посетители   0 пользователей онлайн

    Ни одного зарегистрированного пользователя не просматривает данную страницу