![]() |
|
|
![]()
|
|
| Monarch |
|
|||
|
Unregistered |
Синтаксис...
ReportForm.QuickRep1.DataSet := ADOQuery1; With ADOQuery1 do begin Close; SQL.Add('SELECT MAX(Code) FROM Main'); Open; end; ReportForm.QuickRep1.Preview; В генерируемый отчет всегда попадает первая запись, хотя должна попадать последняя, поскольку с помощью агрегатной функции MAX выбирается максимальное значение ключевого поля Code. База данных Access, способ досута ADO В чем проблема? И ещё одна проблема, в гриде пользователь выделяет несколько записей (свойство Multiselect = true), затем только по этим записям должен сформироваться отчет, для формирования отчета использую QuickReport, QuickRep1.DataSet = ADODataSet1. Каким образом в этот ADODataSet1 можно передать выделенные в гриде записи для формирования отчета? Заранее спасибо. Это сообщение отредактировал(а) Monarch - 16.6.2005, 09:56 |
|||
|
||||
| Kesh |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Эксперт Сообщений: 2488 Регистрация: 31.7.2002 Где: Германия, Saarbrü cken Репутация: 3 Всего: 54 |
Monarch Забыл Group by без него MAX не работает...
-------------------- ![]() |
|||
|
||||
| SPrograMMer |
|
||||||||
![]() Спамер :) ![]() ![]() Профиль Группа: Участник Сообщений: 442 Регистрация: 5.11.2004 Где: Краснодар Репутация: 1 Всего: 6 |
Что означает "Первая"?? В реляционных СУБД, нет понятия "номер записи". При вставке новой записи, она (запись) по идее может вставиться в ЛЮБОЕ место существующий таблицы. Твой запрос должен выбирать запись с максимальным значением поля Code. Если оно ключевое, то должно все правильно работать, и то что в таблице она "первой" отображается, так эт тока потому, что у тебя сортировка настроена по ключевому полю - в обратном порядке. так что усе нормально....наверное....
Сделать запрос по ним, сформулировав общее условие. Но так как юзер может выбрать ЛЮБЫЕ данные, то лучше делать запрос следующего вида:
Т. е создать временную табличку (TempTable), с одним полем Code, в которую прежде чем выполнять запрос занести список выделенных строчек. Выделенные строчки просматриваются, с использованием цикла, и свойства SelectedRows, если мне не изменяет память, найденные таким образом Code заносятся в TempTable вручную, а затем выполняется запрос. Естно, перед формированием нового запроса, предыдущие значения в TempTable нужно удалить, например запросом:
-------------------- животное = зверь законченный гентушник |
||||||||
|
|||||||||
![]()
|
| Правила форума "Delphi: Базы данных и репортинг" | |
|
|
Запрещено: 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами Обязательно указание: 1. Базы данных (Paradox, Oracle и т.п.) 2. Способа доступа (ADO, BDE и т.д.)
FAQ раздела лежит здесь! Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Vit, Петрович. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Delphi: Базы данных и репортинг | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |