Avatar billede thomas60 Nybegynder
08. april 2005 - 14:06 Der er 3 kommentarer og
3 løsninger

Indtastninger af data i flere tabeller

Jeg er ret grøn i Access.

Hvordan gør man så man kan indtaste data i to tabeller samtidig? F.eks. kan man have to tabeller – en med personer – heri gadenavn og postnummer og en postnummertabel - postnumre og bynavne. Relationen er en mange-til-en.

Nu ønsker jeg så at indtaste adressen på en person. Her har jeg brugt en formular. I formularen indgår adresse og postnummer fra persontabellen samt bynavn fra postnummer tabellen. Hvis jeg indtaster en person hvis postnummer allerede er i postnummertabellen er det fint. Men hvis jeg indtaster en person hvis postnummer ikke er i tabellen går det galt. Relationen skabes ikke.

Jeg ved godt man kan finde en tabel med alle postnumre og lægge den i databasen, men det ønsker jeg ikke, da mit spørgsmål er generelt og gælder også i andre situationer. Postnummer eksemplet er bare for at forenkle spørgsmålet.
Avatar billede mugs Novice
08. april 2005 - 15:14 #1
"en person hvis postnummer ikke er i tabellen"

Det er jo netop fordi denne person's postnr ikke eksisterer i postnummertabellen. Når du indtaster på mangesiden, skal den jo kunne finde den relaterede post på eensiden.

Hvis du bruger comboxe, kan du i formularen kode dig ud af det og tilføje postnummer til postnummertabellen, men det får du ikke bynavnet af.
Avatar billede fynbohans Nybegynder
08. april 2005 - 16:42 #2
Brug en skjult formular, som bygger på tabellen med postnummer/by.
Heri gemmer du postnummer/by før du gemmer hele adressen.
Avatar billede thomas60 Nybegynder
11. april 2005 - 09:02 #3
Jeg er klar over at det er fordi postnummeret ikke eksistere. Det jeg gerne vil er at brugeren ikke inden han indtaster en ny adresse skal ind i postnummertabellen og se om det postnummer eksistere i forvejen.

I postnummer/adresse eksemplet kan man løse problemet på andre måder, men man kan komme i andre situationer hvor man øbsker at flere tabeller skal opdateres. Spørgsmålet går på en generel opdatering af flere tabeller. Det kan godt være jeg ser det forkert.

Måske er det fynbohans snakker om - nemlig en skjult formular. Men hvordan laver man sådan en?
Avatar billede thomas60 Nybegynder
11. april 2005 - 10:00 #4
Jeg kan prøve med et andet eksempel. Det er formentlig helt grundlæggende, men som sagt er jeg helt grøn.


Jeg skal lave en database over kontaktpersoner. En person er tilknyttet én organisation og en organisation har tilknyttet flere personer. Der er en mange-til-en relation.

I ’person’ tabellen ligger kontaktpersonens bl.a. navn og organisationsID (fremmenøgle). I ’organisations’ tabellen ligger adresse, postnummer mm.

En bruger skal indtaste en nye kontaktperson. Man indtaster navn, organisationsID. Hvis organisationen allerede findes i ’organisations’ tabellen indsætter Access selv adresse, postnummer mm. Hvis organisationen ikke allerede er i ’organisations’ tabellen vil jeg gerne have at den nye organisation bliver lagt ind i ’organisation’ tabellen under samme indtastning. Kan det lade sig gøre og hvordan gør man?

Problemstillingen er den helt samme som i postnummer eksemplet. Det håber jeg kan ses – ellers har jeg formuleret mig dårligt :-)
Avatar billede fynbohans Nybegynder
11. april 2005 - 14:00 #5
Ja, så er problemet et helt andet.
Foreslår alle oplysninger hentes fra en komboboks med alle organisationer.
Adresse m.m. for en organisation ligger også i komboboksen, men kan skjules i komboboksen og kan evt. vises for en valgt orgasitation et andet sted på skærmen. Hvordan du gør det kan ses i VIsual Basic hjælp ved at slå op under Column.
Hvis organisationen ikke er på listen må brugeren med en knap åbne en popup-formular,
hvor nye poster og eventuelle rettelser kan inddateres.
Lyder måske kompliceret, men er ikke så svært som det lyder.
Først laver du en almindelig formular til organisationsdata.
Husk en knap på formularen, som hedder "Retur", som bringer brugeren tilbage til
hovedformularen.
Når det hele virker afmærkes punkterne i egenskabsarket med "Ja" ud for de 2 punkter
"Popup" og "Modal". Husk endelig returkappen før du afmærker med ja!
Formularen åbnes med en Makro med 2 punkter: ÅbnFormular og Tilpas størrelse.
Med det sidste punkt kan du tilpasse størrelse og placering for popup-formularen.
Avatar billede mugs Novice
11. april 2005 - 14:06 #6
Som fynbohans foreslår jeg også en combo. Denne har en hændelse der hedder "VedIkkepåListe", som udfører en handling hvis du indtaster en værdi, som ikke findes i combo'ens datakilde. Koden ser således ud. En forudsætning er at combo'ens egenskab BegrænsTilLIste  er sat til Ja:

Dim prompt As String
DoCmd.SetWarnings False
Response = acDataErrContinue
prompt = "Denne type findes ikke i listen, ønsker du at oprette den?"
If MsgBox(prompt, vbYesNo, "Typen findes ikke!") = vbYes Then
DoCmd.RunSQL "INSERT into TABELNAVN (FELTNAVN) VALUES ('" & NewData & "')"
Response = acDataErrAdded
End If
DoCmd.SetWarnings True
Avatar billede Ny bruger Nybegynder

Din løsning...

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.

Loading billede Opret Preview
Kategori
Dyk ned i databasernes verden på et af vores praksisnære Access-kurser

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester