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

Delphi Sources



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

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 21.06.2009, 14:04
delphiman delphiman вне форума
Прохожий
 
Регистрация: 12.06.2009
Сообщения: 10
Репутация: 10
Восклицание Quick Report с несколькими запросами

Всем привет.

Стоит следующая задача: вывести два списка в QRDBText из результатов разных запросов.

Но в QuickReport.DataSet можно указать только один запрос, указываем на первый.
1 запрос типа 'SELECT name FROM names WHERE id_mb=1'
2 запрос типа 'SELECT name FROM names WHERE id_mb=0'
Указываем QRDBText1 на первый запрос, QRDBText2 на второй.

В итоге получаем в списке QRDBText1 весь резулт, а в QRDBText2 только первую строку из результата запроса.

Delphi 7, MS Access 2003.

Как можно решить проблему ?, Очень важно, время поджимает.
Заранее спасибо.
Ответить с цитированием
  #2  
Старый 21.06.2009, 15:49
Аватар для Страдалецъ
Страдалецъ Страдалецъ вне форума
Гуру
 
Регистрация: 09.03.2009
Адрес: На курорте, из окна вижу теплое Баренцево море. Бррр.
Сообщения: 4,721
Репутация: 52347
По умолчанию

Возьмите и объедините ваши два запроса в третий:
Код:
SELECT name FROM names WHERE id_mb=1 union
SELECT name FROM names WHERE id_mb=0
__________________
Жизнь такова какова она есть и больше никакова.
Помогаю за спасибо.
Ответить с цитированием
  #3  
Старый 21.06.2009, 15:58
delphiman delphiman вне форума
Прохожий
 
Регистрация: 12.06.2009
Сообщения: 10
Репутация: 10
По умолчанию

Цитата:
Сообщение от Страдалецъ
Возьмите и объедините ваши два запроса в третий:
Код:
SELECT name FROM names WHERE id_mb=1 union
SELECT name FROM names WHERE id_mb=0
На сколько я знаю Access не поддерживает UNION, да же если так, то как мне вывести соответствующий результат по разным QRDBText ?
Ответить с цитированием
  #4  
Старый 21.06.2009, 16:01
Аватар для Yurk@
Yurk@ Yurk@ вне форума
Специалист
 
Регистрация: 07.09.2007
Адрес: Украина, г. Днепропетровск
Сообщения: 892
Версия Delphi: 7 + ОгнеПтица
Репутация: выкл
По умолчанию

Страдалецъ, твой запрос даст одну колонку со всеми результатами запроса, а нужно 2 колонки
__________________
Поживу - увижу, Доживу - узнаю, Выживу - учту.
[P.S.]->Выражая благодарность за помощь - Вы получаете шанс на помощь в следующий раз
Ответить с цитированием
  #5  
Старый 21.06.2009, 16:17
delphiman delphiman вне форума
Прохожий
 
Регистрация: 12.06.2009
Сообщения: 10
Репутация: 10
По умолчанию

Цитата:
Сообщение от Yurk@
Страдалецъ, твой запрос даст одну колонку со всеми результатами запроса, а нужно 2 колонки
Да, в две колонки, у кого id_mb=1 в первую(QRDBText1), id_mb=0 во вторую (QRDBText2).
Ответить с цитированием
  #6  
Старый 21.06.2009, 16:23
Аватар для Страдалецъ
Страдалецъ Страдалецъ вне форума
Гуру
 
Регистрация: 09.03.2009
Адрес: На курорте, из окна вижу теплое Баренцево море. Бррр.
Сообщения: 4,721
Репутация: 52347
По умолчанию

Цитата:
...На сколько я знаю Access не поддерживает UNION...
Акцесс поддерживает Union
Цитата:
...как мне вывести соответствующий результат по разным QRDBText...
У вас отчет генериться в программе, или имеет четкую структуру? Если да, то так-же как и с одним запросом.
Допустим у меня есть запрос возвращающий информацию о лицах:
Код:
select Фамилия,Имя,Отчество from Лицо 
и есть запрос возвращающий информацию по адресам:
Код:
select НасПункт,Улица,Дом,Квартира from Адрес 
Обычно такие запросы необъединить, т.к. количество полей разное, но достаточно сделать так:
Код:
select Фамилия & " " & Имя & " " & Отчество as Info from Лицо 
union
select НасПункт & " " & Улица & " " & Дом & " " & Квартира as Info from Адрес
и нет проблемы.

Цитата:
Страдалецъ, твой запрос даст одну колонку со всеми результатами запроса, а нужно 2 колонки
Какой пример - такой ответ.
__________________
Жизнь такова какова она есть и больше никакова.
Помогаю за спасибо.
Ответить с цитированием
  #7  
Старый 21.06.2009, 16:26
Аватар для Страдалецъ
Страдалецъ Страдалецъ вне форума
Гуру
 
Регистрация: 09.03.2009
Адрес: На курорте, из окна вижу теплое Баренцево море. Бррр.
Сообщения: 4,721
Репутация: 52347
По умолчанию

Цитата:
Да, в две колонки, у кого id_mb=1 в первую(QRDBText1), id_mb=0 во вторую (QRDBText2).
и это тоже элементарно обходится:
Код:
SELECT name as Name1,'' as Name2 FROM names WHERE id_mb=1 union
SELECT '',name FROM names WHERE id_mb=0
__________________
Жизнь такова какова она есть и больше никакова.
Помогаю за спасибо.
Ответить с цитированием
  #8  
