![]() |
|
|
![]()
|
|
| VladBD |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 105 Регистрация: 19.11.2006 Репутация: 1 Всего: 5 |
Есть такая задача:
в БД (dbf, mdb или другого локального плана) с обязательными полями ID, ФИО (или ИОФ, ИО, ФИ) нужно создать несколько служ. полей типа Фамилия, Имя, Отчество, Пол и т.д. - определить фрагменты из поля ФИО и разнести в соответствующие поля. Процесс определения должен происходить с учетом всяких настроек обработки и с использованием общего справочника на FireBird. Может даже нужно будет реализовывать автоматический разбор и ручной (при неудачном автоматическом). Вопрос как грамотно все это реализовать? сейчас крутится в таком виде
1) Можно попробовать в ХП сделать - но для анализ фрагментов строк трудновато будет работать в ХП. 2) Хочется подойти со стороны ООП. Может класс реализовать, но как он поможет в выполнении обработки полей БД, т.к. конечный рез-тат все равно нужно записывать в исходные таблички |
|||
|
||||
| remax |
|
|||
|
Доцент ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 686 Регистрация: 7.4.2002 Где: Украина, Харьков Репутация: нет Всего: 5 |
VladBD, для начала, определись с проблемой - нужно решить задачу, нужно с выпендросом переписать уже работающий алгоритм, и.т.д... В зависимости от этого будут разные советы.
P.S. Если уже есть готовое решение, зачем за уши подтягивать ООП? Добавлено через 12 минут и 9 секунд С точки зрения теории баз данных, я думаю, все должно осуществляться в самой базе. т.е. используя триггеры и хранимые процедуры. Как только добавляешь новую запись или меняешь поле ФИО - запускаешь свой парсер. А чтобы проще было (локалка у тебя тоже FB) - используй UDF... -------------------- Как бы ты не старался быть хорошим и правильным человеком с принципами и уважительным отношением к другим, всегда найдется кто-то, кто бросит в тебя какашку |
|||
|
||||
| VladBD |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 105 Регистрация: 19.11.2006 Репутация: 1 Всего: 5 |
remax, нужно переписать работающий алгоритм. Выпендрос хочу организовать в том, что будет компонент, его свойства будут через RTTI отображаться в настройке обработки (там только пол проставить или по полной прогнать, или обращение в виде дательного падежа сделать типа "Дорогому Ивану Николаевичу") - заодно и разобраться во всем этом надо (переписать для самообучения) ...
UDF - тоже вариант, но мне надо заливать данные и выгружать потом рез-таты обработки. Вопрос: Как мне понять когда закончился парсинг при инсерте блока в 50000 строк при включенных триггерах? - хотя они сразу в пределах транзакции отрабатываются... так? да и FB база сетевая - т.е. основная прога обработки коннектится к ней... Это сообщение отредактировал(а) VladBD - 8.1.2008, 14:52 |
|||
|
||||
| remax |
|
||||
|
Доцент ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 686 Регистрация: 7.4.2002 Где: Украина, Харьков Репутация: нет Всего: 5 |
Да, конечно
Честно говоря, мне кажется это лишним. P.S. А зачем так сложно - две базы? Типа не хочешь испортить работающую базу? - так скопируй и на копии развлекайся... Это сообщение отредактировал(а) remax - 8.1.2008, 15:17 -------------------- Как бы ты не старался быть хорошим и правильным человеком с принципами и уважительным отношением к другим, всегда найдется кто-то, кто бросит в тебя какашку |
||||
|
|||||
| VladBD |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 105 Регистрация: 19.11.2006 Репутация: 1 Всего: 5 |
основная БД на FB - там находятся справочники. А остальные таблицы даются на обработку (их может быть нескончаемое кол-во) - вот приходишь ты со своей табличкой в EXCEL и говоришь вот сграбил где-то данные и хочу разнести по полям и каждому написать "Уважаемый г-н Иванов". Моя прога цепляет твою табличку, и забивает нужные тебе поля парсинговыми данными... но суть такова - что рез-тат я тебе должен выгрузить в исходный формат (в этом случае EXCEL). |
|||
|
||||
| remax |
|
|||
|
Доцент ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 686 Регистрация: 7.4.2002 Где: Украина, Харьков Репутация: нет Всего: 5 |
Так как ты описываешь - это совершенно отдельная задача, не требующая дополнительных справочников. Но, предположим, для чего-то справочники на сервере нужны. Тогда бы я, все равно временно импортировал данные в таблицу на сервер. Максимально быстро производил бы преобразования. Затем экспорт в нужный формат и уничтожение временных данных. Сам подумай, если для обработки локальной инфы тебе нужна информация с сервера - ты все нужное тянешь на клиента. А учитывая, что речь идет о десятках тысяч записей - получается довольно накладно.
-------------------- Как бы ты не старался быть хорошим и правильным человеком с принципами и уважительным отношением к другим, всегда найдется кто-то, кто бросит в тебя какашку |
|||
|
||||
| VladBD |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 105 Регистрация: 19.11.2006 Репутация: 1 Всего: 5 |
Ну вот смотри я выбираю такое решение:
- импорт данных на сервак Id, FIO - стоит триггер на добавление, редактирование данных - он запускает некоторую UDF - экспорт результата и уничтожение временных данных вопрос в том как мне при выполнении UDF раскидать значения по 3 полям? наверное придется хранимой процедурой делать... Это сообщение отредактировал(а) VladBD - 8.1.2008, 19:51 |
|||
|
||||
| remax |
|
|||
|
Доцент ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 686 Регистрация: 7.4.2002 Где: Украина, Харьков Репутация: нет Всего: 5 |
стоп.
В UDF - ты можешь записать дополнительные, пользовательские функции, которых нет в FB. Например, для твоего парсинга. Вызов этой функции делаешь в триггере. В нем же, используешь результат для внесения в нужные поля. все. -------------------- Как бы ты не старался быть хорошим и правильным человеком с принципами и уважительным отношением к другим, всегда найдется кто-то, кто бросит в тебя какашку |
|||
|
||||
| VladBD |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 105 Регистрация: 19.11.2006 Репутация: 1 Всего: 5 |
буду разбираться. просто функция возвратит одно значение... но мысль обхода уже есть...
попробую - отпишусь... |
|||
|
||||
| remax |
|
|||
|
Доцент ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 686 Регистрация: 7.4.2002 Где: Украина, Харьков Репутация: нет Всего: 5 |
Остальный значения вернешь через параметры
-------------------- Как бы ты не старался быть хорошим и правильным человеком с принципами и уважительным отношением к другим, всегда найдется кто-то, кто бросит в тебя какашку |
|||
|
||||
![]()
|
| Правила форума "Delphi: Базы данных и репортинг" | |
|
|
Запрещено: 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами Обязательно указание: 1. Базы данных (Paradox, Oracle и т.п.) 2. Способа доступа (ADO, BDE и т.д.)
FAQ раздела лежит здесь! Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Vit, Петрович. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Delphi: Базы данных и репортинг | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |