Czy można w kontrolce Dane tabelaryczne uzależnić wybór wartości z listy od drugiej listy?

image_pdfimage_print

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ł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

 

Konfiguracja kontrolki Dane tabelaryczne

 

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:

Karta obiegu z uzupełnionymi kontrolkami

 

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

 

Rozpoczynasz pracę z Comarch BPM (dawniej DMS) i chcesz dowiedzieć się, jak korzystać z programu? A może masz już podstawową wiedzę o Comarch BPM (dawniej DMS) i chcesz dowiedzieć się więcej?

Sprawdź Szkolenia Comarch BPM!

 

Czy ten artykuł był pomocny?