Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
XML Reports
|
|||
|---|---|---|---|
|
#18+
Здравствуйте. Вот возникла проблема такого плана. База практически закончена. Босс вдруг захотел, чтобы была поддержка revision control на уровне отчетов, т.е. при выдаче отчета было видно, что поменялось в сравнении с последней выдачей этого отчета. Сделать отслеживание изменений на уровни записей таблиц несложно. Однако на уровне отчетов (для каждого типа отчета екзависимая нумерация) при условии что отчеты могут быть совершенно разные и состоять из подотчетов и в разные отчеты могут входить разные наборы полей тех же самых таблиц - даже не знаю как подступиться к такой задаче. Если кто из знатоков сталкивался с подобного рода заморочками, поделитесь мыслями как быть. Само сабой была мысль о создании неких дополнительных таблиц для хранения информации для каждого из отчетов и организации сравнения с предыдущим отчетом и т.д. и т.п. Но как я уже говорил, отчеты саиые разнообразные, сильно структурированные. В будущем наверняка будут доролнятся и изменяться и вводится новые виды отчетов. Короче, если делать в лоб - полный мрак. И вот возникла мысль, а что если для каждого отчета при выдаче формировать XML представление и хранить в специальной таблице в одном поле. И далее при последующей выдаче этого отчета снова генерировать XML текст и сравнивать с предыдущим. О XML я имею самое поверхностное впечатление, скорее всего все эту нужно делать в интерфейсной части (если кто знает где посмотреть VB примеры для генерации,роазбора, сравнения 2 XML документов - киньте ссылки smakarov@newmail.ru). Я тут поэкспериментировал с "for xml" и не нашел, есть ли способ построить документ нетабличного вида типа <ROOT> <ReportHeader> .... </ReportHeader> <ReportBody> ..... ..... <SubReport1> ..... </SubReport1> ..... </ReportBody> </ROOT> Или как получить текст XML документа в переменную или записать его в поле таблицы ? Спасибо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.02.2002, 04:13 |
|
||
|
XML Reports
|
|||
|---|---|---|---|
|
#18+
Немного не в тему вопроса (про XML тут и без меня объяснят), но все же - в качестве идеи: Почему именно XML? Ведь если вы собираетесь сохранять результаты вычислений (или - "представлений"?) отчетов, а потом - сравнивать их с текущими, то не все ли равно - в каких структурах это делать? Прежде чем сравнить 2 отчета, записанные в XML, вам таки придется их оба предварительно распарсить и рассовать по структурам удобным для сравнения (наверное - таблицам?). Так и храните сразу все результаты вычислений в таблицах. По крайней мере при сравнении на 2 операции меньше будет выполняться... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.02.2002, 07:32 |
|
||
|
XML Reports
|
|||
|---|---|---|---|
|
#18+
>Так и храните сразу все результаты вычислений в таблицах Это была моя первая мысль. Однако отчеты довольно сложны - для каждого потребуется 3-4 связанные таблицы. Поддерживать все это хозяйство будет непросто. Плюс наверняка в будущем придется либо добавлять/удалять что-нибудь в отчетах - а следовательно менять структуру этих таблиц и механизм сравнения или появятся новые отчеты - а для них новые таблицы. Короче, мрак. Потому я и подумал про возможность хранить выданный отчет в виде XML документа. А сравнивать XML документы между собою - наверняка дело техники. Потому я и спрашивал ссылки на готовые классы для манипуляции/сравнения XML. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.02.2002, 09:04 |
|
||
|
XML Reports
|
|||
|---|---|---|---|
|
#18+
Проще можно сделать. Анализируем задание: В силу того, что отчеты отличаются и сильно из-за разных входящих параметрах, отсюда делаем вывод, что Шефу надо скорее всего все-таки не это, а ему надо иметь представление, какие данные были изменены с момента последнего запуска отчета (его, Шефа запуска, а не скажем, его зама или бухгалтера). "Пользователю надо давать не то, что он просит, а то, что он хочет". А такая постановка уже теплее и ближе к реальности. Что необходимо для этого: 1. Журнал запуска отчетов Шефом с указанием времени, и сохранение туда времени прикладухой при каждом запуске отчета. Реализуется элементарно. 2. Журнал изменений в базе с указанием времени. Это реализуеся, но посложней, скорее всего несколькими таблицами и триггерами. И шибко зависеть будет от структуры данных. Но так или иначе вполне реализуемо. Что получаем: При запуске отчета Шеф видит красным жирным шрифтом те данные, которые были изменены или добавлены со времени последнего запуска им отчета. Просто время из журнала данных сравнивается с макс. временем из журнала отчетов. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.02.2002, 12:41 |
|
||
|
XML Reports
|
|||
|---|---|---|---|
|
#18+
> А сравнивать XML документы между собою - наверняка дело техники. Ну это - как сказать... XML-то придумывали вовсе не для сравнения каких-либо структур, ни "объекто-подобных", ни "иерархических". Просто сам по себе формат - оказался довольно удобен для текстового представления различных "структурированных" данных. Но чтобы вот так вот сразу - бац и "сравнил" 2 XML-документа, и сказал: "О-о-о! Так они же почти одинаковые! Только в одном - значение какого-то узла изменилось... а другом - атрибута какого-то не хватало...", таких средств я пока не знаю... > Потому я и спрашивал ссылки на готовые классы для манипуляции/сравнения XML. Ну, если говорить про мелко-мягких, то у них есть OLE-библиотека MSXML3.DLL (или 2, или 1 - зависит от версии IE, которую вы используете). Вполне возможно, что в SQL2K - есть свой собственный встроенный "парсер" XML - только ссылку на его место в объектной модели SQL2K - я не знаю... Важно другое - все эти средства предоставляют возможность "манипуляции" XML-документом на уровне XML-DOM (Document Object Model), т.е. - они работают не с конкретным документом, а с его "абстракцией", способом представления... Они могут "извлекать" из XML-текста - "узлы", "ветки", "атрибуты", "значения", "детей", "родителей", коллекции всего ранее перечисленного, и пр. абстрактную "мутатень", перебрав которую - ваша конкретная программа и сможет что-то сделать с конкретным XML-документом, в том числе и "сравнить"... (только для этого, наверное, придется рекурсивно пробегать по всем веткам структуры одного документа, и сравнивать значения его узлов со значениями тех же узлов в другом документе). Вобщем - задача явно не для T-SQL, а скорее всего для какого-нить ActiveX-компонента на VB (или VC++), который можно использовать в T-SQL, но писать все-таки придется - самому... с нуля... под конкретную задачу... З.Ы. Может я и не прав, может тот, кто "реально работает" с XML - знает уже достаточно средств именно "для сравнения"... (я же - просто интересуюсь этой технологией). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.02.2002, 15:12 |
|
||
|
XML Reports
|
|||
|---|---|---|---|
|
#18+
2Глеб Уфимцев Не все так просто. Предположим, кто-то изменил данные, а потом вернул все как было - дата модификации больще чем дата последней выдачи отчета. Это раз. Далее для одного отчета используется скажем 3 поля из таблицы, для другого - 5 полей той же таблицы. Если изменилось 4-е поле, то для первого отчета все осталось по прежнему, для второго нужно показать изменение. Если знать заранее какие отчеты будут - можно решить такую задачу в лоб добавив в таблицы по полю для каждого отчета для отслеживания изменений необходимого набора полей. Но как я уже говорил - в будущем наверняка будут изменения и добавление новых отчетов. Так что такое решение не очень подходит. Пока что я не знаю как получить результат запроса FOR XML в переменную. Это позволит мне формировать XML документ на сервере. А сравнение и разбор для построения отчета (как видно тот еще гемморой) я буду делать на кленте. Короче, сплошные мраки ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.02.2002, 22:52 |
|
||
|
XML Reports
|
|||
|---|---|---|---|
|
#18+
Privet! Esli ti generiti reporti iz Crystal Reports 8.5 , to tam esti feature predstavlenia reporta v vide XML. Pravda ia ne uveren,chto ti ego ispolizueshi ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.02.2002, 01:32 |
|
||
|
XML Reports
|
|||
|---|---|---|---|
|
#18+
Ну да, вот только кристал репорта мне еще для полного счастья не хватает ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.02.2002, 04:57 |
|
||
|
XML Reports
|
|||
|---|---|---|---|
|
#18+
Для начала соглашусь с qu-qu: в чем преимущество работы с XML-документами по сравнению с таблицами? Если "сравнивалку" в любом случае придется писать самому (похоже, что готовых средств пока никто не назвал), то зачем лишние этапы себе добавлять? Теперь по конкретному вопросу. Что значит "получить результат запроса FOR XML в переменную"? Может, все-таки в файл? Тогда воспользуйся утилитой bcp. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.02.2002, 06:36 |
|
||
|
XML Reports
|
|||
|---|---|---|---|
|
#18+
А если решить проблему следующим способом? Таблица: 1. Идентификатор отчета 2. Пользователь 3. Дата последней генерации отчета 4. Параметр отчета 5. Значение параметра По 1 и 2 полю получаем предыдущий отчет и сравниваем параметры При вызове отчета после сравнения сохраняем значения отчета в те же поля. Если этот вариант не очень... пожалуйста ногами не бить.. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.02.2002, 07:57 |
|
||
|
XML Reports
|
|||
|---|---|---|---|
|
#18+
При востроении одного и того же отчета с одинаковыми параметрами можно получить разный результат. Я вполне согласен с Sergey Makarov что при подобной постановке задачи надо хранить непосредственно сам отчет ... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.02.2002, 08:09 |
|
||
|
XML Reports
|
|||
|---|---|---|---|
|
#18+
Кстати, по поводу: \nЯ тут поэкспериментировал с "for xml" и не нашел, есть ли способ построить документ нетабличного вида типа <ROOT> <ReportHeader> .... </ReportHeader> <ReportBody> ..... ..... <SubReport1> ..... </SubReport1> ..... </ReportBody> </ROOT> Посмотрите вот здесь 3-й пример (для FOR XML EXPLICIT), как раз объясняется - как прямо из запроса - создавать структуру XML-документа... http://dotsite.spb.ru/articles/xml/xmlextensions.asp З.Ы. и насчет киньте ссылки smakarov@newmail.ru - мне кажется, что вопрос использования XML сам по себе очень интересен, поэтому - не стоит "зажимать" все интересные ссылки только себе... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.02.2002, 08:43 |
|
||
|
XML Reports
|
|||
|---|---|---|---|
|
#18+
>в чем преимущество работы с XML-документами по сравнению с таблицами? Еще один момент - отчеты используют информацию из справочников. Что если пользователь поменяет чего-нибудь в справочнике ? (от этих пользователей всего можно ожидать). Тогда базовые таблицы не изменяются - а отчет будет другим. А преимущество - хранение целого отчета в одном поле таблицы вместо целого набора таблиц для каждого типа отчета + еще и справочники. За ссылку огромное спасибо. Уже близко. Единственно непонятно, если у меня структура отчета весьма и весьма сложная - придется во всех этих UNION запросах переписывать все элементы всех уровней. Ну и самое главное - результат выполнения этого запроса FOR XML мне нужно загнать в поле таблицы или переменную. Как это сделать ? Еще такой момент - я пытаюсь открыть recordset в VB на основе запроса (select ... For XML). Получаю вместо XML документа белиберду. В QA все нормально. Где тут собака порылась ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.02.2002, 18:52 |
|
||
|
XML Reports
|
|||
|---|---|---|---|
|
#18+
Ну и самое главное - результат выполнения этого запроса FOR XML мне нужно загнать в поле таблицы или переменную. Как это сделать ? Вот вам - приговор: \nGuidelines for Using the FOR XML Clause The FOR XML clause is valid only in the SELECT statement and is subject to these limitations: FOR XML is not valid in subselections, whether it is in UPDATE, INSERT, or DELETE statements, a nested SELECT statement, or other statements (SELECT INTO, assignment). For example, subselects as shown in these examples are not supported: Example A SELECT * FROM Table1 WHERE ......(SELECT * FROM Table2 FOR XML RAW) Example B DECLARE @doc nchar(3000) SET @doc = (SELECT * FROM Customers WHERE CustomerID = 'ALFKI' FOR XML RAW) FOR XML is not valid for any selection that is used with a COMPUTE BY or FOR BROWSE clause, for example: SELECT OrderID, UnitPrice FROM [Order Details] ORDER BY OrderID COMPUTE SUM(UnitPrice) BY OrderID GROUP BY and aggregate functions are currently not supported with FOR XML AUTO. For example: SELECT max(price), min(price), avg(price) FROM titles FOR XML AUTO FOR XML is not valid in a SELECT statement used in a view definition or in a user-defined function that returns a rowset. For example, this statement is not allowed: CREATE VIEW AllOrders AS SELECT * FROM Orders FOR XML AUTO However, a statement such as the following is allowed: SELECT * FROM ViewName FOR XML AUTO are allowed. FOR XML cannot be used in a selection that requires further processing in a stored procedure. FOR XML cannot be used with cursors. Generally, FOR XML cannot be used for any selections that do not produce direct output to the Microsoft® SQL Server™ 2000 client. Поэтому - разбирайтесь с ADO... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.02.2002, 07:15 |
|
||
|
XML Reports
|
|||
|---|---|---|---|
|
#18+
Мне тут потребовалость примерно такое же сделать. Т.е. есть некий публичный список, который сложно формируется из разных таблиц (один раз в день). Нужно, чтобы при очередном обновлении списка дельта посылалась по ряду адресов ЭП. Подхода вижу два - следить изменения исходных данных или следить изменения результирующих (моего списка или ваших отчетов). У меня такой список только один, поэтому я планирую следить только за ним. Вам мне кажется лучше следить за изменением исх. данных (хранить историю изменений), а при генерации отчетов проверять и выводить разницу на основании изменений, зафиксированных в исходных данных. Естественно, понадобится и хранение инф. о том, кто какой отчет когда в последний раз формировал или достигать этого административно (чтобы сам сотр. это помнил) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.02.2002, 11:49 |
|
||
|
XML Reports
|
|||
|---|---|---|---|
|
#18+
На самом деле формулировка вопроса выглядит не совсем полной, не смотря на то, что его уже успели всесторонне обсудить . Поэтому давайте уточним, что именно требуется. 1. Выявить факт любого изменения любой цифирьки или буковки в любом месте отчета и сообщить "по сравнению с отчетом от такого-то числа данны отчет имеет отличия"; либо 2. Требуется показать место , в котором имеются отличия и указать разницу (абсолютную и, может быть, относительную, в процентах) между прежними показателями и новыми? Эти задачи совершенно разные. Первая задача решается очень просто. В каждом отчете заводится вспомогательное поле, именуемое "контрольная сумма", содержимое которого зависит от всех остальных полей отчета. После формирования отчета сохраняется дата/время формрования отчета и контрольная сумма. При новом формировании отчета сравнивается значение контрольной суммы с тем, которое было раньше и на вопрос - произошли ли изменения получается однозначный булевский ответ "да" или "нет" (третьего не дано). По второй задаче никакого универсального философского камня можешь даже не пытаться искать. Тот кто ставит подобную задачу, должен подробно описать какие именно изменения его интересуют. Если постановщик задачи требует сравнить всё со всем, попросите его дать подробный перечень всех отличий между текстом "Войны и мира" и текстом трехтомника "Ресурсы MS Windows 2000". Или хотя бы узнать, будет ли он читать перечень отличий, если между двумя отчетами вообще нет ничего общего . И как он будет реагировать на хронически выскакивающее сообщение о том, что поля "дата формирования отчета" в отчетах различается с указанием конкретной разницы в часах, минутах, секундах и процентах. Если исходить из того, что босс - не чайник, а умный человек, значит он хочет выявить определенные тенденции изменения отчета во времени (например, увеличилась или уменьшилась прибыль после того, как кроме "черных" оборотов в учете были отображены "белые"), и если увеличилась, то на сколько. Ответ на этот вопрос дается сравнением всего лишь двух итоговых сумм, которые и нужно хранить. И сложность задачи при этом также становится на несколько порядков меньше, нежели задача глобально-универсального статистическо-аналитического дифференцирования... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.02.2002, 16:13 |
|
||
|
XML Reports
|
|||
|---|---|---|---|
|
#18+
Нужно отследить любые изменения, если они были - отчет должен выйти под следующим revision number, в теле отчета отобразить, что вот эта, эта и эта строка изменилась в текущей редакции по сравнению с предыдущей. И еще сформировать отдельный список всех изменений. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.02.2002, 17:31 |
|
||
|
XML Reports
|
|||
|---|---|---|---|
|
#18+
Осмелюсь предложить использование вместо XML переменные типа TABLE, и столбцы этого типа в таблицах можно создавать. такая переменная будет доступна обработке внутри процедур. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.02.2002, 18:32 |
|
||
|
XML Reports
|
|||
|---|---|---|---|
|
#18+
>Нужно отследить любые изменения... Ну, это уже из области фантастики. Если говорить честно, я бы за такую задачу не взялся. В качестве соломинки могу предложить сохранять отчеты в текстовые файлы с последующим сравнением их с помощью Araxis Merge. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.02.2002, 18:56 |
|
||
|
XML Reports
|
|||
|---|---|---|---|
|
#18+
>...что вот эта, эта и эта строка изменилась в текущей редакции по сравнению с предыдущей. И еще сформировать отдельный список всех изменений. А если в новом отчете появились новые строки, которых не было в старом, а те строки, которые были в старом, в новом отчете пропали... С ними что делать? Тоже как-то поакзывать? Над таким инструментарием "Гарант" и "Консультант" мозги сломали и до сих пор продолжают ломать. Ужели ты в одиночку хочешь подобное осилить? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.02.2002, 19:04 |
|
||
|
XML Reports
|
|||
|---|---|---|---|
|
#18+
Есть такая утилита diff. Предназначена для сравнивания текстовых файлов. Живет в основном на юниксах, но, в силу того что это Open Source, можно попробовать скомпилять ее и для виндузов. Парсить ее выходные данные, конечно, тоже не сахар, но это гораздо проще, чем самостоятельно выискивать различия между файлами. Ситуации когда "в новом отчете появились новые строки, которых не было в старом, а те строки, которые были в старом, в новом отчете пропали" она обрабатывает легко и непринужденно Но в общем и целом я присоединяюсь к Garya. Геморрой с такой задачей нажить можно легко. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.02.2002, 20:19 |
|
||
|
XML Reports
|
|||
|---|---|---|---|
|
#18+
2izvra >Осмелюсь предложить использование вместо XML >переменные типа TABLE Прекрасная идея. Надо попробовать. Интересно, а можно ли в таком столбце хранить таблицу, которая в свою очередь тоже будет содержать столбцы-таблицы ? А как работать с такими столбцами-таблицами на клиенте через ADO ? (я хочу проверку на изменения делать на клиенте, чтобы сервер не перегружать). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.02.2002, 09:57 |
|
||
|
XML Reports
|
|||
|---|---|---|---|
|
#18+
> Прекрасная идея. Надо попробовать. Интересно, а можно ли в таком столбце хранить таблицу, которая в свою очередь тоже будет содержать столбцы-таблицы ? По идее должно работать. > А как работать с такими столбцами-таблицами на клиенте через ADO ? (я хочу проверку на изменения делать на клиенте, чтобы сервер не перегружать). IMHO никак. Нужно, наверное, выдернуть эту таблицу каким-то SELECT.... Я просто больше программист, чем DBA, потому посмотрел на эту задачу со своей стороны. XML/XSL знаю вдоль и поперек, потому хочу посоветовать взять за основу именно то, что говорят DBA - пробуй как-то через тригера отлавливать изменения, потому как если переносить все на клиента, то все будет зависеть, насколько сложна будет логика сравнения. Сравнивать два XML документа так же невозможно (в идеале), как и две таблицы. Можно только скрипты для таблиц сравнивать . Это просто нонсенс, если брать чистый XML. Можно сравнить текстовые представления двух докуметов (посредством cstr(XMLDOC.XML)). Но вряд ли это выход, если в отчетах используются всякие Revision Number, даты и т.д. Потому задача на клиенте решается достаточно просто, если логика не будет достаточно сложной, за счет использования именно DOM-модели, потому как фактически коммерческих выпуском другого просто нету. В чем ее прелесть, что там можно вычленить куски отчета очень бысто, если структура реально такая <ROOT> <ReportHeader> .... </ReportHeader> <ReportBody> ..... ..... <SubReport1> ..... </SubReport1> ..... </ReportBody> </ROOT> То есть можно, не анализируя подробности, сразу взять кусок Subreport1 и сравнить его с куском Subreport1 нового отчета (чисто как строки), и если там нету дат и порядок тэгов сохранен и все они во всех версиях одинаковые, то сразу получишь результат - одинаковые куски или нет. Хотя при использовании справочников в этом случае необходимо не только код совать в документ, но и само значение справочника, если (как я правильно прочел выше) требуется такая точность. А вот уже если станет задача найти, где же различия, то придется и сам кусок разбирать, что уже не есть просто (хотя опять же нужно понимать степень требуемой детализации). Потому как если в старом отчете первой шла запись с ID = 15 (утрируем), а в свежем отчете первая запись идет с ID = 12 или 20, то нужно ли сканировать весь документ на предмет того, есть ли в нем все-таки запись с ID = 15 или нет? Если сканировать надо, то это уже получится совершенно нетривиальная задача (точнее сказать, очень ресурсоемкая). Хотя если найдено отличие, то в качестве аттрибута можно приделать флажок modified, и тогда с помощью xsl - схемы можно отчет получить очень красивый без всяких Crystal report. В общем, что там руками все делать, что там. Только вот T_SQL не очень то предназначен для таких вещей, IMHO. Стоит еще посмотреть возможность преобразования recordset <-> XML туда обратно через объект ADODB.Stream, который можно юзать с ADO 2.6 и выше. Там появляется возможность смотреть на рекордсет, вроде бы он как XML, а вроде как рекордсет. Если могу чем помочь по XML, то лучше в почту, потому как здесь я редкий гость. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.02.2002, 11:14 |
|
||
|
XML Reports
|
|||
|---|---|---|---|
|
#18+
Сравнивать два XML документа так же невозможно (в идеале), как и две таблицы. Что ж, я рад, что мое мнение - не особенно расходилось с мнением профессионала... Поэтому, забыв на время об XML, хочу предложить следующую реляционную схему для решения проблемы: 1. Храним результаты вычислений всех отчетов в особой структуре, удобной для "сравнения" ("идентичные" версии хранить не обязательно); 2. Определяем максимально достоверную технику "сравнения" и согласовываем ее с заказчиком/боссом (любой здравомыслящий чел. - поймет, что идеальных решений не бывает); 3. Мысленно разбиваем любой отчет на 3 "источника и составные части": - наименование и/или ID отчета, как сущности, отличающее его от всех прочих "отчетов"; - "параметры отчета" (привязанные по FK к отчету); - "показатели отчета" (привязанные по FK к отчету); - "значения отчета" (привязанные по FK к отчету/параметрам/показателям); Т.к. большинство отчетов - суть таблицы, то упрощенно можно изобразить эту стуктуру так: Отчет_1 | Показатель_1 | Показатель_2 | ...... -----------+--------------------------------------- Параметр_1 | Значение_11 Значение_12 ...... Параметр_2 | ........... ........... ...... Параметр_3 | ........... ........... ...... Параметр_4 | ........... ........... ...... 4. Считаем отчеты "одинаковыми", если: а - у них одинаковые параметры; б - у них одинаковые показатели; в - у сочетаний параметр/показатель - одинаковые значения. (Сравнить 3 набора значений в 3-х таблицах - не столь уж сложная задача, ИМХО); 5. Договариваемся заранее - как будем "разводить" частные случаи: когда число параметров и/или показателей - заведомо переменное и зависит от текущего состояния базы? 6. Продумываем заранее - как будем обрабатывать "иерархические" параметры (типа - много-уровневой группировки с промежуточными суммами по группам)? Вперед, и с песней!! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.02.2002, 07:50 |
|
||
|
|

start [/forum/topic.php?fid=46&msg=32023705&tid=1823761]: |
0ms |
get settings: |
9ms |
get forum list: |
19ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
51ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
76ms |
get tp. blocked users: |
1ms |
| others: | 225ms |
| total: | 398ms |

| 0 / 0 |
