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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 17.10.2005, 12:29   #21  
romeo is offline
romeo
Участник
Аватар для romeo
 
564 / 10 (2) +
Регистрация: 31.03.2004
Нужно отработать алгоритм в таблице или есть форма, построенная на этой таблице и в ней нужно отображать записи по фильтру? Если форма, можно переписать триггеры OnFind OnNext. При этом критерий отбора может быть насколько угодно сложным.
Старый 19.10.2005, 15:32   #22  
e-statik is offline
e-statik
Участник
 
102 / 11 (1) +
Регистрация: 06.07.2005
2 romeo:
А если нужно иметь возможность править записи, а не только смотреть? Ещё кучу тригеров переписать, я правильно понимаю?
Старый 19.10.2005, 16:03   #23  
romeo is offline
romeo
Участник
Аватар для romeo
 
564 / 10 (2) +
Регистрация: 31.03.2004
Цитата:
Сообщение от e-statik
2 romeo:
А если нужно иметь возможность править записи, а не только смотреть? Ещё кучу тригеров переписать, я правильно понимаю?
Триггера в навижене вообще единственное место, куда пишется код ) И переписали мы этих триггеров уже немеряно. Так что .. можно и еще кучу переписать. Потом, почему нельзя править записи в такой форме? Единственное - они могут выпадать из фильтра, если перестанут удовлетворять условиям. Я говорю про форму, построенную на нормальной, не временной таблице.
Старый 19.10.2005, 17:01   #24  
e-statik is offline
e-statik
Участник
 
102 / 11 (1) +
Регистрация: 06.07.2005
Цитата:
Сообщение от romeo
Я говорю про форму, построенную на нормальной, не временной таблице.
А можно примерец привести, как на OnFind OnNext это сделать и без временной таблицы?? Спасибо.
Старый 19.10.2005, 17:35   #25  
e-statik is offline
e-statik
Участник
 
102 / 11 (1) +
Регистрация: 06.07.2005
И ещё задача. Примитивная структура:
Таблица1 содержит записи некоторой сущности, есть ключевое поле...
Таблица1 связана с Таблицей2 как "один ко многим".
Таблица2 содержит список пользователей для каждой записи из Таблицы1.
Пусть пользователи берутся из Таблицы3, где каждый пользователь уникален, впрочем эта таблица уже не важна в рамках задачи...

А теперь простой вопрос: как получить записи Таблицы1, к которым я - Пользователь_X имею отношение в Таблице2?
Старый 19.10.2005, 17:50   #26  
zub is offline
zub
Участник
 
40 / 10 (1) +
Регистрация: 23.08.2005
Цитата:
Сообщение от e-statik
Цитата:
Сообщение от romeo
Я говорю про форму, построенную на нормальной, не временной таблице.
А можно примерец привести, как на OnFind OnNext это сделать и без временной таблицы?? Спасибо.


<div class='CALtop'>C/AL</div><div class='CAL'>

OnFind
Exit(FormFind(Which));

OnNext
exit(FormNext(Steps));


FormFind(Which : Text[1024]) : Boolean
lrec.COPY(Rec);
IF NOT lrec.FIND(Which) THEN EXIT(FALSE);
IF Which='+' THEN
  li:=-1
ELSE
  li:=1;
WHILE NOT CheckFindRec(lrec) DO BEGIN
  lii:=lrec.NEXT(li);
  IF lii=0 THEN EXIT(FALSE);
END;
Rec:=lrec;
EXIT(TRUE);

FormNext(Steps : Integer) : Integer
lrec.COPY(Rec);
lrec:=Rec;
li:=0;
CASE TRUE OF
Steps>0:li:=1;
Steps<0:li:=-1;
END;
lRealStep:=0;
REPEAT
   lii:=lrec.NEXT(li);
   IF lii=0 THEN EXIT(lRealStep);
   IF CheckFindRec(lrec) THEN BEGIN
      lRealStep:=lRealStep+li;
      Rec:=lrec;
   END;
UNTIL lRealStep=Steps;
EXIT(lRealStep);
</div>

функция CheckFindRec возвращает TRUE для записей удовлетворяющих условию

Недостаток такого подхода - если интервал между записями удовлетворяющими условию достаточно большой, то будет ощутимое замедление вывода записей
Старый 19.10.2005, 17:52   #27  
romeo is offline
romeo
Участник
Аватар для romeo
 
564 / 10 (2) +
Регистрация: 31.03.2004
Можно в OnOpenForm() получить строку фильтра - набор ID сущностей для пользователя (фильтр на код пользователя в таблице 2 и получение кодов сущностей через палку из нее же) и зашить этот фильтр в какую-нить фильтргруппу при открытии. Если сущностей не особо много ..
Старый 19.10.2005, 18:40   #28  
e-statik is offline
e-statik
Участник
 
102 / 11 (1) +
Регистрация: 06.07.2005
Цитата:
Сообщение от romeo
Если сущностей не особо много ..
Мне стоило сразу в задаче это указать Много. Такой фильтр тут исключен.
Старый 16.11.2005, 10:05   #29  
e-statik is offline
e-statik
Участник
 
102 / 11 (1) +
Регистрация: 06.07.2005
Вал работы, только добрался до проверки этого кода.
Сходу добиться работоспособности кода у меня не получилось.

lrec - это локальная temp record?

У меня всегда отображается пустой список, и не важно что возвращает CheckFindRec - TRUE или FALSE
Старый 16.11.2005, 10:29   #30  
zub is offline
zub
Участник
 
40 / 10 (1) +
Регистрация: 23.08.2005
Цитата:
Сообщение от e-statik
Вал работы, только добрался до проверки этого кода.
Сходу добиться работоспособности кода у меня не получилось.

