powered by simpleCommunicator - 2.0.35     © 2025 Programmizd 02
Форумы / Отчетные системы [игнор отключен] [закрыт для гостей] / FastReport и работа с несколькими таблицами одновременно
15 сообщений из 15, страница 1 из 1
FastReport и работа с несколькими таблицами одновременно
    #39122987
comtehno
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Доброго времени суток. Имеется 2 таблицы ну пусть предположим такой структуры
table1
------------
id
name
summa

и

table 2
------------
id
t1_id
name
summa
, в первой таблице содержаться основные улсуги по заявке, во второй дополнительные и не обязательные услуги, необхдимо вывести в общий чек все услуги, оказываемые клиенту. Как я понимаю необходимо в действовать через бенд группирровки, но не фига не получается, подсткажите ссылку на удобоваримый документ с подобной группировкой, надо доделать срочно как обычно - и времени не хватает :). Заранее спасибо.
...
Рейтинг: 0 / 0
FastReport и работа с несколькими таблицами одновременно
    #39123331
holod-iinna
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
comtehno,

думаю, для начала надо связать в источнике эти таблицы.
а потом прочитать хелп на офф сайте фаста.
...
Рейтинг: 0 / 0
FastReport и работа с несколькими таблицами одновременно
    #39123345
comtehno
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
holod-iinna,
у меня эти источники связаны, проблема в другом, я не могу группировку сдалать, на офсайте простая группировка описывается, подобное делал много раз и проблем не возникает. Могу скрины выложить как мне необходимо
:)
...
Рейтинг: 0 / 0
FastReport и работа с несколькими таблицами одновременно
    #39123465
СТУДЕНТ123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
comtehno,

Я FAST в глаза не видел, возможно мой вариант не рационален, у любого отчета всегда есть DataSet, в нем я так понимаю у Вас запрос или ХП. Проще говоря верните запросом DataSet в конечном виде для вашего отчета, раз лень справку ковырять.
...
Рейтинг: 0 / 0
FastReport и работа с несколькими таблицами одновременно
    #39123983
comtehno
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
В общем справку то не лень ковырять :)
даже могу привести ссылку на "нужную" справку
https://www.fast-report.com/public_download/html/UserMan-ru/index.html?tfrxadoquery.htm
Но... я создаю компоненты на лету, ну для примера
Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
Screen.Cursor           := crSQLWait;
  qwE                     := TZQuery.Create(Application);
  qwE.Active              := False;
  qwE.Connection          := frmMain.mysql;
  qwE.SQL.Clear;
  qwE.SQL.Add('select * from view_transportation where gp1_data = ' + QuotedStr(FormatDateTime('dd.mm.yyyy',dtpDate.Date)) + ' order by number');
  qwE.Active              := True;
  dsE                     := TDataSource.Create(Application);
  dsE.DataSet             := qwE;
  dbd.DataSource          := dsE;
  qwGoods                 := TZQuery.Create(Application);
  qwGoods.Active          := False;
  qwGoods.Connection      := frmMain.mysql;
  qwGoods.SQL.Clear;
  qwGoods.SQL.Add('select * from view_transportation_goods where gp1_data = ' + QuotedStr(FormatDateTime('dd.mm.yyyy',dtpDate.Date)));
  qwGoods.Active          := True;
  qwGoods.MasterSource    := dsE;
  qwGoods.MasterFields    := 'tid';
  qwGoods.IndexFieldNames := 'tid';
  dsGoods                 := TDataSource.Create(Application);
  dsGoods.DataSet         := qwGoods;
  dbdGoods.DataSource     := dsGoods;
  rep.LoadFromFile(ExtractFilePath(Application.ExeName)+'forms\reestrt.fr3');
  if frmMain.bDesigner = True then rep.DesignReport() else rep.ShowReport();
  Screen.Cursor  :=  crDefault;


у меня создается мастер датасет qwE и детейл датасет qwGoods, по справке получается я связываю мастер с детейл строками:
Код: pascal
1.
2.
3.
  qwGoods.MasterSource    := dsE;
  qwGoods.MasterFields    := 'tid';
  qwGoods.IndexFieldNames := 'tid';


но при формировании отчета у меня по прежнему каждое обращение в детейл содержит все записи таблицы, то есть фильтрация не происходит, что не так понять не могу.
...
Рейтинг: 0 / 0
FastReport и работа с несколькими таблицами одновременно
    #39123984
comtehno
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Пардон браузер сглючил, ссыль предыдущего поста https://www.fast-report.com/public_download/html/UserMan-ru/54.htm
...
Рейтинг: 0 / 0
FastReport и работа с несколькими таблицами одновременно
    #39124220
СТУДЕНТ123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
comtehno,

ХЗ, что там в справке, лень вникать в подробности. Из выше представленного:

1. Взять чистый лист, карандаш и линейку
2. Линейкой отбить себе пальцы за "SELECT * FROM" и больше не когда не писать * в запросах, за исключением конструкции EXISTS
3. Нарисовать себе отчет в том виде в каком хотите его получить, к примеру нужно в табличном виде отобразить количество заказов и количество номенклатуры по каждому клиенту за определенную дату. Таким образом в отчете будет три колонки "Клиент", "Кол. заказов", "Кол. номенклатуры"
4. теперь лезем в БД
- Клиенты хранятся в таблице - справочник ALL_USERS, поле идентификатор USERKEY
- Заказы хранятся в таблице ORDERS и связаны с клиентами по полю USERKEY, и имеют идентификатор ORDERKEY
- Детализация заказа хранится в таблице ORDERDETAIL, содержит количество номенклатуры поле QTY (которое нам нужно в рамках примера), связаны с таблицей ORDERS по идентификатору ORDERKEY
5. Отлично, все нашли, теперь строим запрос для нашего отчета:

