Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > БД в Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 13.08.2013, 19:16   #1
xxbesoxx
Участник клуба
 
Регистрация: 10.08.2010
Сообщений: 1,389
По умолчанию ORACLE Delphi отпбрасивать все пробел TRIM

Здравствуйте ребята. делаю объединения 2 поля ! так что между ними был пробел = [ Это пробел требование ] на пример схеме HR

Код:
SELECT manager_id ||' '|| department_id Fullid
FROM employees
Выходное данных получается в таком виде

Fullid
-----------------------------------
101 10
100 20
101 40
ххх хх
ххх хх
ххх хх

Это поля через Delphi из Edit хочу что бы фильтр работал без пробел вот это фильтр

Код:
procedure TForm1.BitBtn1Click(Sender: TObject);
 const
  FieldName = '[FULLID]';
   Var
    i : integer;
begin
  OraQuery1.Filtered := False;
   With TStringList.Create do
   try
     StrictDelimiter := true;
     Delimiter := '$';
     CommaText := Trim(Edit1.Text);
     for i := 0 to Count - 1 do
       Strings[i] := FieldName + ' = ' + QuotedStr(Strings[i]);
     OraQuery1.Filter := StringReplace(DelimitedText, Delimiter, ' OR ', [rfReplaceAll]);
   finally
     Free ;
   end;
   OraQuery1.Filtered := True;

end;
Как здесь использовать функция TRIM что бы заставит программу ! когда в Edit буду набрать 10110 без пробел и он работал ?
xxbesoxx вне форума Ответить с цитированием
Старый 13.08.2013, 20:07   #2
Yurk@
Участник клуба
 
Аватар для Yurk@
 
Регистрация: 19.12.2007
Сообщений: 1,100
По умолчанию

Код:
SELECT manager_id ||' '|| department_id Fullid, manager_id ||department_id F
FROM employees
и в итоге выводить Fullid, но фильтрировать по F
На форуме: Помогаю за спасибо
ICQ\Skype: Это моё личное время ...
Yurk@ вне форума Ответить с цитированием
Старый 13.08.2013, 20:18   #3
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 19,042
По умолчанию

Цитата:
когда в Edit буду набрать 10110 без пробел и он работал
Да и набранное в Edit "10110", что мешает для фильтра преобразовать в "101 10"?
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 13.08.2013, 20:36   #4
xxbesoxx
Участник клуба
 
Регистрация: 10.08.2010
Сообщений: 1,389
По умолчанию

Цитата:
Сообщение от Аватар Посмотреть сообщение
Да и набранное в Edit "10110", что мешает для фильтра преобразовать в "101 10"?
Ребята это задача такой . и мне интересно как это реализовать ? Как решит это проблему ? что в Edit 10110 набрал без пробел ?

Цитата:
Сообщение от Yurk@ Посмотреть сообщение
Код:
SELECT manager_id ||' '|| department_id Fullid, manager_id ||department_id F
FROM employees
и в итоге выводить Fullid, но фильтрировать по F
Да выводит так.... если здесь ||' '|| не будет пробел, выходное данных будет без пробел

Fullid
-----------------------------------
10110
10020
10140
ххххх
ххххх
ххххх

и фильтр будет нормально работать . Но это тоже требование что выходное данных был вот так

Fullid
-----------------------------------
101 10
100 20
101 40
ххх хх
ххх хх
ххх хх

и фильтр работал из Edit без пробел................ Вот такой беда

как это задачу решить ? вот здесь я зависаю .... Пожалуйста спасайте меня

Последний раз редактировалось Stilet; 14.08.2013 в 08:30.
xxbesoxx вне форума Ответить с цитированием
Старый 13.08.2013, 20:54   #5
Yurk@
Участник клуба
 
Аватар для Yurk@
 
Регистрация: 19.12.2007
Сообщений: 1,100
По умолчанию

ну я же написал:
Цитата:
и в итоге выводить Fullid, но фильтрировать по F
т.е. у тебя получится не 1, а 2 поля
тебе нужно всего лишь в эдите отображать одно поле, а фильтровать по другому. это будет проще всего.
есть и другие, более извращенные методы)
На форуме: Помогаю за спасибо
ICQ\Skype: Это моё личное время ...

Последний раз редактировалось Yurk@; 13.08.2013 в 20:56.
Yurk@ вне форума Ответить с цитированием
Старый 13.08.2013, 22:29   #6
xxbesoxx
Участник клуба
 
Регистрация: 10.08.2010
Сообщений: 1,389
По умолчанию

Yurk@ фильтровать по другому. это будет проще всего = Пример сможете показать как ? на это фильтре , Я магу передать несколько значения 10110, 1020,10110 - вот таком образе
xxbesoxx вне форума Ответить с цитированием
Старый 14.08.2013, 08:35   #7
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,792
По умолчанию

Проще всего будет описать событие OnFilterRecord в котором сравнивать подходит ли запись или нет.
Код:
procedure TForm1.OraQuery1FilterRecord(DataSet: TDataSet; var Accept: Boolean);
begin
  Accept := pos(Edit.Text,StringReplace(DataSet[0].AsString,' ','',[rfreplaceall]))<>0;
end;
Тогда не нужно задавать свойство Filter. Просто включай фильтр, и эта проца сработает для каждой записи.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 14.08.2013, 08:48   #8
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,238
По умолчанию

ко всему вышесказанному (я с предложенными вариантами и советами согласен) могу ещё добавить:
никто не мешает вытягивать в запросе и объединение полей с пробелом (это для отображения) и объединение полей БЕЗ пробела (данное поле запроса не отображать, использовать только для фильтрации)...
Serge_Bliznykov вне форума Ответить с цитированием
Старый 14.08.2013, 19:21   #9
xxbesoxx
Участник клуба
 
Регистрация: 10.08.2010
Сообщений: 1,389
По умолчанию

Ребята спасибо всем, за помощь , за совет..... Тема можно закрыть
xxbesoxx вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Warning: trim() expects Dante5 PHP 10 16.03.2013 02:21
Trim 0creator0 Microsoft Office Word 5 03.10.2011 17:43
C#, Oracle и все, все, все... luna662 C# (си шарп) 5 06.05.2011 10:28
Записать функцию заменяющую (массиве символов) все числа на пробел. fsi Паскаль, Turbo Pascal, PascalABC.NET 2 01.06.2010 20:09
Как заменить обычний пробел на неразрывный пробел Jaroslav Microsoft Office Excel 2 05.05.2010 11:57