Борьба с размножением строк.

Clarion, Clarion 7

Модератор: Дед Пахом

Правила форума
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
Ответить
SSTA
Бывалый
Сообщения: 52
Зарегистрирован: 03 Февраль 2006, 5:41
Откуда: Хабаровск

Борьба с размножением строк.

Сообщение SSTA »

Здравствуйте.
CW 6.1 9032 ABC TPS

Имеем 2 таблицы:

ААА File1 ...
KeyCod1 Key(Cod1)...
record
Cod1 long
Cod2 long
...
end
end

BBB File2 ...
KeyCod1 Key(Cod1)...
record
Cod1 long
Name1 string
....
end
end

Связь в Table Scheme по Relaitionship Custom AAA:Cod1 = BBB:Cod1 (хотя пробовал и как Related по dct)

Обработка:
Browse таблицы ААА по KeyCod1 + Additional Sort Field по BBB:Name. Так вот: с доп. сортировкой записи в browse плодятся при скролинге вверх и вниз, пр PgDown, PgUp, CtrlPgDn и CtrlPgUp все восстанавливается. Естественно, при отсутствии Add Sort Field все нормально.
Чего ей надобно?
Спасибо
Александр Т.
Аватара пользователя
Игорь Столяров
Ветеран движения
Сообщения: 8032
Зарегистрирован: 07 Июль 2005, 10:19
Откуда: г. Ростов-на-ДоМу
Благодарил (а): 28 раз
Поблагодарили: 96 раз

Сообщение Игорь Столяров »

Ей надобно наличие Primary Key в таблицах ... ;)
SSTA
Бывалый
Сообщения: 52
Зарегистрирован: 03 Февраль 2006, 5:41
Откуда: Хабаровск

Сообщение SSTA »

Безобразия в browse закончились, но сортировка по Add Sort Field не работает (ради чего, собственно, все и затевалось) как я понимаю, в силу уникальности primary ключа. То есть по primary key таблицы ААА записи располагаются в жестком порядке и Add Sort Fielld'у нечего сортировать. Так получается?
А.Т.
C уважением, Александр Т.
Аватара пользователя
Игорь Столяров
Ветеран движения
Сообщения: 8032
Зарегистрирован: 07 Июль 2005, 10:19
Откуда: г. Ростов-на-ДоМу
Благодарил (а): 28 раз
Поблагодарили: 96 раз

Сообщение Игорь Столяров »

Нет. Никто не говорил о том, что нужно обязательно сортировать записи в Browse по Primary Key. Он должен быть в таблицах (для того, что бы при построении Browsу шаблон мог однозначно идентифицировать записи и избежать дублирования строк в списке) - а сортировать записи в Browse Вы можете по любому своему ключу, в т.ч. и с Add Key ...
SSTA
Бывалый
Сообщения: 52
Зарегистрирован: 03 Февраль 2006, 5:41
Откуда: Хабаровск

Сообщение SSTA »

Раз по любому, то и по никакому тоже, стало быть...
Усложняю задачу... На самом деле в browse 3 закладки (ну, там, разные фильтровые условия и пр.). Первая закладка прекрасно правил слушается, сортируется как надо (без какого бы то ни было ключа, только по Add Sort Field), а следующие (2 и 3) закладки начинают чудить, то есть двоить записи при условиях, одинаково описанных в Conditional Behaviour для з. 1, 2 и 3. Если в Init указано Select(?Tab2), то хорошо себя ведет соответственно, Tab2 и тд.
C уважением, Александр Т.
Аватара пользователя
Игорь Столяров
Ветеран движения
Сообщения: 8032
Зарегистрирован: 07 Июль 2005, 10:19
Откуда: г. Ростов-на-ДоМу
Благодарил (а): 28 раз
Поблагодарили: 96 раз

Сообщение Игорь Столяров »

Никогда не сталкивался ... :)
Проверь и установи опцию Global -> Classes -> Browse -> Configure -> Active Invisible
(т.е. установи заполнение списков при инициализации на нивидимых закладках).
Аватара пользователя
Andrew™
SQL профи
Сообщения: 651
Зарегистрирован: 05 Июль 2005, 16:32
Откуда: Москва, Зеленоград

Сообщение Andrew™ »

Игорь Столяров писал(а):Ей надобно наличие Primary Key в таблицах ... ;)

либо я отстал от жизни, ОБЯЗАТЕЛЬНАЯ уникальность в ключе для Browse нужна была только при работе с SQL, для TPS можно и без этого было работать.
lsgsoftware
Ветеран
Сообщения: 311
Зарегистрирован: 08 Июль 2005, 22:04

Сообщение lsgsoftware »

Попробуй так
В точке ?CurrentTab(от Coditional Behavior)
добавить код
clear(xxx:record)
brw1.resetfrombuffer()
SSTA
Бывалый
Сообщения: 52
Зарегистрирован: 03 Февраль 2006, 5:41
Откуда: Хабаровск

Сообщение SSTA »

lsgsoftware писал(а):Попробуй так
В точке ?CurrentTab(от Coditional Behavior)
добавить код
clear(xxx:record)
brw1.resetfrombuffer()
Спасибо, помогло.
C уважением, Александр Т.
Ответить