În acest ghid vizual practic vă arată cum să adăugați suport pentru masa de denormalized „Comenzi“ și „Detalii comandă“ în baza de date exemplificativă „Northwind“, adăugând o coloană într-un tabel „Comenzi“, care stochează valoarea totală a comenzii. Deși denormalizarea datelor nu este de obicei o soluție optimă, ea poate îmbunătăți performanța atunci când creează rapoarte.
Multe proceduri de prelucrare a datelor sunt asociate cu aceleași responsabilități și variază în anumite detalii, cum ar fi o cheie primară specifică pentru rândul pe care doriți să îl modificați. Puteți repeta aceleași acțiuni în mai multe macrocomenzi de date. Cu toate acestea, dacă găsiți o acțiune comună, le puteți elimina și plasați într-un macro de date numit, care pot fi apelate de la alte macro-uri. Pentru a gestiona aceste evenimente pot crea o serie de date macro numit, și apoi apelați-l de la evenimente sau poate crea un macro și să o asociați cu datele din tabelul de evenimente. Dacă planificați totul în avans, veți putea să simplificați munca prin crearea de macro-uri numite.
Având în vedere că scopul exemplului este să obțineți totalul cumulat al valorii totale a acestei comenzi, trebuie să adăugați macroul în evenimentele de date "După actualizare", "După inserare" și "După ștergere" din tabelul "Detalii comandă". Actualizări Macro valoarea unui nou câmp în tabelul „Comenzi“, domeniul monetar „OrderTotal“.
În plus, baza de date exemplu „Northwind“ conține date în tabelul „Informații privind comanda“, și aveți nevoie de un mod de a combina datele și inițializa câmpul „OrderTotal“ din tabelul „Comenzi“. Acest lucru înseamnă că aveți nevoie pentru a crea un macro de date care pot fi apelate pentru a inițializa câmpul „OrderTotal“. În acest ghid practic, începeți prin a crea o bază de date eșantion, apoi adăugați o macrocomandă numită autonomă. După aceea, creați un macro numit, care poate fi numit de la evenimentul „După actualizarea“ „După introducerea“ și „după îndepărtarea“ pentru „masă Detalii comandă“.
Crearea unei baze de date eșantion
Pentru a crea o bază de date eșantion, utilizați următoarea procedură.
Crearea unei baze de date eșantion
În lista de șabloane disponibile, în secțiunea Office Șabloane, faceți clic pe Exemple.
Selectați calea și faceți clic pe butonul Descărcare. Pentru a descărca și instala o copie curată a bazei de date eșantion.
Faceți clic pe butonul Activare conținut din bara de mesaje. dacă vi se solicită să includeți codul VBA în eșantionul bazei de date.
Acceptați ID-ul de conectare prestabilit în caseta de dialog Conectare. apoi faceți clic pe Sign In.
Modificați tabelul "Comenzi"
Pentru a testa macrocomenzile de date, trebuie să adăugați un câmp nou în tabelul Comenzi. Pentru a modifica acest tabel, utilizați următoarea procedură.
Modificați tabelul "Comenzi"
Extindeți lista derulantă din partea de sus a panoului de navigare și selectați Tip obiect din lista opțiunilor disponibile.
Extindeți tab-ul Tabele. faceți clic dreapta pe tabelul Comenzi și selectați Designer.
În partea de jos a listei de câmp, în coloana "Nume câmp", introduceți "OrderTotal". În câmpul "Date type", introduceți "Monetar".
Salvați datele și închideți constructorul.
Actualizarea câmpului "Ordonare totală"
Pentru câmpul OrderTotal din tabelul Comenzi, trebuie să adăugați un macro de date care poate inițializa valoarea câmpului pe baza setului curent de rânduri din tabelul "Detalii comandă". Macroul trebuie să treacă prin toate rândurile din tabelul "Comenzi", iar pentru fiecare dintre ele găsiți setul corespunzător de rânduri din tabelul "Detalii de comandă". Bazat pe ele, un macro este de a calcula suma domenii „Cantitate * [unitate de preț]“ și salvați-l în rândul curent în „Comenzi“ de masă.
În panoul de navigare, faceți dublu clic pe tabelul Comenzi. să o deschidă. Faceți clic pe fila Tab de pe panglică. Apoi, în grupul de nume de macro-uri, selectați elementul macro numit. În cele din urmă, faceți clic pe Creați o macrocomandă numită (consultați Figura 1).
Fig. 1. Creați o macrocomandă numită
În constructorul macro, selectați acțiunea pentru fiecare înregistrare în caseta combo. Vă permite să treceți prin toate rândurile sursei de date. În caseta combo, selectați câmpul de lângă acțiune. Pentru fiecare înregistrare, selectați Comenzi. În Fig. 2 arată constructorul macro în acest pas.
Fig. 2. Căutarea în rânduri
În caseta Combo, în zona Pentru fiecare înregistrare, selectați Setare variabilă și creați o variabilă numită varTotalPurchased și o valoare de 0, așa cum se arată în Fig. 3.
Fig. 3. Creați o variabilă locală în care să stocați rezultatele
Cutia Combo este gol în acțiune macro ForEachRecord selectați DlyaKazhdoyZapisi (astfel încât să puteți trece prin toate rândurile de ordine în tabelul „Informații privind comanda“). Introduceți valorile așa cum se arată în Fig. 4, folosind IntelliSense pe măsură ce tastați. Observați câmpul "Alias" - această valoare creează un set de numere de rând, astfel încât să puteți face referire la mai multe rânduri. Numele setului este arbitrar.
Fig. 4. Selectarea unui set de linii de potrivire în tabelul "Detalii comandă"
În caseta combo pentru a selecta acțiunea DlyaKazhdoyZapisi ZadatLokPeremennuyu și introduceți expresia, așa cum se arată în Fig. 5. Această acțiune acumulează suma pentru fiecare element din tabelul "Detalii comandă".
Fig. 5. Acumularea sumei totale a ordinului
Pentru a închide macroul și a actualiza valoarea din tabelul Comenzi, faceți clic pe macroul Extreme ForEachRecord. În caseta combo din partea de jos a comenzii, faceți clic pe Editare înregistrare. Apoi, în caseta combo, selectați Setare câmp. În câmpul Nume, introduceți „Zakazy.OrderTotal“, iar în caseta Value data, selectați varTotalPurchased, așa cum este prezentat în Fig. 6.
Fig. 6. Setarea valorii câmpului OrderTotal utilizând o variabilă locală
Ați creat o macrocomandă de date numită care trece prin toate rândurile din tabelul "Comenzi". Pentru fiecare rând în macro tabelul găsește toate rândurile care se potrivesc în tabelul „Informații privind comanda“, se acumulează valori ale câmpurilor „Numărul“ și „prețul pe unitate“, stochează suma într-o varTotalPurchased variabilă și în cele din urmă exemplare valoarea din OrderTotal în tabelul „Comenzi “.
Crearea unei macrocomenzi pentru a rula un macro de date
Pe panglică, faceți clic pe butonul Salvați. introduceți numele macrocomenzii UpdateTotals. apoi faceți clic pe Închidere.
Pentru a porni macroul și pentru a inițializa toate câmpurile OrderTotal, faceți clic pe butonul Nou de pe panglică. iar în Macro și grup de coduri, faceți clic pe Macro.
Din meniul pop-up Add New Macro, selectați acțiunea Start DataStrip. apoi selectați macrocomanda Orders.UpdateTotals. așa cum se arată în Fig. 7, salvați macro-ul ca UpdateTotals și faceți clic pe butonul Executare.
După finalizarea macrocomenzii, selectați tabelul "Comenzi" și asigurați-vă că câmpul "Ordine totală" conține acum suma totală de achiziție pentru comandă.
Puteți crea o interogare a rezultatelor pentru a verifica rezultatele.
Fig. 7. Creați o macrocomandă pentru a rula macroul de date
Creați un macro numit UpdateTotal
Fiecare dintre aceste date eveniment ( „După introducerea“, „După actualizare,“ și „După îndepărtarea“) ar trebui să se ocupe în mod esențial aceeași sarcină - care au nevoie pentru a calcula o nouă sumă pentru adăugarea (sau scădere pentru evenimentul „După ce faceți upgrade“ și „După ștergeți ") pe baza valorii câmpului" Ordonare totală ", apoi efectuați modificările necesare. Întrucât toate macrocomenzile pentru evenimente necesită capabilități comune, este logic să creați o macrocomandă numită care poate fi apelată de la evenimente de date. Pentru aceasta, deschideți tabelul "Detalii comandă" și creați o macrocomandă numită, ca în cazul tabelului "Comenzi". Această macrocomandă necesită doi parametri. Faceți clic pe Creare parametru de două ori și specificați valorile, după cum se arată în Fig. 8.
Fig. 8. Crearea parametrilor macro
În caseta combo, selectați comanda Find Statement și inserați parametrii, așa cum se arată în Fig. 9. Această comandă permite să găsiți în tabelul "Comenzi" o linie corespunzătoare valorii OrderID, care este transferată în macro.
Fig. 9. Căutarea ordinii potrivite
În macro Macro sarcina de căutare, adăugați macrocomandă ModifyRecord, și în acesta adăugați câmpul Setare acțiune. Setați valorile parametrilor macrocomenzilor, așa cum se arată în Fig. 10. Aceste valori sunt setate pentru câmpul Ordine. OrderTotal este valoarea veche, mărită de valoarea transmisă acestei macrocomenzi.
Fig. 10. Actualizarea câmpului "Ordonare totală"
Pe panglică, faceți clic pe butonul Salvați. salvați noua macrocomandă numită UpdateTotal. apoi faceți clic pe Închidere.
Manipularea evenimentului "După inserare"
Când introduceți o nouă linie în tabelul "Detalii de comandă", trebuie să adăugați câmpul "Cantitate * [preț unitar]" rândului corespunzător din tabelul "Comenzi". Pentru a face acest lucru, asigurați-vă mai întâi că tabelul "Detalii comandă" este deschis și selectat. Pe panglică, faceți clic pe fila Tabel. Apoi, în grupul Evenimente, selectați evenimentul După inserare. Aceasta creează o macrocomandă numită Acces după introducerea unui nou rând în tabelul "Detalii comandă". În noua macrocomandă, selectați macro Macro Start și introduceți parametrii, așa cum se arată în Fig. 11. Pe panglică, faceți clic pe Închidere și salvați macrocomanda când vi se solicită.
Fig. 11. Crearea macrocomenzii de date "după inserare"
După actualizare,
Pentru a gestiona evenimentul "După actualizare", este nevoie de puțin mai mult efort. Trebuie să scăpați valoarea veche asociată cu informațiile despre comandă și apoi să adăugați noua valoare. Accesul furnizează valorile inițiale pentru fiecare câmp ca proprietăți ale obiectului Vechi din această macrocomandă de date, astfel încât să puteți lucra cu valori curente și vechi.
Pe panglică, faceți clic pe După actualizare. Pentru a crea macro la eveniment, și în caseta listă, selectați dacă și utilizați funcția de actualizare construit. Pentru a determina dacă câmpurile "Preț per unitate" sau "Cantitate" au fost actualizate în actualizarea curentă. Dacă nu, nu schimbați tabelul "Comenzi". În Fig. 12 arată expresia care trebuie introdusă în constructorul macro.
Fig. 12. Specificarea unei expresii condiționate pentru macro-ul "If"
În macro If, apelați comanda Macro Start MacroData, specificând parametrii, așa cum se arată în Fig. 13. Rețineți că această acțiune scade valoarea veche pentru suma extinsă. Veți adăuga suma extinsă a liniei curente în pasul următor.
Fig. 13. scăderea sumei prelungite vechi a liniei curente
Terminați macrocomanda adăugând ultimul apel macro-ului Macro Start și adăugând suma extinsă curentă (a se vedea Figura 14).
Fig. 14. Adăugarea unei valori extinse a liniei curente
Pe panglică, faceți clic pe butonul Salvați. apoi faceți clic pe Închidere.
Prelucrarea evenimentului "După ștergere"
Când ștergeți rândul din tabelul "Detalii comandă", trebuie să scăpați suma veche extinsă, ca în exemplul anterior. Repetați pașii din secțiunea anterioară, dar selectați evenimentul "După ștergere" și adăugați un singur apel macro pentru a rula aplicația DataMark. Când ați terminat, setările vor arăta ca în fig. 15. Faceți clic pe Închidere și salvați macrocomanda când vi se solicită.
Fig. 15. scăderea valorii prelungite a rândului șters