Старый 21.06.2009, 16:43
Аватар для Yurk@
Yurk@ Yurk@ вне форума
Специалист
 
Регистрация: 07.09.2007
Адрес: Украина, г. Днепропетровск
Сообщения: 892
Версия Delphi: 7 + ОгнеПтица
Репутация: выкл
По умолчанию

Цитата:
Сообщение от Страдалецъ
и это тоже элементарно обходится:
Код:
SELECT name as Name1,'' as Name2 FROM names WHERE id_mb=1 union
SELECT '',name FROM names WHERE id_mb=0
а ты хоть проверял этот запрос?
для объединения такого рода нужно, чтобы поля совпадали по длине ... иначе не пройдет
__________________
Поживу - увижу, Доживу - узнаю, Выживу - учту.
[P.S.]->Выражая благодарность за помощь - Вы получаете шанс на помощь в следующий раз
Ответить с цитированием
  #9  
Старый 21.06.2009, 16:49
delphiman delphiman вне форума
Прохожий
 
Регистрация: 12.06.2009
Сообщения: 10
Репутация: 10
По умолчанию

Создал запрос, подобный этому, во вторую колонку ничего не вернулось. Честно не понял, как вообще должен работать такой запрос, и что он должен возвратить .
Ответить с цитированием
  #10  
Старый 21.06.2009, 16:51
Аватар для Yurk@
Yurk@ Yurk@ вне форума
Специалист
 
Регистрация: 07.09.2007
Адрес: Украина, г. Днепропетровск
Сообщения: 892
Версия Delphi: 7 + ОгнеПтица
Репутация: выкл
По умолчанию

delphiman, если я правильно помню QR. то там можно привязать каждому отдельному QRDBText-у свой DataSet.
Поставь на каждый QRDBText отдельную Query с разными запросами и будет тебе счастье
__________________
Поживу - увижу, Доживу - узнаю, Выживу - учту.
[P.S.]->Выражая благодарность за помощь - Вы получаете шанс на помощь в следующий раз
Ответить с цитированием
  #11  
Старый 21.06.2009, 16:58
delphiman delphiman вне форума
Прохожий
 
Регистрация: 12.06.2009
Сообщения: 10
Репутация: 10
Печаль

Цитата:
Сообщение от Yurk@
delphiman, если я правильно помню QR. то там можно привязать каждому отдельному QRDBText-у свой DataSet.
Поставь на каждый QRDBText отдельную Query с разными запросами и будет тебе счастье

К сожалению нет, Как я писал в начале, во втором QRDBtexte получаем только одну строку из результата запроса!
Какой в QuickReport.DataSet стоит, тот запрос нормально и обрабатывается.
Ответить с цитированием
  #12  
Старый 21.06.2009, 17:36
Аватар для Yurk@
Yurk@ Yurk@ вне форума
Специалист
 
Регистрация: 07.09.2007
Адрес: Украина, г. Днепропетровск
Сообщения: 892
Версия Delphi: 7 + ОгнеПтица
Репутация: выкл
Подмигивание

ну у меня вроде как проходит:
__________________
Поживу - увижу, Доживу - узнаю, Выживу - учту.
[P.S.]->Выражая благодарность за помощь - Вы получаете шанс на помощь в следующий раз

Последний раз редактировалось Yurk@, 16.08.2009 в 16:39.
Ответить с цитированием
  #13  
Старый 21.06.2009, 17:38
delphiman delphiman вне форума
Прохожий
 
Регистрация: 12.06.2009
Сообщения: 10
Репутация: 10
Восклицание

Наверное нужно создать такой запрос, который в первой резулт строке вывел name с условвием id_mb=1 а в следующей с условием id_mb=0 , и так по очереди. Как такое можно сделать ?
Ответить с цитированием
  #14  
Старый 21.06.2009, 17:40
Аватар для Yurk@
Yurk@ Yurk@ вне форума
Специалист
 
Регистрация: 07.09.2007
Адрес: Украина, г. Днепропетровск
Сообщения: 892
Версия Delphi: 7 + ОгнеПтица
Репутация: выкл
По умолчанию

такой запрос ты никак не сделаешь ибо у тебя будет постоянная разница в получаемых результатах, что недопустимо.
__________________
Поживу - увижу, Доживу - узнаю, Выживу - учту.
[P.S.]->Выражая благодарность за помощь - Вы получаете шанс на помощь в следующий раз
Ответить с цитированием
  #15  
Старый 21.06.2009, 18:05
Аватар для Страдалецъ
Страдалецъ Страдалецъ вне форума
Гуру
 
Регистрация: 09.03.2009
Адрес: На курорте, из окна вижу теплое Баренцево море. Бррр.
Сообщения: 4,721
Репутация: 52347
По умолчанию

Цитата:
Сообщение от Yurk@
а ты хоть проверял этот запрос?
для объединения такого рода нужно, чтобы поля совпадали по длине ... иначе не пройдет
Конечно пробовал, длина полей здесь совершенно неимеет значения, как и тип, можно даже с разными типами полей выводить, например текст с датой смешать, да еще и с числом, и нормально результат получим, т.к. результат будет приведен к тексту.
__________________
Жизнь такова какова она есть и больше никакова.
Помогаю за спасибо.
Ответить с цитированием
Ответ


Delphi Sources

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

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

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

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


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


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

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

ВКонтакте   Facebook   Twitter