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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 26.03.2007, 14:12   #1  
Iskatel is offline
Iskatel
Участник
 
86 / 10 (1) +
Регистрация: 18.09.2006
Столкнулся с такой ситуацией.

Есть таблица Table_1 с полем Version (не ключевое поле), в нем находятся данные:
Version #1
Version #1
Version #1
Version #1
Version #2.000
Version #2.000
Version #2.000
Version #3
Version #2.000

На форме Form1 связанной с таблицей Table_1 нужно чтобы отображалось только:
Version #1
Version #2.000
Version #3
Т.е. нужно чтобы отображались версии без повторения.

Создавать еще одну таблицу для хранения результата не хочется.

Хотел бы услышать советы.
Старый 26.03.2007, 14:18   #2  
Cheb is offline
Cheb
Участник
Лучший по профессии 2017
 
138 / 13 (1) ++
Регистрация: 22.09.2002
Адрес: Ростов-на-Дону -> Москва
Как вариант, промаркируйте предварительно нужные записи с помощью MARK и установите MARKEDONLY(TRUE).
Старый 26.03.2007, 14:24   #3  
RedFoxUA is offline
RedFoxUA
Участник
Аватар для RedFoxUA
 
60 / 10 (1) +
Регистрация: 25.10.2006
Цитата:
Сообщение от Programmer Посмотреть сообщение
Столкнулся с такой ситуацией.

На форме Form1 связанной с таблицей Table_1 нужно чтобы отображалось только:
Version #1
Version #2.000
Version #3
Т.е. нужно чтобы отображались версии без повторения.

Создавать еще одну таблицу для хранения результата не хочется.
Если таблица не очень большая (кол-во записей не очень велико), то можно взять туже таблицу как временную и при открытии формы заполнять ее уникальными значениями. Правда непонятно что дальше будет делаться с данными.

Не очень конечно красиво - получится полный перебор
Старый 26.03.2007, 14:33   #4  
Greggy_imported is offline
Greggy_imported
Участник
Аватар для Greggy_imported
 
291 / 10 (1) +
Регистрация: 24.09.2004
если версия сиквеловская - написать хп по выбору уникальных данных... вернее не уникальных а чтоб не повторялись
Старый 26.03.2007, 15:32   #5  
romeo is offline
romeo
Участник
Аватар для romeo
 
564 / 10 (2) +
Регистрация: 31.03.2004
Я бы перед запуском формы набил временную таблицу уникальными значениями этого поля и на этой таблице открыл форму. Если данные править не надо. Если данные нужно редактировать, то на OnOpenForm опять же набил временную таблицу и переписал бы триггера OnFind, OnNext формы, где сказал бы, что отображать нужно только то, что имеется во временной таблице.
Старый 26.03.2007, 15:40   #6  
DA_NEAL is offline
DA_NEAL
Участник
Аватар для DA_NEAL
Лучший по профессии 2017
Лучший по профессии 2009
 
788 / 54 (3) ++++
Регистрация: 05.08.2002
Адрес: Королев
ну если SQL то можно вьюху сделать и подцепить в nav.
__________________
Want to believe...
Старый 26.03.2007, 15:54   #7  
mRazik is offline
mRazik
Участник
Аватар для mRazik
 
20 / 10 (1) +
Регистрация: 09.02.2007
Соглашусь, что лучшим вариантом будет создать временную переменную этой таблицы Table_2 и добавлять в нее строки,
хотя в связи с тем, что поле с версиями не ключевое фильтрация может занять много времени.
if Table_1.find('-') then
repeat
Table_2.setrange(Version,Table_1.Version);
If not Table_2.FIND('-') then
begin
Table_2.INIT;
Table_2.Version := Table_1.Version;
Table_2.INSERT;
end;
until Table_1.NEXT = 0;

Советую добавить ключь Version в таблицу и установить SETCURENTKEY;

P.S. Заранее извеняюсь за допущенные ошибки
Старый 26.03.2007, 16:14   #8  
RedFoxUA is offline
RedFoxUA
Участник
Аватар для RedFoxUA
 
60 / 10 (1) +
Регистрация: 25.10.2006
Цитата:
Сообщение от mRazik_technologia Посмотреть сообщение
Советую добавить ключь Version в таблицу и установить SETCURENTKEY;
Добавить (расширить) подходящий ключик, а потом использовать - хорошее дополнение к решению.
Старый 28.03.2007, 23:57   #9  
balashov is offline
balashov
Участник
Аватар для balashov
 
78 / 10 (1) +
Регистрация: 01.09.2005
Цитата:
Сообщение от Programmer Посмотреть сообщение
Столкнулся с такой ситуацией.

Есть таблица Table_1 с полем Version (не ключевое поле), в нем находятся данные:
Version #1
Version #1
Version #1
Version #1
Version #2.000
Version #2.000
Version #2.000
Version #3
Version #2.000

На форме Form1 связанной с таблицей Table_1 нужно чтобы отображалось только:
Version #1
Version #2.000
Version #3
Т.е. нужно чтобы отображались версии без повторения.

Создавать еще одну таблицу для хранения результата не хочется.

Хотел бы услышать советы.
Тут еще один вариант созрел, извратиться на FlowField
Определимся со структурой:
1. Поле «Key» - ключевое
2. Поле «Version» - не ключевое

Делаем:
1. Заводим новое поле FlowField с названием «KeyVersion»
Тип поля такой же как и в поле Key
Формула:
Метод = Max
Таблица = Table_1
Поле = Key
Фильтр Таблицы = Version=Field(Version)
Таким образом получим уникальность по максимальному ключу в срезах поля Version.
2. В форме:
В триггере OnOpenForm Код
Код:
CALCFIELDS(KeyVersion);
SETRANGE (Key , KeyVersion);
Все.
Работать будет более менее шустро
Старый 29.03.2007, 09:24   #10  
balashov is offline
balashov
Участник
Аватар для balashov
 
78 / 10 (1) +
Регистрация: 01.09.2005
Цитата:
Сообщение от Programmer Посмотреть сообщение
Столкнулся с такой ситуацией.

Есть таблица Table_1 с полем Version (не ключевое поле), в нем находятся данные:
1. А еще можно аналитику всяку разну засунуть в FlowField и получить уникальность Version в срезах FlowFilter
2. Можно придумать как формочку красиво ресетить и заново фильтровать по аналитике

Можно получить неплохое ср-во анализа, альтернативу запросам.
 


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

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

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