W kontrolce Dane tabelaryczne (DT) nie ma obecnie możliwości uzależnienia zawartości jednej listy od drugiej (brak obsługi kolekcji list zależnych wewnątrz tabeli). Mechanizm „obserwowania pól” nie działa pomiędzy kolumnami w obrębie tego samego wiersza.
Rozwiązanie:
Można zrealizować ten scenariusz, przenosząc proces wyboru wartości poza tabelę. Należy dodać dwie niezależne kontrolki typu Lista oraz przycisk typu Własna akcja, który zasili tabelę danymi.
Kroki konfiguracji:
1. Dodanie pól wyboru: Poza kontrolką Dane tabelaryczne należy umieścić dwie niezależne listy (np. Dział i Pracownik), konfigurując między nimi standardową zależność (obserwowanie pól). 2. Konfiguracja Własnej akcji: Należy dodać przycisk (np. „Dodaj”), który będzie pełnił funkcję wyzwalacza zapisu. Kontrolka ta nie zawiera kodu. 3. Inicjowanie wartości w tabeli: W ustawieniach kontrolki Dane tabelaryczne (zakładka Inicjowanie wartości) należy zdefiniować zapytanie SQL, które po kliknięciu przycisku pobierze wartości z pól pomocniczych i wstawi je jako nowy wiersz do tabeli.
Przykład kodu SQL dla kontrolki Dane tabelaryczne
IF isnull ( @^DocumentId@ ,0) <>0 Begin If @^SenderControlName@ ='Dodaj' Begin declare @dcdLogin varchar (30); IF isnull ( @Pracownik_Id@ ,0) <>0 Begin select @dcdLogin= DCD_Login from do.DF_ConfOSDictionary where dcd_id= @Pracownik_Id@ IF exists (select * from @Uprawnienia@ where [Login]=@dcdLogin) Return insert into @Uprawnienia@ values (@dcdLogin, @Pracownik_Text@ ,0) select * from @Uprawnienia@ END END END

Przykład kodu SQL dla kontrolki Dział:
select dcd_id, DCD_Name1 from do.DF_ConfOSDictionary where dcd_type=1 and DCD_Archival=0
Przykład kodu SQL dla kontrolki Pracownik, która obserwuje kontrolkę Dział:
select t2.dcd_id, t2.dcd_Name1 from do.DF_ConfOSTree as t1 inner join do.DF_ConfOSDictionary as t2 on t1.DCO_DCDId=t2.DCD_ID inner join do.DF_ConfOSTree as t3 on t1.DCO_DCOId=t3.DCO_ID left join do.DF_ConfOSDictionary as t4 on t4.DCD_ID=t3.DCO_DCDId where t1.DCO_Archival=0 and t2.dcd_type=2 and t4.DCD_Name1=@Dzial_Text@
Efekt końcowy:

Kliknij tutaj, aby pobrać przykład definicji typu obiegu




