Log på med Microsoft
Log på, eller opret en konto.
Hej
Markér en anden konto.
Du har flere konti
Vælg den konto, du vil logge på med.

Vælg et emne nedenfor for at få mere at vide om administration af ordrer i Northwind Developer Edition. 

Denne Developer Edition af eksempelprogrammet Northwind Orders er mere avanceret end starterudgaven. Det udvides i databaseskemaet (de tabeller, der bruges) og indeholder nu yderligere avancerede funktioner. Hensigten heri er at introducere dig for funktionerne i Microsoft Access, ikke at drive en bestemt virksomhed.

  • Ordrelisten er tilgængelig fra båndet. Den har et par filterindstillinger og links til at åbne hver ordre.

  • Både ordrelisten og båndet har knappen Tilføj ordre for at åbne en ny tom rækkefølge.

  • Vælg en eksisterende kunde på rullelisten i formularen Ny ordre. På det tidspunkt vælges dit Medarbejdernavn og den nye status. Ordredatoen er allerede udfyldt. Momssats læses fra tabellen SystemSettings , og momsstatussen er standard fra kundeposten.

  • Nye ordrer og indkøbsordrer føjes til MRU-listen (Senest anvendte) på båndet. Få mere at vide via mru-listeafsnittet i denne artikel

  • Lad Forsendelsesdato og Betalt dato være tomme indtil videre.

  • Hvis du vil tilføje ordrer til nye kunder, skal du angive firmanavnet og gå til tabulatortasten. Formularen Firmadetaljer åbnes for at færdiggøre den nye kundepost. Luk den derefter, og fortsæt med ordren. Det nye firma vises nu på rullelisten Kunde .

  • Hvis du vil føje varer til en ordre, skal du vælge en Produktkategori og Produkt for denne ordre og angive Antal. Enhedspris udfyldes, og Kurs beregnes af et udtryk.

  • Fremfør ordrestatus, og flyt ordren gennem arbejdsprocessen fra Ny > Faktureret > Leveret > Lukket ved hjælp af knapperne øverst i ordreformularen.

  • Fakturering kan kun ske, hvis produktet er allokeret til den ordre. Hvis en linjevare er i statussen Ikke på lager eller På ordre, opstår der en valideringsfejl. Brugeren kan oprette en indkøbsordre for det pågældende produkt og modtage den, og ordrevarens status justeres til Allokeret.

  • Hvis du vil sende en ordre, skal speditøren og forsendelsesgebyret angives. Hvis du glemmer at gøre det, opstår der en valideringsfejl. Forsendelsesgebyret føjes til ordretotalen.

  • Ikke-indstillede ordrer kan slettes ved hjælp af knappen Slet ordre.

  • Ordrelinjeelementer kan ikke ændres, når ordren er forbi statussen Ny .

  • I Northwind Starter-versionen er ordreprocessen utroligt enkel (f.eks. lager er altid tilgængeligt, løber aldrig tør og skal aldrig købes). Nu, i denne Dev udgave, en mere realistisk proces løser i det mindste nogle sådanne problemer. Husk, at vi fremviser Access-funktioner og bedste fremgangsmåder og ikke implementerer et program i den virkelige verden. 

  • Beviser for, at vi ikke gennemfører en virkelig anvendelse her, omfatter, at datoer ikke valideres. Det er derfor muligt at angive ulogiske datoer, f.eks. en forsendelsesdato, der ligger før ordredatoen. 

Dette afsnit omhandler vigtige implementeringsoplysninger om ordreformularen, frmOrderDetails:

Ordreformularen henter sine data fra en simpel forespørgsels-qryOrder (se egenskaben Postkilde ). Det er bedst at basere en dataindtastningsformular på en simpel forespørgsel med én tabel. Bemærk, at det ikke er nødvendigt at medtage tabellen Ordrespecifikationer i denne forespørgsel. Ordreoplysninger håndteres af underformularen.

Formularen Ordreliste kan åbne flere forekomster af ordreformularen. Dette er praktisk, fordi sælgere håndterer masser af afbrydelser og muligvis skal åbne en anden ordre, mens de arbejder på den første ordre, eller sammenligner den med en tredje ordre. Teknikken er dokumenteret her.

De forskellige id-felter får deres værdier fra kombinationsfelter med to kolonner: en skjult id-kolonne og en synlig Beskrivelse-kolonne. Disse kombinationsfelter er bundet til simple forespørgsler med to kolonner: Se egenskaben Rækkekilde .

