29. april 2009 - 14:49Der 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:
Teknologi, AI og forretning er i centrum på Computerworlds Cloud og AI Festival i København d. 18. og 19. september. Se hele programmet for den store konference om strategisk brug af Cloud og AI på: www.cloud-festival.dk
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.
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.
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.
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.
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.
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)
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.
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:
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?
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:
Glem det - Tog lige fejl af dine links og skrev efter den gamle struktur.
Synes godt om
Ny brugerNybegynder
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.