Avatar billede thomasfhansen Nybegynder
22. juli 2004 - 11:33 Der 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.

Jeg håber i kan hjælpe.

Med venlig hilsen
Thomas
22. juli 2004 - 11:48 #1
Du kan ganske rigtigt lave det vha kombobokse.

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
Avatar billede thomasfhansen Nybegynder
22. juli 2004 - 12:47 #2
Tak for det hurtige svar.

Jeg er ikke helt med endnu.

Hvilke felter skal tabellen fabrikanter indeholde?
Skal den indeholde både fabrikant navn og Produkttype?

Og skal jeg slet ikke lave relationer, for at få det til at virke?
22. juli 2004 - 13:08 #3
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"
Avatar billede thomasfhansen Nybegynder
22. juli 2004 - 15:22 #4
Har siddet og kæmpet lidt med det.

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

Ser det helt forkert ud?
Avatar billede thomasfhansen Nybegynder
22. juli 2004 - 15:24 #5
Jeg glemte lige fabrikant tabellen

Fabrikant - FabrikantID, Fabrikant, ProduktType
Avatar billede thomasfhansen Nybegynder
23. juli 2004 - 09:04 #6
Jeg har fået det til at virke nu, jeg havde lige glemt at rette hvad der skulle vises fra Fabrikat tabellen.
Tak for hjælpen.

mvh. Thomas
23. juli 2004 - 09:25 #7
Godt, at du fik det til at virke !
Og tak for point :o)
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