Logg på med Microsoft
Logg på, eller opprett en konto.
Hei,
Velg en annen konto.
Du har flere kontoer
Velg kontoen du vil logge på med.

Velg et emne nedenfor for å finne ut mer om administrasjon av ordrer i Northwind Developer Edition. 

Denne utviklerutgaven av eksempelprogrammet Northwind Orders er mer avansert enn starterutgaven. Det utvides på databaseskjemaet (tabellene som brukes) og gir nå flere avanserte funksjoner. Hensikten her er å introdusere deg for funksjonene i Microsoft Access, ikke for å drive en bestemt bedrift.

  • Ordrelisten er tilgjengelig fra båndet. Den har noen filteralternativer og hyperkoblinger for å åpne hver rekkefølge.

  • Både ordrelisten og båndet har en Legg til rekkefølge-knapp for å åpne en ny, tom rekkefølge.

  • Velg en eksisterende kunde fra rullegardinlisten i et nytt bestillingsskjema. På dette tidspunktet er ansattnavnet ditt og den nye statusen valgt. Ordredatoen er også allerede fylt ut. Avgiftssatsen leses fra SystemSettings-tabellen, og standarder for avgiftsstatus fra kundeposten.

  • Nye ordrer og bestillinger legges til i MRU-listen (sist brukt) på båndet. Mer informasjon via MRU-listedelen i denne artikkelen

  • La Forsendelsesdato og Betalt dato stå tomt for øyeblikket.

  • Hvis du vil legge til ordrer for nye kunder, skriver du inn firmanavnet og tabulerer ut. Firmadetaljskjemaet åpnes for å fullføre den nye kundeposten. Deretter lukker du den og fortsetter med bestillingen. Det nye firmaet vil nå være i rullegardinlisten Kunde .

  • Hvis du vil legge til varer i en ordre, velger du en produktkategori og produkt for denne ordren og angir Antall. Enhetspris fylles ut, og Pris beregnes av et uttrykk.

  • Forskuddsbestillingsstatus og flytt rekkefølgen gjennom arbeidsflyten fra Ny > Fakturert > Sendt > Lukket ved hjelp av knappene øverst i ordreskjemaet.

  • Fakturering kan bare skje hvis produktet er tildelt for denne bestillingen. Hvis et linjeelement er i statusen Ingen lager eller På bestilling, oppstår det en valideringsfeil. Brukeren kan opprette en innkjøpsordre for produktet og motta det, og ordrevarestatusen justeres til Fordelt.

  • Hvis du vil sende en ordre, må speditøren og fraktkostnadsgebyret angis. Hvis du glemmer å gjøre dette, oppstår det en valideringsfeil. Fraktkostnad legges til i ordretotalen.

  • Bestillinger som ikke er tilordnet, kan slettes ved hjelp av Slett ordre-knappen.

  • Ordrelinjeelementer kan ikke endres etter at rekkefølgen er forbi Ny-statusen .

  • I Northwind Starter-versjonen er ordreprosessen utrolig enkel (for eksempel er beholdningen alltid tilgjengelig, går aldri tom og trenger aldri å kjøpes). Nå, i denne Utviklerutgaven, løser en mer realistisk prosess minst noen slike problemer. Husk at vi viser access-funksjoner og anbefalte fremgangsmåter, og ikke implementerer et program fra virkeligheten. 

  • Bevis på at vi ikke implementerer en reell søknad her inkluderer det faktum at datoer ikke blir validert. Derfor er det mulig å angi ulogiske datoer, for eksempel en sendt dato som er før ordredatoen. 

Denne delen tar for seg bemerkelsesverdige implementeringsdetaljer for ordreskjemaet, frmOrderDetails:

Ordreskjemaet henter dataene fra en enkel spørrings-qryOrder (se RecordSource-egenskapen ). Det er anbefalt fremgangsmåte å basere et skjema for dataregistrering på en enkel spørring med én tabell. Vær oppmerksom på at det ikke er nødvendig å inkludere OrderDetails-tabellen i denne spørringen. Ordredetaljer håndteres av delskjemaet.

OrderList-skjemaet kan åpne flere forekomster av Ordre-skjemaet. Dette er praktisk fordi selgere håndterer mange avbrudd og kanskje må åpne en annen ordre mens de arbeider på den første, eller sammenligne den med en tredje ordre. Teknikken er dokumentert her.

De ulike ID-feltene henter verdiene fra kombinasjonsbokser med to kolonner: en skjult ID-kolonne og en synlig Beskrivelse-kolonne. Disse kombinasjonsboksene er bundet til enkle spørringer med to kolonner: se RowSource-egenskapen .

Arbeidsflytknappene har tilknyttet forretningslogikk som tvinger brukeren til å gå videre fra 1 til 4. Northwind Development-teamet er klar over at enkelte selskaper kan bruke forskjellige regler. Dette resulterer deretter i en annen implementering for knappeklikkhendelsene, i tillegg til å vurdere på nytt når en ordre er bestemt, og når en ordre fremdeles kan slettes.

Delskjemaet sfrmOrderDetails er bundet til en mer kompleks spørring. Årsakene til dette beskrives i avsnittet Gjennomgripende kombinasjonsbokser nedenfor. Vi ser etter beholdning i Form_AfterUpdate-hendelsen når raden lagres, og vi kan kjøre kraftigere databasespørringer.

Produktkategori og produkt er gjennomgripende kombinasjonsbokser: Hvis du velger fra den første (ProductCategory), begrenses den neste til samsvarende underordnede produktposter. Teknikken som brukes her er beskrevet i detalj nedenfor.

Når du lagrer en post, må de nødvendige feltene fylles ut. I Starter-utgaven lar vi access-standardvirkemåten skje. i denne Utviklerutgaven implementeres en mer brukervennlig teknikk. Teknikken som brukes her er beskrevet i detalj nedenfor.

For hvert ordrelinjeelement kontrolleres den tilgjengelige beholdningen, og statusen angis tilsvarende. Den grunnleggende ideen om denne funksjonen er beskrevet her.
 

GJENNOMGRIPENDE KOMBINASJONSBOKSER

Det er vanskelig å implementere rullegardinlistene Produktkategori og Produkt som gjennomgripende kombinasjonsbokser fordi Access ikke støtter denne funksjonen. Fire trinn er nødvendig i denne teknikken:

Skjemaet må være i modus for kontinuerlige skjemaer (ikke dataark). Tekstbokser overlapper tekstdelen av hver kombinasjonsboks, slik at bare rullegardinpilene er synlige. 

Skjemaets postkildespørring, qryOrderLineItems, bruker OrderDetails-tabellen per vanlig, men sammenføyer også produkter og produktkategorier-tabeller for å plukke opp ProductName og ProductCategoryName. De to overlappende tekstboksene er bundet til disse feltene.

Kombinasjonsboksen RowSource for produkter ser tilbake på cboProductCategories for å returnere bare produkter for kategorien som er valgt i den kombinasjonsboksen. Legg merke til syntaksen «[Skjema]! [cboProductCategories]" i vilkårsuttrykket, som er mer fleksibelt enn de eksplisitte skjemaene! Skjemanavn! ControlName-syntaks , som refererer til ett skjema etter navn.

Når du har valgt en produktkategori i kombinasjonsboksen for ubundne Produktkategorier , angis kombinasjonsboksen for AfterUpdate til den første verdien i listen. Dette oppretter en ny rad i skjemaets RecordSource, som fyller ut CategoryName slik at den kan vises av den overlappende tekstboksen.
 

VALIDERING

Bruk av valideringskoden som implementeres i Northwind Dev-utgaven, tar bare tre linjer med kode:

  • I Form_BeforeUpdate:
       Avbryt = ValidateForm(Me)

  • I Form_AfterUpdate og Form_Current:
        ValidateForm_RemoveHighlights meg

Å lage kode svært selvstendig er et godt mønster å følge fordi det gjør det enkelt å implementere overalt. Profesjonelle utviklere kan ta dette enda lenger, for eksempel ved hjelp av skjemaunderklasse. (Dette er utenfor målene for Northwind Dev.)

Skjemaobjektet sendes til den selvstendige valideringskoden for å validere. Den kontrollerer deretter den underliggende RecordsetClone Fields-samlingen for å finne ut hvilke kontroller som er bundet til obligatoriske felt, og kontrollerer om de har en verdi. Hvis de ikke gjør det, er de uthevet.

Trenger du mer hjelp?

Vil du ha flere alternativer?

Utforsk abonnementsfordeler, bla gjennom opplæringskurs, finn ut hvordan du sikrer enheten og mer.

Fellesskap hjelper deg med å stille og svare på spørsmål, gi tilbakemelding og høre fra eksperter med stor kunnskap.

Var denne informasjonen nyttig?

Hvor fornøyd er du med språkkvaliteten?
Hva påvirket opplevelsen din?
Når du trykker på Send inn, blir tilbakemeldingen brukt til å forbedre Microsoft-produkter og -tjenester. IT-administratoren kan samle inn disse dataene. Personvernerklæring.

Takk for tilbakemeldingen!

×