AXForum  
Вернуться   AXForum > Microsoft Dynamics NAV > NAV: Программирование
All
Забыли пароль?
Зарегистрироваться Правила Справка Пользователи Сообщения за день Поиск

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 15.06.2006, 14:42   #12  
Advisor is offline
Advisor
Участник
 
33 / 13 (1) ++
Регистрация: 07.09.2005
Интересный перебор. Правильно ли я понял, что надо создать функцию преобразующую исходный фильтр в противоположный?
Если да, то можно сваять что-то вроде:

Код:
//функция
OppositeFilter(PFilter : Text[100]) : Text[100]

CompleteFilter:='';
PFilter:=CONVERTSTR(PFilter,',','|');
WHILE STRPOS(PFilter,'|')<>0 DO BEGIN
  ORBlock:=COPYSTR(PFilter,1,STRPOS(PFilter,'|')-1);
  PFilter:=DELSTR(PFilter,1,STRPOS(PFilter,'|'));
  IF STRPOS(ORBlock,'..')<>0 THEN BEGIN
	BRange:=COPYSTR(ORBlock,1,STRPOS(ORBlock,'..')-1);
	ERange:=COPYSTR(ORBlock,STRPOS(ORBlock,'..')+2,STRLEN(ORBlock));
	IF CompleteFilter<>'' THEN CompleteFilter+='&';
	CompleteFilter+='('+'<'+BRange+'|'+'>'+ERange+')'
  END ELSE BEGIN
	IF CompleteFilter<>'' THEN CompleteFilter+='&';
	CompleteFilter+='('+'<>'+ORBlock+')';
  END;
END;
IF PFilter<>'' THEN BEGIN
  IF STRPOS(PFilter,'..')<>0 THEN BEGIN
	BRange:=COPYSTR(PFilter,1,STRPOS(PFilter,'..')-1);
	ERange:=COPYSTR(PFilter,STRPOS(PFilter,'..')+2,STRLEN(PFilter));
	IF CompleteFilter<>'' THEN CompleteFilter+='&';
	CompleteFilter+='('+'<'+BRange+'|'+'>'+ERange+')'
  END ELSE BEGIN
	IF CompleteFilter<>'' THEN CompleteFilter+='&';
	CompleteFilter+='('+'<>'+PFilter+')';
  END;
END;
EXIT(CompleteFilter);
 


Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 16:11.