Avatar billede frederikschack Nybegynder
29. april 2009 - 14:49 Der er 14 kommentarer og
1 løsning

Sammenkædning af formularer

Er der nogen der kan guide mig ind på en god forklaring på sammenkædningen af formularer og subformularer i Access.

Det skulle gerne munde ud i at jeg kan lave en formular, der har to subformularer, som kan rumme x antal ensartede elementer, som kan referere til hinanden.

Det jeg ønsker at opnå er at man kan indtaste data der er struktureret som nedenstående:

Elementer
    1
    |
  0..*
ElementFelter
1            1
|            |
0..1          0..1
Felt 0..1-0..1 Felt
Avatar billede mugs Novice
29. april 2009 - 16:32 #1
Dit eksempel forstår jeg ikke. Lad mig give et andet, som måske forklarer det på min måde:

Du har en række kunder med tilhørende data som adresse, telefonnr o.s.v. Disse kunder indentificeres med et kundenr, som er tabellens primary Key (PK).
I en anden tabel opretter du en del poster med handler med dise kunder. Foruden data om de enkelte handler, identificeres hver handel med et kundenr som ikke er tebellens PK.
Tabellerne joines nu med en een til mange relation i felterne kundenr.

Du laver nu 2 formularer der begge indeholder feltet kundenr. formularerne har hver af tabelerne som datakilde, d.v.s. at der i den ene form kun eksisterer kundenr een gang, idet du kun har kunden een gang . Dette bliver din hovedformular (parentform). I den anden formular eksisterer feltet kundenr flere gange idet der er flere handler med den samme kunde. Dette bliver din underformular (Childform).

I childform "binder" du nu formularerne sammen ved i dennes egenskaber vælger kundenr som både overordnet og underordnet felt. I praksis betyder det, at du for hver kunde i parentform ser alle de handler i childform, som har samme kundenr.
Avatar billede frederikschack Nybegynder
29. april 2009 - 18:31 #2
Hej,

Her er et screen-dump af relationerne:
http://www.frederikschack.dk/images/Objekter.JPG

Jeg er sådan set godt med på det du beskriver, jeg har dog problemer med underformularen:

http://www.frederikschack.dk/images/fejl.JPG
Avatar billede frederikschack Nybegynder
29. april 2009 - 18:37 #3
Og så skal der også oprettes en tabel til relationer mellem felterne, så man kan se hvilke gamle felter der svarer til de nye felter.
Avatar billede frederikschack Nybegynder
29. april 2009 - 18:40 #4
En pudsig ting er at den gemmer det jeg skriver ind i underformularerne, men ikke selve hovedformularen. Det var lettere at programmere det her, men det må jeg desværre ikke på min arbejdsplads.
Avatar billede frederikschack Nybegynder
29. april 2009 - 18:49 #5
Se bare bort fra post #3, det ligger allerede i strukturen.
Avatar billede mugs Novice
29. april 2009 - 19:22 #6
Jeg må tilstå, at jeg ikke forstår din db. Du har felter navngivet som Feltbeskrivelse, Feltdatatype og Feltlængde. Hvad vil du indtaste i disse felter? Navnene refererer jo til felternes egenskaber.

I dir screenshot har du i parentform objektfeltid = 1 og i subformen feltid = 15. Disse værdier skal jo være ens for at du kan sammenkæde formularerne.
Desuden er der ingen relationer mellem Objektfeltid og andre felter! Din databasestruktur er simpelthen forkert opbygget.

Ny er jeg lidt handicappet fordi du bruger 2007, det har jeg ikke, men principperne er ens.
Avatar billede frederikschack Nybegynder
29. april 2009 - 19:40 #7
Hej Mugs,

Det er en beskrivelse af en ny og gammel databasestruktur der skal være i databasen. Indrømmer at det kan se lidt forvirrende ud.

ObjektFeltId er ikke det samme som FeltId. Under hvert "Objekt Felt" skal der være 2 "Felter", et med de gamle felt data og et med de nye felt data. Således vender min reference nok omvendt af hvad der er sædvanligt i de her forms, da det er felterne "GammeltFelt" og "NytFelt" der peger på "Felter" og dermed rummer FeltID.
Avatar billede mugs Novice
29. april 2009 - 19:53 #8
Det er godt nok lidt forvirrende. Det bliver ikke bedre af, at du omtaler "felt data" samtidig med, at du har feltnavne der indikerer feltegenskaber. Normalt beskriver feltnavnet jo hvilke data der indtastes i feltet. Alt andet beskrives i feltet ribrik "Beskrivelse".

Jeg vil stadigvæk påstå, at din db ikke er korrekt opbygget og ikke opfylder selv 1. normalform.
Avatar billede frederikschack Nybegynder
29. april 2009 - 20:08 #9
Jeg vil nu nærmere sige at det er omvendt, men det er nok en tros sag :o) Navnet skal jo være identificerende og beskrivelsen beskrivende hvad der skal indtastes. Jeg er bare for doven til at lave en beskrivelse ;o)
Avatar billede mugs Novice
29. april 2009 - 20:26 #10
I tabellen Objektfelter har du felterne Gammeltfelt og Nytfelt. Slå den samme til eet felt og lasv et nyt Ja/Nej felt der markerer, om det er gammelt eller nyt.
Avatar billede frederikschack Nybegynder
29. april 2009 - 20:40 #11
Det gamle og nye felt skal være knyttet sammen og spørgsmålet er hvordan man gør det via en formular. Man kan naturligvis, med udgangspunkt i dit forslag, putte både da gamle og nye felter ind i "ObjektFelter". Det vil virke, så smid et svar :o)

Jeg tror dog at jeg vil eksperimentere med den her, for at få tingene skilt lidt mere ad:

http://www.frederikschack.dk/images/Tabel.JPG
Avatar billede mugs Novice
29. april 2009 - 21:06 #12
Tak for point.

En væsentlig forskel fra den gamle struktur er nu, at hver PK nu har en relation til en anden tabel. Jeg tror også du kan få gavn af at flytte rundt på tabellerne i relationsvinduet så det giver et bedre overblik. Det ændrer intet ved db's funktionalitet men et let overskueligt relationsvindue er ikke uden værdi.

Hvorfor bruger du een til een relationer og ikke een til mange?
Avatar billede frederikschack Nybegynder
29. april 2009 - 21:39 #13
Det har du fuldstændig ret i, der var ingen grund til den koblings tabel :o)

Det her fungerer:
frederikschack.dk/images/Loesning.JPG
Avatar billede mugs Novice
29. april 2009 - 21:52 #14
Hvis db fungerer er det jo fint nok. Men den holder altså ikke til en nærmere gennemgang, idet een af dine tabeller ikke er på 1. normalform. Se her hvad den gode jkrons skriver om normalformer:

http://www.kronsell.net/normalisering.htm
Avatar billede mugs Novice
29. april 2009 - 21:53 #15
Glem det - Tog lige fejl af dine links og skrev efter den gamle struktur.
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