Arbejdsprocesknapperne har forretningslogik tilknyttet, så brugeren tvinges til at fremføre ordren fra 1 til 4. Northwind Development-teamet er opmærksom på, at nogle virksomheder kan bruge forskellige regler. Dette vil derefter resultere i en anden implementering af knapklikhændelser samt en ny overvejelse af, hvornår en ordre er endelig, og hvornår en ordre stadig kan slettes.

Underformularen sfrmOrderDetails er bundet til en mere kompleks forespørgsel. Årsagerne til dette er beskrevet i afsnittet Kaskadevise kombinationsbokse nedenfor. Vi søger efter lager i Form_AfterUpdate begivenhed, når rækken gemmes, og vi kan køre mere effektive databaseforespørgsler.

ProductCategory og Product are Cascading comboboxes: at vælge fra den første (ProductCategory) indsnævrer den næste til matchende underordnede produktposter. Den teknik, der bruges her, er beskrevet i detaljer nedenfor.

Når du gemmer en post, skal de påkrævede felter udfyldes. I Starter-udgaven lader vi Access-standardfunktionsmåden ske. i denne Dev-udgave implementeres en mere brugervenlig teknik. Den teknik, der bruges her, er beskrevet i detaljer nedenfor.

For hver ordrelinjevare kontrolleres det disponible lager, og status angives tilsvarende. Den grundlæggende idé med denne funktion er beskrevet her.
 

OVERLAPPENDE KOMBINATIONSBOKSE

Det er svært at implementere rullelisterne Produktkategori og Produkt som Overlappende kombinationsbokse, fordi Access ikke understøtter denne funktion. Fire trin er nødvendige i denne teknik:

Formularen skal være i tilstanden Fortløbende formularer (ikke dataark). Tekstfelter overlapper tekstdelen af hvert kombinationsfelt, så kun deres rullepile er synlige. 

Formularens postkildeforespørgsel, qryOrderLineItems, bruger tabellen OrderDetails pr. sædvanligt, men opretter også forbindelse til tabellerne Products og ProductCategories for at hente ProductName og ProductCategoryName. De to overlappende tekstfelter er bundet til disse felter.

Kombinationsfeltet Rækkekilde for produkter ser tilbage på cboProductCategories for kun at returnere produkter for den kategori, der er valgt i det pågældende kombinationsfelt. Bemærk syntaksen "[Formular]! [cboProductCategories]" i kriterieudtrykket, som er mere fleksibelt end de eksplicitte Formularer! Formularnavn! ControlName-syntaks , som refererer til én formular efter navn.

Når du har valgt en produktkategori i kombinationsfeltet ubundne Produktkategorier , indstiller hændelsen EfterOpdatering kombinationsfeltet Produkter til den første værdi på listen. Dette opretter en ny række i formularens Postkilde, som udfylder Kategorinavn , så den kan vises af dens overlappende tekstfelt.
 

VALIDERING

Hvis du bruger den valideringskode, der er implementeret i Northwind Dev edition, tager det kun 3 kodelinjer:

  • I Form_BeforeUpdate:
       Cancel = ValidateForm(Me)

  • I Form_AfterUpdate og Form_Current:
        ValidateForm_RemoveHighlights mig

At gøre kode meget selvstændig er et godt mønster at følge, fordi det gør det nemt at gennemføre overalt. Professionelle udviklere kan f.eks. gå endnu videre med dette ved hjælp af formularunderklasse. (Dette er ud over målene for Northwind Dev.)

Formularobjektet overføres til den selvstændige valideringskode for at validere. Derefter kontrolleres den underliggende RecordsetClone Fields-samling for at finde ud af, hvilke kontrolelementer der er bundet til obligatoriske felter, og kontrollerer, om de har en værdi. Hvis de ikke gør det, fremhæves de.

Har du brug for mere hjælp?

Vil du have flere indstillinger?

Udforsk abonnementsfordele, gennemse kurser, få mere at vide om, hvordan du sikrer din enhed og meget mere.

Communities hjælper dig med at stille og besvare spørgsmål, give feedback og høre fra eksperter med omfattende viden.

Var disse oplysninger nyttige?

Hvor tilfreds er du med kvaliteten af sproget?
Hvad påvirkede din oplevelse?
Når du trykker på Send, bliver din feedback brugt til at forbedre Microsoft-produkter og -tjenester. Din it-administrator kan indsamle disse data. Erklæring om beskyttelse af personlige oplysninger.

Tak for din feedback!

×