C++ Builder
| Главная | Уроки | Статьи | FAQ | Форум | Downloads | Литература | Ссылки | RXLib | Диски |

 
QueryReport, Вопрос
Kuks
Отправлено: 12.09.2005, 14:47


Не зарегистрирован







Каким образом в QR при генерации отчета выводить только одну выбранную (например в гриде) запись?
Заранее спасибо
olegenty
Отправлено: 12.09.2005, 15:45


Ветеран

Группа: Модератор
Сообщений: 2412



таким же, как выводятся несколько записей.
AVC
Отправлено: 12.09.2005, 15:54


Ветеран

Группа: Модератор
Сообщений: 1583



Имелся ввиду QuickReport ?

Поставить фильтр
или
использовать запрос, выбрающий только нужную запись
или
пробежаться по Report'у и, например, поменять caption у label'ов, одноименных с полями записи
Kuks
Отправлено: 13.09.2005, 07:37


Не зарегистрирован







Немного тупо задал вопрос. Имеется рекордсет, полученный с сиквелсервера, состоящий из нескольких записей. В QuickReporte генерируется отчет в полосах (Bands). А как заставить печетаться только одну, активную (в гриде) запись? Заранее благодарю.
AVC
Отправлено: 13.09.2005, 08:13


Ветеран

Группа: Модератор
Сообщений: 1583



QUOTE

Поставить фильтр на эту запись
или
пробежаться по Report'у и, например, поменять caption у label'ов, одноименных с полями записи

Kuks
Отправлено: 13.09.2005, 10:43


Станционный диспетчер

Группа: Участник
Сообщений: 108



Я наверное тупой насмерть, но я не понял какой фильтр и куда ставить
если я фильтрацию вообще не использую?
avc*
Отправлено: 13.09.2005, 10:59


Не зарегистрирован







QUOTE

но я не понял какой фильтр и куда ставить

Допустим у вас в выборке есть поле, удовлетворяющее характеристикам первичного ключа.
Тогда перед печатью
TDataSet *ds= DataSet...
ds->DisableControls()
if (ds->Filtered) ds->Filtered = false;
ds->Filter = "Название_поля_PK = " + ds->FieldByName("Название_поля_PK")->AsString;
// для текстового поля могут потребоваться '
ds->Filtered = true;

try { Печатаем }
__finally { ds->Filtered = false; ds->EnableControls(); }

Идея состоит в том, что бы в ds была ровно одна запись.

PS. Но лично я использовал (когда работал QRep) второй вариант (обход отчета и замена Caption у одноименных Label'ов)  — попутно решается проблема парамтров, заголовков, подписей и т.д.
avc*
Отправлено: 13.09.2005, 11:05


Не зарегистрирован







Еще один вариант -
QuickReport->DataSet = NULL;
Band, например, Title
QRDBText показывает поля текущей записи.
Kuks
Отправлено: 13.09.2005, 11:13


Станционный диспетчер

Группа: Участник
Сообщений: 108



сенькю вери,вери мач!!!!!!!!!!!!!!!!!
Kuks
Отправлено: 13.09.2005, 13:56


Станционный диспетчер

Группа: Участник
Сообщений: 108



avc*!!!!
Огромное спасибо за код!!!!
Проверил, все работает.
Guest
Отправлено: 13.09.2005, 15:22


Не зарегистрирован







QUOTE
Огромное спасибо

На здоровье. Заходите еще. smile.gif

Вернуться в Работа с базами данных в C++Builder