Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

В selecte обработать строку. [D7, Firebird]


Страницы:   1 2

worldmen ©   (2006-08-22 12:40:00) 

Использую Firebird, локальный, и IBExpert.
Есть таблица клиентов, в ней фамилии имя и отчество полностью в отдельных полях.
Нужно что бы фамилия имя отчество выводилось в таком формате : Иванов И.И.
Т.е. имя отчество было сокращенным.
Я не нашел такой функции в Firebirdе.


worldmen   (2006-08-22 17:22:00) [1]

> Сергей М. ©   (22.08.06 16:43) [29]
Спасибо.


Сергей М.   (2006-08-22 16:43:00) [2]


> worldmen ©   (22.08.06 16:15) [28]


На ibase.ru уже был ? Там есть предостаточно инф-ции о UDF: что это такое, с чем едят и т.д. и т.п.


worldmen   (2006-08-22 16:15:00) [3]

СПАСИБО. С substring разобрался.
А вот насчет UDF-библиотек просветите.
Никогдо не использовал. Я перепутал с ХП.


Виталий Панасенко   (2006-08-22 15:33:00) [4]

computed by(fam||substring(im from 1 for 1)||'.'||substring(ot from 1 for 1)||'.')?


Сергей М.   (2006-08-22 15:04:00) [5]


> Val ©   (22.08.06 14:53) [21]
>
> не к данному случаю.


А ты замерь производительность PSQL-функции SubString и соответствующих ее аналогов в UDF или на клиенте (на достаточно большом НД) - сразу все встанет на свои места) .. А потом я объясню, почему наблюдается такая ощутимая разница в результатах замеров.


> yaral ©   (22.08.06 14:56) [22]
> Наример обрабатывает и преобразует данные?


Все зависит от условий, в которых будет востребованы обработка и преобразование.


Dok   (2006-08-22 15:02:00) [6]


> Все что сервер делает плохо (точнее - хуже клиента), клиенту
> не нужно)

золотые слова :)


Dok   (2006-08-22 15:01:00) [7]


> Дело твое, только вот постоянно делать это там где потребуется.
> .. это только в простых приложениях на таблицу клиентов
> используется один DataSet.
> В чуть посложней оно часто нужно такое поле. И в сетках,
>  и в Edit-ах, и в отчетах всевозможных, и что везде делать
> из трех полей? Заняться нечем больше?

не понял. Как три поля этому мешают? Ну сделай на клиенте конкатенацию и покажи юзверю. В чем трабл? А заставлять сервер парсить, то что с клиента и дет, когда клиент это может во много раз лучше - нефиг.


Dok   (2006-08-22 14:59:00) [8]


> все что делает сервер, нужно клиенту - посоветуете все на
> клиенте и лопатить? :)
>

почитайте внимательно [6]


yaral   (2006-08-22 14:56:00) [9]

> Сергей М. ©   (22.08.06 14:52) [20]
Наример обрабатывает и преобразует данные?


Val   (2006-08-22 14:53:00) [10]

не к данному случаю.


Сергей М.   (2006-08-22 14:52:00) [11]


> все что делает сервер, нужно клиенту


Все что сервер делает плохо(точнее - хуже клиента), клиенту не нужно)


Val   (2006-08-22 14:43:00) [12]

>[14] Dok   (22.08.06 14:11)
все что делает сервер, нужно клиенту - посоветуете все на клиенте и лопатить? :)


yaral   (2006-08-22 14:41:00) [13]

> Dok   (22.08.06 14:26) [17]
Дело твое, только вот постоянно делать это там где потребуется... это только в простых приложениях на таблицу клиентов используется один DataSet.
В чуть посложней оно часто нужно такое поле. И в сетках, и в Edit-ах, и в отчетах всевозможных, и что везде делать из трех полей? Заняться нечем больше?


Dok   (2006-08-22 14:26:00) [14]


> yaral ©   (22.08.06 14:19) [16]

Мдя... А чуток подумать и сделать 3 поля? И потом если надо на клиенте конкатенацию сделать?


yaral   (2006-08-22 14:19:00) [15]

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

CREATE TRIGGER PERSPHI_IU FOR PERSPHI
ACTIVE BEFORE INSERT OR UPDATE POSITION 1
AS
DECLARE VARIABLE VLINI VARCHAR(30);
DECLARE VARIABLE VLFS VARCHAR(100);
BEGIN
 VLINI = '';
 VLFS  = '';

 IF (NOT NEW.L IS NULL) THEN
   BEGIN
     NEW.L=F_LTRIM(F_RTRIM(NEW.L));
     IF (NEW.L<>'') THEN
       BEGIN
         NEW.L = UPPERFIRST(NEW.L);
         VLINI = NEW.L;
         VLFS  = NEW.L;
       END
   END

 IF (NOT NEW.F IS NULL) THEN
   BEGIN
     NEW.F=F_LTRIM(F_RTRIM(NEW.F));
     IF (NEW.F<>'') THEN
       BEGIN
         NEW.F = UPPERFIRST(NEW.F);
         IF (:VLINI<>'') THEN
           BEGIN
             VLINI = :VLINI || ' ' || F_LEFT(NEW.F, 1) || '.';
             VLFS  = :VLFS  || ' ' || NEW.F;
           END
       END
   END

 IF (NOT NEW.S IS NULL) THEN
   BEGIN
     NEW.S=F_LTRIM(F_RTRIM(NEW.S));
     IF (NEW.S<>'') THEN
       BEGIN
         NEW.S = UPPERFIRST(NEW.S);
         IF ((:VLINI<>'') AND (NEW.F<>'')) THEN
           VLINI = :VLINI || F_LEFT(NEW.S, 1) || '.';
           VLFS  = :VLFS  || ' ' || NEW.S;
       END
   END

 UPDATE PERS
 SET SNAME = :VLINI,
     NAME  = :VLFS
 WHERE PERS_ID = NEW.PERS_ID;
END


F_LTRIM и прочие из FreeUDF


atruhin   (2006-08-22 14:14:00) [16]

Вообще начиная с FB 1.5, SUBSTRING - работает.


Dok   (2006-08-22 14:11:00) [17]


> я спрашиваю - зачем заниматься этой ерундой на клиенте,
> если это, обработанное соответственно, поле можно просто
> добавить в обзор, который и будет отображать форма?

потому что эта ерунда нужна клиенту. серверу нефиг этим заниматься.


Val   (2006-08-22 14:08:00) [18]

тогда уж - вашого...
я спрашиваю - зачем заниматься этой ерундой на клиенте, если это, обработанное соответственно, поле можно просто добавить в обзор, который и будет отображать форма?


Dok   (2006-08-22 13:58:00) [19]

Вашэ пытання


Val   (2006-08-22 13:46:00) [20]

>[10] Dok   (22.08.06 13:37)
чего именно?


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо