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 | Historia zamówień | Historia zamówień |
Nowe zamówienie | Nowe zamówienie | Pojedyncza linia | Identyfikator klienta | Klient_ID1 |
Pojedyncza linia | Nazwa klienta | Nazwa_klienta1 |
Podformularz | Szczegóły zamówienia | Szczegóły zamówienia |
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:
// Fetch customer records from the database based on the specified Customer ID
database_records = Orders_Database[Customer_ID == input.Customer_ID1];
// Assign the customer name from the fetched record
input.Customer_Name1 = database_records.Customer_Name;
// If a customer record is found, fetch data from the subform
if(Customer_Name1.isEmpty() == false)
{
input.Order_Details.clear(); // Clear subform of any previous entries
for each line_item in database_records.Order_History // Iterate through each subform row to fetch their values
{
// Create subform rows with fetched data
row1 = New_Order.Order_Details();
row1.Product_Name1=line_item.Product_Name;
row1.Quantity1=line_item.Quantity;
rowcollection = Collection();
rowcollection.insert(row1);
input.Order_Details.insert(rowcollection);
}
}
// If a customer record is not found, clear any previous entries
else
{
input.Order_Details.clear();
}
Zobacz jak to działa