Показать сообщение отдельно
Старый 11.05.2009, 10:44   #6  
IKA is offline
IKA
Участник
 
359 / 65 (3) ++++
Регистрация: 15.03.2006
Цитата:
Сообщение от Ruff Посмотреть сообщение
Вообще говоря, делать такие проверки (значения поля с константой) в коде - моветон. Я бы рекомендовал следующее:
  • создать свой Enum, который будет отвечать за выбор этих двух таблиц. Что-то типа MyVendType::T1 и MyVendType::T2 (с осмысленными названиями, разумеется);
  • добавить в таблицу T1 поле с типом MyVendType и единовременно (job-ом) заполнить это поле на основе поля vendAccount в соответствии с Вашей логикой. При этом не забыть модифицировать код, выполняемый при добавлении записей в таблицу (инициализация поля MyVendType);
  • добавить к таблице T1 два отношения (relation): одно с самой собой, а второе - с таблицей T2. Эти отношения должны иметь тип связи "поле фиксировано" и строиться на поле MyVendType. (В первом случае связь будет MyVendType == 0, во втором - MyVendType == 1);
  • добавить в упомянутые отношения связи по первичным ключам (однозначно идентифицирующие запись);
  • на форме создать три источника данных: родительский T1 и два подчиненных: T1 и T2, и привязать их к разным TabPage, как советовал ZVV выше.
Получилось на первый взгляд громоздко, но зато: 1) не навешиваются доп. действия на linkActive (может я не прав, но имхо, нагружать этот метод - это совсем крайний случай), и 2) используется стандартный механизм динамического выбора источника данных (если это можно так назвать).

PS: если мое описание покажется сумбурным, посмотрите для примера отношения на таблице LedgerJournalTrans
Спасибо, но логика скорей там такая, что, если данные в T2 есть, то показывать данные для вендора из нее, если нет, то в тех же полях показывать данные из T1.
То есть не от конкретного знаечния вендора зависит, а от того, есть ли в T2 для него записи.