Отчет по конкретному значению таблицы

Автор Glebzilla, 16 апреля 2014, 09:29

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

Glebzilla

LibreOffice 4.5.1
Опыт работы с БД небольшой. Имеется простая БД, удовлетворяющая меня по многим параметрам. Но не могу сделать нормальный отчёт.
Конкретнее: среди моих форм имеется форма "протокол". В этой форме есть субформа в виде таблицы.
Мне требуется, чтобы я мог выбрать номер протокола, а потом получить отчёт с теми же самыми данными, что и в форме. Только по одному конкретному номеру протокола, а не по всем имеющимся.

[вложение удалено Администратором]

adi_den2013

Поменяйте свой SELECT, добавив условие  "испСИ"."№прот" = :N_prot

SELECT "испСИ"."ID", "испСИ"."№прот", "испСИ"."Наименов", "СИ"."ЗавНом", "СИ"."СрокПов", "СИ"."СвидПов" FROM "испСИ", "СИ" WHERE "испСИ"."Наименов" = "СИ"."Наименов" AND "испСИ"."№прот" = :N_prot

Переменная будет запрашиваться при выполнении.
Яна (in real)

adi_den2013

Написание названия переменной значения не имеет. Можете поменять его на другое, кириллица будет отображаться. Визуально это понятнее для пользователя. Я написала по привычке (для отладки на латин.)
Яна (in real)

Glebzilla

А можно ли два запроса объединить в одном отчёте? Ну там сам протокол + испСИ
Чтобы один раз спрашивал номер протокола.

adi_den2013

Не поняла. 

Если вы имеете ввиду жестко закрепленный "испСИ"."№прот", тогда давайте конкретное значение "испСИ"."№прот"='1'.
Яна (in real)

Glebzilla

Вот у меня имеется запрос испСИ, по вводу "номера протокола" в который можно получить табличку, что мне и надо, спасибо.
И, допустим, я создаю ещё один запрос, относящийся к таблице протоколы, который по вводу "номера протокола" выдаёт не список, а только одну строку таблицы (номер протокола — число уникальное), что мне и требуется, опять спасибо Вам.
А можно ли эти два запроса в один отчёт?

adi_den2013

Насколько я вижу в таблице испСИ 2 записи с протоколом №1. Чтобы получить уникальность нужно группировать данные и подсчитывать количество этих протоколов

SELECT "испСИ"."№прот", COUNT( "испСИ"."№прот" ) FROM "испСИ", "СИ" WHERE "испСИ"."Наименов" = "СИ"."Наименов"
  GROUP BY "испСИ"."№прот" HAVING ( ( "испСИ"."№прот" = '1' ) )

[вложение удалено Администратором]
Яна (in real)

Glebzilla

#7
Вот сделал то, что имел ввиду. Теперь как бы мне эти два запроса на один лист отчета разместить?
То есть применительно конкретно к этой БД: я открываю отчёт 1, ввожу цифру 1, у меня выходит то, что нужно, со вторым аналогично.
И в первом, и во втором отчёте используется один и тот же номер протокола.
Да хоть два раза вводить, главное — чтоб на одном листе.

[вложение удалено Администратором]

Glebzilla


adi_den2013

Можно. В Запрос1 добавить Запрос_ИспСИ (см. скрин, уже в вашей базе сделано) и переделать Отчет1. Отчет 2 удалить.

[вложение удалено Администратором]
Яна (in real)

Glebzilla

#10
Спасибо огромное! Сделал то, что хотел — в Calc при выполнении макроса (записывал в автоматическом режиме) сначала вставляются результаты первого запроса, а чуть ниже — второго.
Помог совет и вот эта видеозапись http://www.youtube.com/watch?v=oxvGE-nIemU
Осталось облагородить внешний вид и что-то сделать с кодировкой.

[вложение удалено Администратором]