22. juli 2004 - 11:33Der er
6 kommentarer og 1 løsning
Database design og relationer
Jeg har brug for hjælp til design af en database.
Tabel1 (Produkter) indeholder en Produktliste med følgende felter. Kunde Serienr ProduktType Fabrikant Model
Mit problem er at jeg vil vælge ProduktType i en kombinationsboks først, og derefter vil jeg kun se de Fabrikanter der laver dette produkt i Fabrikat kombinationsboksen, og når fabrikanten er valgt så vil jeg kun se de modeller, som passer til ProduktType og Fabrikant i model kombinationsboksen.
Jeg har prøvet at løse det på mange måder, men har ikke fået det til at virke. Jeg har indtil videre lavet fem tabeller: Produkter, ProduktType, Fabrikanter, Modeller og kunder. Og jeg har forsøgt at lave relationer på alle mulige og umulige måder, for at opnå ovenstående.
Første komboboks er nem nok. Den skal bare indeholde og vise Produktype. (vi kalder den for cmboProdukttype til lejligheden)
Næste komboboks (cmbofabrikanter) skal så have denne rækkekilde: Select fabrikant From Fabrikanter Where Produkttype = Form!cmboProdukttype
Næste komboboks har denne rækkekilde: Select Model From Modeller Where fabrikant = Form!cmbofabrikanter And Produkttype = Form!cmboProdukttype
Du skal så sørge for at få komboboksene opdateret hver gang du ændre værdien i én af dem. Det gør du vha VBA og hændelsen Efteropdatering på hver komboboks.
På cmboProdukttype lægger du denne kode på EfterOpdatering (i VBA editoren): Me!cmbofabrikanter.requery Me!cmboModeller.Requery
På fabrikanter lægger du denne kode: Me!cmboModeller.Requery
hmm, jeg har måske misforstået dig lidt. Jeg troede at din fabrikat-tabel indeholdt oplysninger om hvilke produkttyper der hang sammen hvilke fabkrikater. Men det er vist ikke tilfældet, vel?
SQL'en på cmboProdukttype skal så se såddan ud: Select Distinct Produkttype From Produkter
På cmboFabrikater skal den se således ud: Select Distinct Fabrikat From Produkter Where Produkttype = Form!cmboProdukttyper
På cmboModeller skal den se således ud: Select Distinct Model From Produkter Where Produkttype = Form!cmboProdukttyper And Where Fabrikat = form!cmboFabrikater
Relationer har ingen effekt på dette, da du - så at sige - programmerer relationen. Det er dog en altid en god ide at lave relationer mellem tabellerne.
I dette tilfælde bør du have relation mellem alle felter, som hedder det samme (eller i hvert fald skal indeholde de samme værdier)
Dvs der skal være en relation mellem tabellen Produkter og fabrikant på felterne "Fabrikat"
Jeg har fået fabrikant cmbo boksen til at virke, efter din første opskrift. Men jeg kan se at den gemmer Fabrikanter.fabrikantID værdien i Produkter.fabrikant, istedet for fabrikant navnet som combo boksen viser. Jeg er nød til at have et autonr. felt i Fabrikanter tabellen, da den samme fabrikant godt kan lave flere produkttyper.
Kan jeg debugge mig frem til hvilken værdi den sender fra cmboFabrikant til SQL sætningen, som skal filteret modellerne ud?
Lige nu ser mine tabller således ud, måske skal de omdefineres: Produkter - ProdukterID, Produkt, Snr, ProduktType, Fabrikant, Model ProduktType - ProduktType Modeller - ModelID, Model, Fabrikant, ProduktType
Godt, at du fik det til at virke ! Og tak for point :o)
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.