Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 2014.11.23;
Скачать: [xml.tar.bz2];

Вниз

В IB связать, отфильтровать и вывести несколько больших ХП   Найти похожие ветки 

 
samalex2504   (2011-03-28 16:23) [0]

Уважаемые знатоки!!!
В FB2.0+D7 написана база документооборота.
Состоит из 5 главных таблиц (Т) и большого чиста вложенных Т и справочников. Главные Т связаны друг с другом по ключевым полям.
Для каждой Т уже написана хранимая процедура (ХП) с большим количеством входных и выходных параметров. Сейчас программа поделена на 5 вкладок, в каждой из которых есть вывод данных с фильтрацией.
Вопрос - как сделать общую фильтрацию? То есть связать все ХП.
Если писать общую ХП, то FB будет ругаться на большое количество входных и выходных параметров.
Пробовал связывать ХП через join, но тоже самое + очень медленно получается.

Поделитесь, пжс, кто реализовывал подобные задачи. Может, можно в Delphi через компоненты вывода данных сделать?

Заранее благодарен!!!


 
Sergey13 ©   (2011-03-28 16:49) [1]

Что есть "вложенные таблицы"?
Если есть ХП, то зачем фильтрация?


 
samalex2504   (2011-03-28 17:02) [2]

Вложенные таблицы - это к делу не относится.
Смысл - сделать общий фильтр.
Если в ХП соединить все 5 таблиц, то FB не пропустит такого большого количества входных и выходных параметров.


 
Sergey13 ©   (2011-03-28 17:35) [3]

Если на паровозе нельзя доехать за час из А в Б, то либо меняют либо транспорт либо пункт назначения.
Что за немыслимое количество входных и выходных параметров? Откуда они?


 
ssnakess ©   (2011-03-28 19:02) [4]

без структуры таблиц непонятен смысл их объединения и установки какого-то там общего фильтра, да и если программа организованна "вкладками", то повесьте на выбор той или иной вкладки установку фильтра перед отображением данных и всё.
 
по поводу join. есть сайтик http://www.sqlly.com/ там лежит классная программа (для россии безплатно т.е. дагом) так вот, у неё есть анализатор запросов, который в графическом виде выдает какие именно индексы используются или не используются для выполнения того или иного запроса. Попробуйте сделать требуемый запрос в ней и посмотрите, может все таки можно обойтись обычным join :)


 
samalex2504   (2011-03-29 16:03) [5]

Большое количество входных и выходных данных из-за желания заказчика.
Там было коротко сказано : желаю фильтровать по всему.

Попробую использовать временные таблицы. В FB 2.1 есть такая возможность.
Кто-нибудь работал с ними в FB ?


 
Sergey13 ©   (2011-03-29 17:43) [6]

> [5] samalex2504   (29.03.11 16:03)
Насколько я понимаю вы создали 5 основных широченных (полей на стописят) таблиц и раз заказчик "желаю фильтровать по всему" тянете все поля как параметры в хранимку, которая неизвестно пока зачем нужна. Так?
А "вкладки" у вас наверное называются "Приказы", "Постановления" и т.п.?


 
samalex2504   (2011-03-29 17:47) [7]

Да, примерно так.


 
samalex2504   (2011-03-29 17:55) [8]

Заказчики до этого вели базу в экселе. В нескольких файлах несвязанных друг с другом. Я написал базу, нормализовал.
Но они постоянно требуют, чтобы возможность фильтрации была по каждому полю. Еще будет необходимость работы через низкоскоростные каналы связи. Поэтому я не хочу качать лишние данные через сеть, а фильтровать их прямо на сервере.


 
Loginov Dmitry ©   (2011-03-29 21:10) [9]


> Но они постоянно требуют, чтобы возможность фильтрации была
> по каждому полю. Еще будет необходимость работы через низкоскоростные
> каналы связи. Поэтому я не хочу качать лишние данные через
> сеть, а фильтровать их прямо на сервере.


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

При таком подходе объем пересылаемых данных скорее всего будет минимальным, нагрузка на сервер будет мизерной, необходимость в хранимых процедурах с сотней параметров попросту отпадет.


 
Игорь Шевченко ©   (2011-03-29 21:42) [10]

Sergey13 ©   (29.03.11 17:43) [6]


> Насколько я понимаю вы создали 5 основных широченных (полей
> на стописят) таблиц


ради интереса посмотрел на результаты запроса
SELECT table_name,count(*)
 FROM user_tab_columns
GROUP BY table_name
ORDER BY 2 DESC

стало стыдно :)
143 максимум, в первой десятке все больше 80


 
samalex2504   (2011-03-30 11:08) [11]

У меня сейчас в программе сделано 5 вкладок(по каждой на таблицу) с фильтрами и гридами. Фильтры во вкладках работают независимо.
А нужно все связать.
Хотел через связь таблиц в Delphi - MasterSourse. Но это воэможно только для IBTable. Я использую IBQuery для вывода данных.


 
Виталий Панасенко   (2011-03-30 11:55) [12]


> Но это воэможно только для IBTable. Я использую IBQuery
> для вывода данных.

глупости


 
samalex2504   (2011-03-30 12:27) [13]


> Виталий Панасенко   (30.03.11 11:55) [12]
>
>
> > Но это воэможно только для IBTable. Я использую IBQuery
> > для вывода данных.
>
> глупости
>


Объясни. Глупости - что хотел использовать ? или связывание можно реализовать на IBQuery ?


 
Виталий Панасенко   (2011-03-30 12:29) [14]


> или связывание можно реализовать на IBQuery ?

конечно возможно, DataSource тебе в помощ


 
Sergey13 ©   (2011-03-30 14:15) [15]

> [11] samalex2504   (30.03.11 11:08)
> У меня сейчас в программе сделано 5 вкладок(по каждой на
> таблицу) с фильтрами и гридами.

А можешь сказать чем, например, вторая отличается от, например, четвертой ПРИНЦИПИАЛЬНО?
ИМХО у тебя не правильно спроектирована структура документооборота как такового. И ты уже начал огребать по полной плоды такого проектирования.


 
Виталий Панасенко(дом)   (2011-03-30 23:54) [16]

та сделано ж по аногии M$ Excel



Страницы: 1 вся ветка

Форум: "Базы";
Текущий архив: 2014.11.23;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.48 MB
Время: 0.002 c
6-1234378196
smail
2009-02-11 21:49
2014.11.23
как передать сообщение клиенту?


2-1384954189
Няшечка
2013-11-20 17:29
2014.11.23
Локальный TCP прокси с пакетным едитингом


15-1395400552
Дмитрий СС
2014-03-21 15:15
2014.11.23
Подключение двигателя по CanOpen(Cia 402)


2-1385310079
вова
2013-11-24 20:21
2014.11.23
Invalid Pointer operation


2-1384998017
MonoLife
2013-11-21 05:40
2014.11.23
ToolButton в ToolBar всегда по правому краю.





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский