Avatar billede simonsenpq Nybegynder
31. august 2004 - 12:39 Der er 13 kommentarer og
1 løsning

Afkrydsningsfelter i formular til forespørgsel

Jeg har en database over kontaktpersoner kategoriseret efter type. Hver kontaktperson kan godt have mere end en type.

Databasen indeholder tabellerne
- Kontaktpersoner
- Kontaktpersontyper
- Typerelation

Det skal være muligt at lave udtræk af adresser efter valg af en eller flere kontaktpersontyper. Er der tilknyttet flere valgte kontaktpersontyper til en person, skal denne person kun have én label.

Jeg har lavet en formular med en masse afkrydsningsfelter - et til hver kontaktpersontype.

Jeg vil gerne have hjælp til både forespørgslen og til hvordan den sættes sammen med formularen.
Avatar billede jensen363 Forsker
31. august 2004 - 12:43 #1
Et afkrydsningsfelt har som default værdien 0, og et kryds i formularen har værdien -1, svarende til sand. I din forespørgsel benytter du så kriteriet :

WHERE Afkrydsningsfelt1 = -1
Avatar billede simonsenpq Nybegynder
31. august 2004 - 12:50 #2
Kan du også hjælpe med forespørgslen?
Avatar billede jensen363 Forsker
31. august 2004 - 12:54 #3
Hvilke felter ( tabelnavn + tabelindhold ) indeholder formularen ?
Avatar billede simonsenpq Nybegynder
31. august 2004 - 12:56 #4
Kontaktpersoner.KontaktpersonId
Kontaktpersoner.Navn (osv..)
Typerelation.KontaktpersonId
Typerelation.KontaktpersontypeId
Kontaktpersontype.KontaktpersontypeId
Avatar billede jensen363 Forsker
31. august 2004 - 12:59 #5
Afkrydsningsfelterne, hvordan hænger de sammen i tabellerne ?
Avatar billede simonsenpq Nybegynder
31. august 2004 - 13:02 #6
De skal hænge sammen med KontaktpersontypeId'et
Avatar billede jensen363 Forsker
31. august 2004 - 13:05 #7
SELECT Kontaktpersoner.KontaktpersonId, Kontaktpersoner.Navn, Kontaktpersontyper.KontaktpersontypeId
FROM Kontaktpersoner INNER JOIN Kontaktpersontyper ON Kontaktpersoner.KontaktpersonId = Kontaktpersontyper.KontaktpersonId
WHERE (((Kontaktpersontyper.KontaktpersontypeId)=-1));
Avatar billede simonsenpq Nybegynder
31. august 2004 - 13:43 #8
Har omskrivet det til nedenstående for at få det til at virke.
Mit problem er desuden, at det skal være muligt at vælge flere typer på en gang, men at den samme person kun skal komme frem én gang hvis personen er type 1 og 2 og hvis der søges på 1 og 2. Desuden skal det være muligt at søge på op til 10-20 typer på samme tid.

SELECT *
FROM Kontaktpersoner INNER JOIN Typerelation ON Kontaktpersoner.KontaktpersonId = Typerelation.KontaktpersonId
WHERE (((Typerelation.KontaktpersontypeId)=2));
Avatar billede jensen363 Forsker
31. august 2004 - 13:53 #9
Så skal du foretage en select på personoplysninger

SELECT First(Kontaktpersoner.KontaktpersonId) AS KontaktpersonId, First(Kontaktpersoner.Navn) AS Navn
FROM Kontaktpersoner INNER JOIN Typerelation ON Kontaktpersoner.KontaktpersonId = Typerelation.KontaktpersonId
WHERE (((Typerelation.KontaktpersontypeId)=1)Or(Typerelation.KontaktpersontypeId)=2));
Avatar billede simonsenpq Nybegynder
31. august 2004 - 14:12 #10
Hmm... Det kan jeg ikke få til at virke. Den finder en forkert record. Og de rigtige findes ikke...
Avatar billede jensen363 Forsker
31. august 2004 - 14:13 #11
Har du mulighed for at zippe databasen og sende den til mig : ose2post.dk
Avatar billede jensen363 Forsker
31. august 2004 - 15:12 #12
Data skal grupperes på KontaktpersonId ...

SELECT Kontaktpersoner.KontaktpersonId AS KontaktpersonId, Kontaktpersoner.Adresse AS Adresse
FROM Kontaktpersoner INNER JOIN Typerelation ON Kontaktpersoner.KontaktpersonId = Typerelation.KontaktpersonId
WHERE (((Typerelation.KontaktpersontypeId)=2 Or (Typerelation.KontaktpersontypeId)=3))
GROUP BY Kontaktpersoner.KontaktpersonId, Kontaktpersoner.Adresse;
Avatar billede simonsenpq Nybegynder
31. august 2004 - 20:57 #13
Tak for hjælpen. Forespørgslen virker fint.
Avatar billede simonsenpq Nybegynder
31. august 2004 - 20:58 #14
Anden del af spørgsmålet fandt jeg i øvrigt selv ud af.
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