Applies ToAccess pentru Microsoft 365 Access 2024 Access 2021 Access 2019

Selectați orice subiect de mai jos pentru a afla despre gestionarea comenzilor în ediția Pentru dezvoltatori Northwind. 

Această ediție pentru dezvoltatori a aplicației eșantion Comenzi Northwind este mai avansată decât cea a ediției Starter. Acesta se extinde pe schema bazei de date (tabelele care sunt utilizate) și oferă acum caracteristici complexe suplimentare. Intenția aici este de a vă prezenta caracteristicile Microsoft Access, de a nu rula nicio firmă specifică.

  • Lista comenzi este disponibilă din Panglică. Are câteva opțiuni de filtrare și hyperlinkuri pentru a deschide fiecare comandă.

  • Atât Lista de comenzi, cât și Panglica au un buton Adăugare comandă pentru a deschide o nouă comandă necompletată.

  • Într-un formular Comandă nouă, selectați un client existent din lista verticală. În acel moment, sunt selectate numele angajatului și noua stare. Data comenzii este deja completată. Rata de impozitare este citită din tabelul SystemSettings și setările implicite ale stării fiscale din înregistrarea Client.

  • Comenzile noi și comenzile de cumpărare sunt adăugate în lista MRU (Cele mai recent utilizate) din Panglică. Aflați mai multe prin intermediul secțiunii Listă MRU din acest articol

  • Lăsați deocamdată necompletate Data expedierii și Data plătite .

  • Pentru a adăuga comenzi pentru clienții noi, introduceți numele firmei și apăsați pe Tab. Formularul Detalii firmă se va deschide pentru a termina înregistrarea clientului nou. Apoi închideți-o și continuați cu comanda. Noua firmă va fi acum în lista verticală Client .

  • Pentru a adăuga elemente la o comandă, selectați o Categorie de produse și Produs pentru această comandă și introduceți Cantitate. Prețul unitar este completat, iar Preț este calculat printr-o expresie.

  • Avansați starea comenzii și mutați comanda în fluxul de lucru din > nou facturat > Livrate > Închis utilizând butoanele din partea de sus a formularului Comandă.

  • Facturarea poate avea loc doar dacă produsul este alocat pentru comanda respectivă. Dacă un element de linie este în starea Fără cotații sau În comandă, va apărea o eroare de validare. Utilizatorul are posibilitatea să creeze o comandă de cumpărare pentru acel produs și să o primească, iar starea articolului comenzii va fi ajustată la Alocat.

  • Pentru a livra o comandă, trebuie introduse taxa de livrare și expeditorul. Dacă uitați să faceți acest lucru, va apărea o eroare de validare. Taxa de livrare este adăugată la Total comandă.

  • Comenzile neshippede pot fi șterse utilizând butonul Ștergere comandă.

  • Imposibil de modificat elementele liniei de comandă după ce comanda a depășit starea Nou .

  • În versiunea Northwind Starter, procesul de comandă este incredibil de simplu (de exemplu, inventarul este întotdeauna disponibil, nu se termină niciodată și nu trebuie achiziționat niciodată). Acum, în această ediție Dev, un proces mai realist tratează cel puțin câteva astfel de probleme. Rețineți că afișăm caracteristicile access și cele mai bune practici, nu implementăm o aplicație din lumea reală. 

  • Dovezile că nu implementăm o aplicație reală aici includ faptul că datele calendaristice nu sunt validate. Prin urmare, este posibil să introduceți date ilogice, cum ar fi o Dată de expediere care este înainte de Data comenzii. 

Această secțiune tratează detaliile de implementare demne de reținut ale formularului de comandă, frmOrderDetails:

Formularul de comandă preia datele dintr-o interogare simplă qryOrder (consultați proprietatea RecordSource ). Se recomandă să bazați un formular de introducere a datelor pe o interogare simplă cu un singur tabel. Rețineți că nu este necesar să includeți tabelul OrderDetails în această interogare. Detaliile comenzii sunt gestionate de subformular.

Formularul OrderList poate deschide mai multe instanțe ale formularului Order (Comandă). Acest lucru este util, deoarece reprezentanții de vânzări se ocupă de numeroase întreruperi și poate fi necesar să deschidă o altă comandă în timp ce lucrează la prima comandă sau să o compare cu o a treia comandă. Tehnica este documentată aici.

