Ошибка группировки в отчете.

Автор Nat_V, 9 июня 2016, 12:02

0 Пользователи и 1 гость просматривают эту тему.

Nat_V

В таблице две колонки - ФИО жителя и номер квартиры (Адрес).
По таблице создан отчет. Строки сгруппированы по квартире (Адресу).
При этом записи. которые должны попадать в одну группу, разделяются на несколько групп с одинаковым названием.
Различного написания квартир быть не может - заполнение осуществлялось выбором значения из выпадающего списка.
Кто-нибудь сталкивался с такой фигней?

economist

Немного поумничаю :-)

1) Отчет, по ходу, не сгруппировал строки по квартирам так, как это было задумано пользователем. А именно 13-х квартир - несколько

2) Нельзя доверять верхней картинке - вид таблицы могли переупорядочить/отсортировать, создастся иллюзия упорядоченности.

3) Если таблица изначально неотсортирована - то "группировка" даст как раз вторую картинку

4) Имхо, правильнее делать Отчет по Запросу, а не по Таблице (особенно если из нее нужно не всё). Если в Таблицу добавят столбец - 99% шансов того, что Отчет невосстановимо умрет. Запрос писать несложно: SELECT Квартира, ФИО, ГодРождения 'Год рождения', Телефон FROM Жильцы ORDER BY Квартира

5) Просто получить красивый и простой, экологичный список за 5 секунд проще так:
Жмем в Calc Ctrl+Shift+F4 (в старых - F4), перетаскиваем мышью имя Таблицы/Запроса в Лист, ПКМ, Автоформат (или ручками добавляем рамки). Получаем тот же автообновляемый Отчет (свойства диапазона Импорт1 гибко настраиваются)

И еще - поимев много глюков я стараюсь не использовать "Мастеры" таблиц, запросов, отчетов - лучше создавать их альтернативными методами (жмем на "Угольник").
Руб. за сто, что Питоньяк
Любит водку и коньяк!
Потому что мне, без оных, -
Не понять его никак...

Nat_V

Cпасибо, не помогло.
Запрос по таблице формируется прекрасно.
Отчет, сформированный по запросу выдает такой же кривой результат.
Причем, если менять окончания фамилий, то строки начинают группироваться по-другому. Фигня какая-то.

Про то, что в calc можно таблицу отформатировать - знаю, но задача разобраться в отчете, а не выкрутиться из ситуации.
За F4 спасибо, не знал.

economist

Задача, я так полагаю, все-таки просто сделать удобный "отчет" - список контактов, который берет данные из БД. 

Calc здесь будет в 10 раз правильнее хотя бы потому, что форматировать Отчет в BASE - намного дольше и трудней, много "молока" в данных, по умолчанию 2-я и след страницы имеют формат Letter, а не A4, сам макет отчета - образец уродства и отрицательной эргономики.

Но самое главное - Отчет в BASE легко "сломать", присутствует масса глюков. Лично для себя решил что буду изучать Oracle Report Builder (расширение для BASE, работает в OpenOffice и LibreOffice. но не без глюков) - как более прогрессивную систему отчетов, поскольку она со встроенной несовместима.


И да, покажите SELECT - запрос и назовите движок СУБД.

Если это HSQL - то вот мой его список багов, после которых я ушел на SQLite/FireBird. Итак, глюки и грабельки HSQL под Windows:

- функции SUM, GROUP, Upper итд. - не работают с кириллицей в полях условий WHERE

- функции перед выражением FROM - не поддерживаются. Что за...

- диагностические сообщения HSQLDB могут поставить в тупик кого угодно

- ошибки при выполнении запроса выдаются "кракозяблами", приходится их раскодировать

- HSQLDB очень требователен к явной группировке для всех агрегирующих функций - нужно упомянуть все(!) столбцы.

- SELECT-запросы в нем очень "многословны"

Одним, словом, что угодно, но только не HSQL...
Руб. за сто, что Питоньяк
Любит водку и коньяк!
Потому что мне, без оных, -
Не понять его никак...

Nat_V

Цитата: economist от  9 июня 2016, 13:34И да, покажите SELECT - запрос и назовите движок СУБД.
SELECT "Адрес" AS "Квартира", "ФИО" AS "ФИО", "Год рождения" AS "Год рождения", "Телефон осн" AS "Телефон осн", "Телефон доп" AS "Телефон доп", "E-mail" AS "E-mail" FROM "Контакт" WHERE "Статус" = 'Проживает' ORDER BY "Квартира" ASC

как движок СУБД опознать - не представляю

economist

Движок отображается слева внизу в статус-баре (может быть HSQL, ODBC, SDBC итп)

Ваш запрос ничего не "группирует" (это делает GROUP BY), но таблицу упорядочивает верно.
Проверьте тип поля Квартира, открыв таблицу КОнтакты на изменение - ему надо быть INTEGER (целым числом).

Надо попробовать создать новый Отчет в режиме Мастера, но кроме Добавить все поля и кнопки Далее на каждом шаге ничего дополнительно не нажимать и не задавать.

Если ошибка повторится - забить на механизм Отчетов до лучших времен и использовать F4 в Calc.

Еще раз повторюсь - любая серьезная правка работающего Отчета может его внезапно погубить (спасет только бэкап ODB, если он есть). А вот Запрос или тем боле Представление испортить почти невозможно.
Руб. за сто, что Питоньяк
Любит водку и коньяк!
Потому что мне, без оных, -
Не понять его никак...