20. juli 2001 - 22:06Der er
11 kommentarer og 1 løsning
Tildeling / opdatering
Jeg er igang med at lave et medlemskartotek i access 2000, hvor der er indskrevet eksisterende medlemmer og evt. kommende medlemmer (hot leads) og nu er jeg løbet ind en udfordring, hvor jeg søger 1 af nedenstående løsninger hvor 2 er mest attraktiv:
1. oprette en knap der kan tildele hhv. et felt et fortløbende medlemsnummer + et andet felt med et forløbende nummer, samt tildele et felt aktuel dato. (hvis en af de hotte leads melder sig ind.)
2. når man indtaster betalingsdatoen (i betalingsdatofeltet) tildeler access automatisk et medlemsnummer(i medlemsnummerfeltet) og et andet unikt nummer.(hvis en af de hotte leads melder sig ind.)
Jeg har medlemstabel (navne m.m.) postnummertabel uniktnummertabel medlemsnummertabel
Jeg benytter Access97, men jeg er overbevist om, at dit problem skal søges i den grundlæggende databasekonstruktion, og her er der ikke forskel fra 97 til 2000.
Jeg forstår ikke hvorfor du du har:
Medlemstabel Uniktnummertabel og Medlemsnummertabel
Hvad er forskellen mellem medlemsnummertabel og uniktnummertabel? Medlemsnummeret må være den \"bærende\" del i din db og derfor primær nøgle overalt i din db. Det er derfor ikke nødvendigt med en uniktnummertabel.
Hvordan ser di postnummertabel ud? Tager den højde for, at flere byer kan have samme postnr, som f.eks:
Nej jeg bor ikke i Vojens, men i Haderslev. Det er smart med disse postnummertabeller, med det er de færreste der tager højde for ovenstående, måske er det heller ikke nødvendig i dit tilfælde.
Jeg vil mene at du kan nøjes med flg. tabeller:
Medlemstabel indeholdende: Personlige oplysninger som navn, adresse, tlfnr. m.v. Medlemsnummer. Og øvrige oplysninger knyttet til personen.
Evt. postnummertabel
Hot lead tabel, hvor du opretter mulige medlemmer. Hvis de melder sig ind, skal vi blot have ændret deres status fra \"ikke medlem\" til \"medlem\".
Alle disse ting kan oprettes i databasens relationsvindue, som binder databasens tabeller sammen, og er en af de mest grundlæggende ting i en relationsdatabase som Access.
Du er velkommen til at sende mig databasen, så vil jeg se på den, og rette den til efter ovenstående principper. Du skal i givet fald huske at konvertere den til Access97. Jeg vil derefter sende den tilbage og du skal blot konvertere den til Access2000.
Hvis du er interesseret i det, kan vi senere vende tilbage til evt. VBA-procedürer, der letter brugen af databasen.
Den unikke nummertabel er et Avispostkontor nummer, dvs. at både medlemsnummeret og Avispostnummeret skal være unikke pr. betalende medlem. men ikke for de hotte leads (Det kan samles i en tabel, men jeg har dog valgt at skille det ad).
Medlemsdatabasen indeholde som nævnt både eks. medlemmer og de hotte leads. Min tanke var -som nlvnt - at man indskrev alle henvendelse (webtilmeldinger, telfonindmeldinger osv) i databasen og når så man konstaterede at de havde betalt kontigentet, indskrev man betalingsdatoen hvor der så blev tildelt et medlemsnummer og et avispostnr. dvs DB\'en indeholder altså navne m.v. uden medlemsnumre hvorfor jeg ikke kan medlemsnummeret til det \"bærende\" i DB
Jeg har taget højde for de nævnte eksempler du nævner vedr. postnumre.
DB \"kører\" fint - med switchbord og hele pivtøjet - men med undtagelse af den automatiske tildeling af avis og medlemsnr.
Det er lidt kryptisk at læse et relationdvindue, og skal gætte sig til datatyper m.v.
Grundlæggende er det du søger: Hent en oplysning fra en anden tabel og sæt der ind i en anden. Jeg antager, at når et hot lead betaler, skal medlemsnr. være den højeste værdi i medlemsnummertabellen +1.
Du gør sådan: Lav en forespørgsel med baggrund i medlemsnummertabellen, og sorter faldende i medlemsnr. på baggrund af denne forespørgsel laver du en formular, navngiv den \"form1\"
Derefter indsætter du flg. procedüre i betalingsdato-feltets After Update event: DoCmd.OpenForm \"form1\", acNormal, \"\", \"\", , acNormal Forms![medlems f]!medlemsnr = Forms!form1!medlemsnr + 1 DoCmd.Close acForm, \"form1\"
Gør det samme med uniktnummertabellen og tilhørende felt.
Procedüren (der iøvrigt ikke er særlig elegant), er lavet i Access97. Hvis du får problemer, kan jeg sende dig den test db jeg har lavet.
jeg får fejlen \"de ønskede ændringer blev ikke gennemført fordi de ville give dublerede værdier i indexet, den primære nøgle, eller relationen osv.osv.\" (når jeg har indtastet betalings datoen)
Jo det funker - Det betyder blot at det medlemsnr du prøver at indtaste i forvejen eksisterer, og du har tilsyneladende indekseret feltet medlemsnr. Det er en meddelelse der fortæller at du ikke kan oprette det samme medlemsnr 2 gange.
Hvis det er i min test db du får fejlen, så gå ind i medlemsnummertabellen og opret et nyt nr. f.eks. 100, åbn formularen og opdater betalingsdatoen, så skal medlemsnr blive 101.
Hvis du arbejder i din db, så kan fejlen være, at du ikke har sorteret forespørgslen korrekt. Procedüren tager det første medlemsnr. og lægger 1 til, derfor skal forespørgslen være sorteret faldende så den største værdi kommer først.
Men fortæl mig lige om fejlen kommer i din eller i min db.
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.