Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > Базы данных
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 24.08.2013, 20:28
Pykhov Pykhov вне форума
Прохожий
 
Регистрация: 22.08.2013
Сообщения: 7
Версия Delphi: Delphi 7
Репутация: 10
По умолчанию Вывод нескольких результатов запроса

Код:
var
  type_spiska_int:integer;
begin

type_spisok:=ADODataSet2.FieldValues['number'];
ADODataSet3.Active:=False;
ADODataSet3.Parameters.ParamByName('kod_pribor').Value:=kod_prib;
ADODataSet3.Active:=true;
ADODataSet3.First;
ADOQuery1.SQL.Clear;
ADOQuery1.SQL.Add('select * from Параметры where kod_type_pribor=:kod_pribor_DS3 and text=:text_DS3  and index=:index_DS3 and type_spiska =:type_spiska_DS3');

while not ADODataSet3.Eof do
  begin
    type_spiska_int:=ADODataSet3.FieldByName('type_spiska').AsInteger;
    if (type_spiska_int and type_spisok)<>0 then
      Begin
        ADOQuery1.Parameters.ParamByName('kod_pribor_DS3').Value:=ADODataSet3.FieldValues['kod_type_pribor'];
        ADOQuery1.Parameters.ParamByName('text_DS3').Value:=ADODataSet3.FieldValues['text'];
        ADOQuery1.Parameters.ParamByName('index_DS3').Value:=ADODataSet3.FieldValues['index'];
        ADOQuery1.Parameters.ParamByName('type_spiska_DS3').Value:=ADODataSet3.FieldValues['type_spiska'];
      End;
    ADODataSet3.Next;
  end;
 ADOQuery1.Active:=True;
end;
в результате этого фрагмента выводится результат последнего запроса выводится на Grid

Последний раз редактировалось lmikle, 25.08.2013 в 07:16.
Ответить с цитированием
  #2  
Старый 25.08.2013, 07:20
lmikle lmikle сейчас на форуме
Модератор
 
Регистрация: 17.04.2008
Сообщения: 8,036
Версия Delphi: 7, XE3, 10.2
Репутация: 49089
По умолчанию

Ну все правильно выводится. По другому и не будет, т.к. каждая следующая итерация цикла сбрасывает результат предыдущей.
Тебе надо так построить запрос, что бы он вернул все записи за один вызов. Можно просто сделать JOIN с главной таблицей, а показать только поля присоединенной.

А вообще, есть такой тип отображения - Msdter-Detail называется. Там 2 грида, при выборе записи в Master-гриде, а Detail-гриде автоматически выводятся соответвующие записи из вротой таблицы... может этого ты хотел на самом деле?
Ответить с цитированием
  #3  
Старый 25.08.2013, 12:10
Pykhov Pykhov вне форума
Прохожий
 
Регистрация: 22.08.2013
Сообщения: 7
Версия Delphi: Delphi 7
Репутация: 10
По умолчанию

решил пойти другим путем

select type_spiska, kod_type_pribor from Параметры
where kod_type_pribor=kp and
IF type_spiska & ts=ts then
type_spiska=type_spiska
else type_spiska=-1
end

проблема в конструкции if then else помогите разобраться
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

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

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 23:48.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter