Dodaj wiersze podformularza z dynamicznymi danymi z innego podformularza

Dodaj wiersze podformularza z dynamicznymi danymi z innego podformularza

Wymóg            

Automatycznie dodawaj wiersze do podformularza i wypełniaj go danymi dynamicznymi pobranymi z innego podformularza.

Przypadek użycia  

Formularz o nazwie Baza zamówień zawiera dane klienta i jego częste zamówienia w podformularzu. Mamy inny formularz, Nowe Zamówienie, za pomocą którego klienci zamawiają produkty. Gdy klient wprowadzi swój identyfikator klienta, jego częste zamówienia są pobierane z formularza Bazy zamówień i wypełniane w podformularzu formularza Nowe zamówienie.

Kroki do naśladowania 

1. Utwórz dwa formularze z następującymi szczegółami:
Formularz
Nazwa łącza formularza
Typ pola
Nazwa pola
Nazwa łącza pola
Baza zamówień
Zamówienia_Baza danych
Nazwa
Nazwa klienta
Nazwa_klienta
Pojedyncza linia
Identyfikator klienta
Identyfikator klienta
Podformularz
  • Pojedyncza linia
  • Numer
Historia zamówień
  • Nazwa produktu
  • Ilość
Historia zamówień
  • Nazwa produktu
  • Ilość
Nowe zamówienie
Nowe zamówienie
Pojedyncza linia
Identyfikator klienta
Klient_ID1
Pojedyncza linia
Nazwa klienta
Nazwa_klienta1
Podformularz
  • Pojedyncza linia
  • Numer
Szczegóły zamówienia
  • Nazwa produktu
  • Ilość
Szczegóły zamówienia
  • Nazwa produktu1
  • Ilość1

2. Utwórz przepływ pracy z następującymi szczegółami :

Przepływ pracy zostanie wyzwolony, gdy klient wprowadzi wartość w polu Identyfikator klienta, więc wybieramy Zdarzenie formularza jako Wprowadzone przez użytkownika pole.

3. Kliknij Dodaj nową akcję.

4. Zapisz następujący fragment kodu Deluge w edytorze Deluge: 
  1. // Fetch customer records from the database based on the specified Customer ID
  2. database_records = Orders_Database[Customer_ID == input.Customer_ID1];

  3. // Assign the customer name from the fetched record
  4. input.Customer_Name1 = database_records.Customer_Name;

  5. // If a customer record is found, fetch data from the subform
  6. if(Customer_Name1.isEmpty() == false)
  7. {
  8.  input.Order_Details.clear(); // Clear subform of any previous entries
  9.  for each line_item in database_records.Order_History // Iterate through each subform row to fetch their values
  10.  {
  11.                     // Create subform rows with fetched data
  12.  row1 = New_Order.Order_Details();
  13.  row1.Product_Name1=line_item.Product_Name;
  14.  row1.Quantity1=line_item.Quantity;
  15.  rowcollection = Collection();
  16.  rowcollection.insert(row1);
  17.  input.Order_Details.insert(rowcollection);
  18.  }
  19. }

  20. // If a customer record is not found, clear any previous entries
  21. else 
  22. {
  23.  input.Order_Details.clear();
  24. }

Zobacz jak to działa