lrec - это локальная temp record?

У меня всегда отображается пустой список, и не важно что возвращает CheckFindRec - TRUE или FALSE
lrec- локальный RECORD физической таблицы, также как и REC
Старый 16.11.2005, 11:01   #31  
e-statik is offline
e-statik
Участник
 
102 / 11 (1) +
Регистрация: 06.07.2005
2 zub
Она временная или нет??

И REC - это не локал. record, а глобал...
Старый 16.11.2005, 15:31   #32  
zub is offline
zub
Участник
 
40 / 10 (1) +
Регистрация: 23.08.2005
Цитата:
Сообщение от e-statik
2 zub
Она временная или нет??

И REC - это не локал. record, а глобал...
lrec не временная, REC это REC самой формы
Старый 16.11.2005, 16:35   #33  
e-statik is offline
e-statik
Участник
 
102 / 11 (1) +
Регистрация: 06.07.2005
Да с REC-ом то всё понятно. Просто когда я увидел конструкции вроде
lrec.COPY(Rec);
lrec:=Rec;
решил, что такое стоит выполнять только с временной таблицей, думая что в противном случае это может внести изменения в реальные данные. Видимо нужно ещё почитать документацию

Спасибо! Код фунициклирует.
Вопрос такой: а есть ли при этом возможность данные править и чтобы изменения сохранялись?
Старый 16.11.2005, 16:43   #34  
romeo is offline
romeo
Участник
Аватар для romeo
 
564 / 10 (2) +
Регистрация: 31.03.2004
Цитата:
Сообщение от e-statik
решил, что такое стоит выполнять только с временной таблицей, думая что в противном случае это может внести изменения в реальные данные.
Ничто не внесет в реальные данные всякой ерунды, если не вызывать модифицирующих операторов ) Данные править в форме, с отброшенными таким способом записями можно - ибо ничто не мешает, если на форме не закрыто -)
Старый 16.11.2005, 17:18   #35  
zub is offline
zub
Участник
 
40 / 10 (1) +
Регистрация: 23.08.2005
Цитата:
Сообщение от e-statik
Да с REC-ом то всё понятно. Просто когда я увидел конструкции вроде
lrec.COPY(Rec);
lrec:=Rec;
решил, что такое стоит выполнять только с временной таблицей, думая что в противном случае это может внести изменения в реальные данные. Видимо нужно ещё почитать документацию

Спасибо! Код фунициклирует.
Вопрос такой: а есть ли при этом возможность данные править и чтобы изменения сохранялись?
Вообще-то такой целью не задавался.
Я думаю можно, скорее всего главное чтобы изменеия не коснулись значений полей по которым наложен фильтр, хотя не факт. Надо пробовать
Если будете эксперементировать, буду благодарен если сообщите результаты
Старый 16.11.2005, 17:29   #36  
romeo is offline
romeo
Участник
Аватар для romeo
 
564 / 10 (2) +
Регистрация: 31.03.2004
Цитата:
Сообщение от zub
Цитата:
Сообщение от e-statik
Да с REC-ом то всё понятно. Просто когда я увидел конструкции вроде
lrec.COPY(Rec);
lrec:=Rec;
решил, что такое стоит выполнять только с временной таблицей, думая что в противном случае это может внести изменения в реальные данные. Видимо нужно ещё почитать документацию

Спасибо! Код фунициклирует.
Вопрос такой: а есть ли при этом возможность данные править и чтобы изменения сохранялись?
Вообще-то такой целью не задавался.
Я думаю можно, скорее всего главное чтобы изменеия не коснулись значений полей по которым наложен фильтр, хотя не факт. Надо пробовать
Если будете эксперементировать, буду благодарен если сообщите результаты
Если изменятся значения полей, критичных при определенных условиях отбора, строки будут пропадать просто при хождении по записям.
Старый 16.11.2005, 17:35   #37  
e-statik is offline
e-statik
Участник
 
102 / 11 (1) +
Регистрация: 06.07.2005
Да, я поэкспериментирую с этим, правда незнаю как скоро это получится сделать.

Ещё раз спасибо!
Старый 16.11.2005, 17:38   #38  
zub is offline
zub
Участник
 
40 / 10 (1) +
Регистрация: 23.08.2005
Скорее всего если убрать COPY(REC) то все будет зависить от признака выдавать запись или нет при анализе lrec
Тогда будет всеравно какой фильтр наложен на форму, но не вижу этому применения, хотя гепотетически это возможно.
Старый 09.12.2005, 11:28   #39  
Malcom is offline
Malcom
Участник
 
4 / 10 (1) +
Регистрация: 07.08.2005
Цитата:
Сообщение от romeo Посмотреть сообщение
Если изменятся значения полей, критичных при определенных условиях отбора, строки будут пропадать просто при хождении по записям.
А не подскажете, что можно сделать, чтобы строки не пропадали? Поменять условия отбора?
Старый 09.12.2005, 18:47   #40  
romeo is offline
romeo
Участник
Аватар для romeo
 
564 / 10 (2) +
Регистрация: 31.03.2004
Цитата:
Сообщение от Malcom Посмотреть сообщение
Цитата:
Сообщение от romeo Посмотреть сообщение
Если изменятся значения полей, критичных при определенных условиях отбора, строки будут пропадать просто при хождении по записям.
А не подскажете, что можно сделать, чтобы строки не пропадали? Поменять условия отбора?
Не, ну наверное можно будет как-нить извратиться .. Держать записи, показанные при открытии во временном буфере и отображать ИЛИ удовлетворяющие условию ИЛИ имеющиеся в буфере .. Всегда можно что-то сделать.
 


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

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

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 07:29.
Powered by vBulletin® v3.8.5. Перевод: zCarot
Контактная информация, Реклама.