Код: sql
1.
2.
3.
4.
5.
SELECT U.USERNAME, COUNT(O.ORDERKEY) AS COUNT_ORDERKEY, SUM(OD.QTY) AS SUM_QTY
FROM ALL_USERS AS U INNER JOIN ORDERS AS O ON U.USERKEY = O.USERKEY
                               INNER JOIN ORDERDETAIL AS OD ON O.ORDERKEY = OD.ORDERKEY
WHERE O.ORDERDATE = @DATE
GROUP BY U.USERNAME



Выполнив запрос и проверив данные, мы увидим что результирующий набор полностью удовлетворяет задачу. Теперь переходим к самому отчету.
6. В макете отчета создаем таблицу из 3х колонок. Затем настраиваем DataSource к БД, проверяем соединение. Настраиваем DataSet, а именно суем в него запрос собранный выше, заменив @DATE на параметр. Вот и все =)

Я так понимаю подогнав свою задачу вы получите только один DataSet, примерно такой конструкции:

Код: sql
1.
2.
3.
4.
5.
6.
......
qwE.SQL.Add('SELECT U.USERNAME, COUNT(O.ORDERKEY) AS COUNT_ORDERKEY, SUM(OD.QTY) AS SUM_QTY
FROM ALL_USERS AS U INNER JOIN ORDERS AS O ON U.USERKEY = O.USERKEY
                               INNER JOIN ORDERDETAIL AS OD ON O.ORDERKEY = OD.ORDERKEY
WHERE O.ORDERDATE = ' + QuotedStr(FormatDateTime('dd.mm.yyyy',dtpDate.Date)) + ' GROUP BY U.USERNAME');
......



------------- Настораживает вот это QuotedStr(FormatDateTime('dd.mm.yyyy',dtpDate.Date)) разве у вас дата имеет тип данных не DATETIME
...
Рейтинг: 0 / 0
FastReport и работа с несколькими таблицами одновременно
    #39124226
СТУДЕНТ123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Промахнулся с запросом, нужно количество заказов а не количество позиций в заказах, по этому так:
Код: sql
1.
2.
3.
4.
5.
SELECT U.USERNAME, COUNT(DISTINCT O.ORDERKEY) AS COUNT_ORDERKEY, SUM(OD.QTY) AS SUM_QTY
FROM ALL_USERS AS U INNER JOIN ORDERS AS O ON U.USERKEY = O.USERKEY
                               INNER JOIN ORDERDETAIL AS OD ON O.ORDERKEY = OD.ORDERKEY
WHERE O.ORDERDATE = @DATE
GROUP BY U.USERNAME
...
Рейтинг: 0 / 0
FastReport и работа с несколькими таблицами одновременно
    #39124266
comtehno
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
СТУДЕНТ123,
Это все понятно и не раз делалось :) но у меня есть 2 датасурса, в первом услуги основные а во втором дополнительные и дополнительных может не быть. Сгруппировать таблицы не получится в одном запросе, так как соотношение один ко многим.
...
Рейтинг: 0 / 0
FastReport и работа с несколькими таблицами одновременно
    #39124269
comtehno
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
comtehno,
Насчет линейки за select * from - полностью поддержал бы, но не в этом случае, клиент выразил желание править шаблон отчета вводя иногда дополнительные поля, для этого был введен параметр dDesigner - у администратора он True :), поэтому пришлось ввести в скрипт * :), так что не серчайте :).
...
Рейтинг: 0 / 0
FastReport и работа с несколькими таблицами одновременно
    #39124271
comtehno
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
СТУДЕНТ123,
насчет настораживания :) база данных mysql, поэтому формат даты привожу как мне надо :)
...
Рейтинг: 0 / 0
FastReport и работа с несколькими таблицами одновременно
    #39124325
СТУДЕНТ123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Тогда я не понимаю в чем проблема? Ваша исходная задача имеет решение в приведенной Вами же ссылке.


----------
Fast report динамичен? т.е. сформировав отчет, без повторного формирования я могу тыкнуть на любого пользователя и получу данные только по его услугам (обязательные и не обязательные).

----------
...
Рейтинг: 0 / 0
FastReport и работа с несколькими таблицами одновременно
    #39124333
comtehno
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
СТУДЕНТ123,
нет не имеет :)
мой вопрос был как мне master и detail данные разместить в отчете, а не как JOIN запрос сделать :)
и еще по поводу * в запросе, вы заметили, что у меня VIEW везде используется, в общем семантическая конструкция содержит только те поля, которые мне необходимы - поэтому считаю что в этом случае применение * обосновано.
...
Рейтинг: 0 / 0
FastReport и работа с несколькими таблицами одновременно
    #39124343
СТУДЕНТ123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
comtehnoСТУДЕНТ123,
нет не имеет :)
мой вопрос был как мне master и detail данные разместить в отчете, а не как JOIN запрос сделать :)
и еще по поводу * в запросе, вы заметили, что у меня VIEW везде используется, в общем семантическая конструкция содержит только те поля, которые мне необходимы - поэтому считаю что в этом случае применение * обосновано.

Не знаю как в MySQL но в MSSQL явно будет не обоснованно, зачем брать лишнее, время выполнения - нервы клиента.
А так по поводу Вашего вопроса уйма информации:
YouTube Video
...
Рейтинг: 0 / 0
FastReport и работа с несколькими таблицами одновременно
    #39127061
comtehno
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
СТУДЕНТ123,
решил проблему заменив zquery на ztable :) теперь другая проблема, но это в другом форуме
...
Рейтинг: 0 / 0
15 сообщений из 15, страница 1 из 1
Форумы / Отчетные системы [игнор отключен] [закрыт для гостей] / FastReport и работа с несколькими таблицами одновременно
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]