Câmpurile ID diverse își obțin valorile din casetele combo cu două coloane: o coloană ID ascunsă și o coloană Descriere vizibilă. Aceste casete combo sunt legate la interogări simple pe două coloane: consultați proprietatea RowSource .

Butoanele fluxului de lucru au o logică de business asociată, obligând utilizatorul să avanseze comanda de la 1 la 4. Echipa de dezvoltare Northwind este conștientă de faptul că unele companii pot utiliza reguli diferite. Acest lucru va avea ca rezultat o implementare diferită pentru evenimentele de clic pe buton, precum și reanalizarea momentului în care o comandă este definită și atunci când o comandă poate fi ștearsă încă.

Subformularul sfrmOrderDetails este legat la o interogare mai complexă. Motivele pentru care se discută în secțiunea Casete combo în cascadă de mai jos. Căutăm inventarul în evenimentul Form_AfterUpdate atunci când rândul este salvat și putem rula interogări de bază de date mai puternice.

ProductCategory și Product sunt casete combo în cascadă: selectarea din prima (ProductCategory) îngustează următoarea casetă combo la înregistrările de produs fiu care se potrivesc. Tehnica utilizată aici este descrisă în detaliu mai jos.

Când salvați o înregistrare, câmpurile obligatorii trebuie completate. În ediția Starter, permitem ca comportamentul implicit Access să aibă loc; în această ediție Dev este implementată o tehnică mai prietenoasă cu utilizatorul. Tehnica utilizată aici este descrisă în detaliu mai jos.

Pentru fiecare articol de linie de comandă, stocul disponibil este verificat și starea este setată în mod corespunzător. Ideea de bază a acestei caracteristici este descrisă aici.  

CASETE COMBO ÎN CASCADĂ

Implementarea listelor verticale Categorie produs și Produs ca casete combo în cascadă este complicată, deoarece Access nu acceptă această caracteristică în afara casetei. În această tehnică sunt necesari patru pași:

Formularul trebuie să fie în modul Forms continuu (nu Foaie de date). Casetele text se suprapun peste porțiunea de text din fiecare casetă combo, lăsând vizibile doar săgețile verticale. 

Interogarea sursă de înregistrări a formularului, qryOrderLineItems, utilizează tabelul OrderDetails per usual, dar, de asemenea, se asociază cu tabelele Products și ProductCategories pentru a alege ProductName și ProductCategoryName. Cele două casete text suprapuse sunt legate la aceste câmpuri.

The RowSource for the Products combobox looks back at cboProductCategories to return only products for the category selected in that combobox. Rețineți sintaxa "[Formular]! [cboProductCategories]" în expresia criteria, care este mai flexibilă decât Forms explicit! Nume Formular! Sintaxa ControlName, care face referire la un formular după nume.

După ce selectați o categorie de produse în caseta combo Unbound ProductCategories , evenimentul său AfterUpdate setează caseta combo Produse la prima valoare din lista sa. Acest lucru creează un rând nou în RecordSource a formularului, care populează NumeOră astfel încât să poată fi afișat prin caseta text suprapusă.  

VALIDARE

Utilizarea codului de validare implementat în ediția Northwind Dev necesită doar 3 linii de cod:

  • În Form_BeforeUpdate:    Anulare = ValidateForm(Me)

  • În Form_AfterUpdate și Form_Current:     ValidateForm_RemoveHighlights eu

A face cod foarte auto-conținute este un model bun pentru a urma, deoarece îl face ușor de a implementa peste tot. Dezvoltatorii profesioniști pot duce acest lucru și mai departe, de exemplu, utilizând subclasificarea formularelor. (Acest lucru depășește obiectivele pentru Dev Northwind.)

Obiectul formular este transmis codului de validare auto-conținut pentru validare. Apoi verifică colecția de câmpuri RecordsetClone subiacentă pentru a afla ce controale sunt legate la câmpurile obligatorii și verifică dacă au o valoare. Dacă nu, acestea sunt evidențiate.

Aveți nevoie de ajutor suplimentar?

Doriți mai multe opțiuni?

Explorați avantajele abonamentului, navigați prin cursurile de instruire, aflați cum să vă securizați dispozitivul și multe altele.

Comunitățile vă ajută să adresați întrebări și să răspundeți la întrebări, să oferiți feedback și să primiți feedback de la experți cu cunoștințe bogate.