11. april 2010 - 18:46 Der er 2 kommentarer og
1 løsning

Rapporter for soegeresultater, undgaa at gentage vaerdier.

Jeg er i faerd med at udvikle et databasesystem til et velfaerdscenter. (Centeret ligger i Antwerpen og jeg bruger en hollandsksproget Access 2007, derfor kommer der nogle maerkelige udtryk saasom "persoon" der er hollandsk for person.)  Jeg er ved at udvikle nogle soegefunktioner for centerets medarbejdere.  For eksempel skal man kunne soege og udskrive hvilke af centerets besoegende (med navn, telefonnummer, og email) der hoerer til hvilke aktivitetsgrupper.  Fordi hver person kan have flere telefonnumre faar jeg saadanne resultater:

Francoise de Jong 22/7/1957 0487/378952
Erna De Meester 24/04/1959 0484/436229
Erna De Meester 24/04/1959 0488/807691

Jeg ville gerne have det saaledes:

Francoise de Jong 22/7/1957 0487/378952
Erna De Meester 24/04/1959 0484/436229
                          0488/807691

altsaa kun vise navn og foedselsdag for det foerste telefonnummer.

Her er nogle oplysninger (forhaabenligt de noedvendige:)

Jeg har en tabel Persoon med navn, foedselsdag, o.s.v.  Der er mange-til-mange relationer mellem personer og grupper/telefonnumre/emailadresser. For eksempel mand og kone kan have samme telefonnummer og derudover har konen en mobil telefon og manden en arbejdstelefon.)  Derfor har jeg gruppenavne, telefonnumre, og emailadresser i tabellerne Groep, Telefoon, og Email, og jeg har kombinationstabellerne PersoonGroep, PersoonTelefoon, og PersoonEmail.

Jeg har saa lavet en formular Zoeken (som aabnes automatisk naar databasen aabnes) med soegemulighederne.  For soegning efter personer i grupper har jeg en tabel EnkelGroep med de noedvendige felter, en Report der ogsaa hedder EnkelGroep der formatterer det for udskrift, og paa formularen Zoeken har jeg en combobox med navnene paa grupperne.  Comboboxens AfterUpdate event sletter gamle oplysninger i tabellen EnkelGroep, fylder tabellen med nye vaerdier afhaengig af det valgte gruppenavn, og aabner rapporten.

Her er VBA koden:

Private Sub cmbGroep_AfterUpdate()
    DoCmd.Close acReport, "EnkelGroep"
    DoCmd.SetWarnings False
    DoCmd.RunSQL "Delete * FROM EnkelGroep"
    DoCmd.RunSQL "INSERT INTO EnkelGroep (persoonid, voornaam, achternaam, geboortedatum, telefoonnummer, email) SELECT persoonid, voornaam, achternaam, geboortedatum, telefoonnummer, e.email FROM ((((Persoon p INNER JOIN PersoonGroep pg ON p.persoonid = pg.persoon) INNER JOIN Groep g ON pg.groep = g.groepid) LEFT JOIN PersoonTelefoon pt ON p.persoonid = pt.persoon) LEFT JOIN PersoonEmail pe ON p.persoonid = pe.persoon) LEFT JOIN Email e ON pe.email = e.emailid WHERE g.naam = '" & Me.cmbGroep & "'"
    DoCmd.OpenReport "EnkelGroep", acViewReport, , , acWindowNormal
    DoCmd.SetWarnings True
End Sub

Som tillaegsspoergsmaal modtager jeg gerne kommentarer om fremgangsmaaden (en tabel med tilhoerende rapport for hver slags efterspoergsel (for eksempel har jeg ogsaa en forespoergsel hvor man for hver person faar en oversigt over alle grupper personen deltager i)).
Avatar billede mugs Novice
11. april 2010 - 19:28 #1
I rapportens designvisning kan du klikke på et datafelt og i dettes egenskaber i fanen Format, er der en egenskalb der hedder SkjulDubletter. Prøv at sætte denne til Ja for det felt der indeholder navnet.
11. april 2010 - 20:30 #2
Det staar der ogsaa i http://allenbrowne.com/casu-21.html, men jeg har soegt mig kapot efter denne egenskab.  Jeg troedede derfor at man havde fjernet denne egenskab i Access 2007 og puttet den et andet sted saasom i Ribbon som man har gjort med flere andre ting.  Men nu da jeg kikkede igen fandt jeg den naesten ved bunden af egenskaberne (paa hollandsk "duplicaten verbergen") og slet ikke hvor mit link viser den.  Og - det virker.

Det foerste man bliver blind paa er oejnene.  Points er undervejs.

(Har du nogen kommentarer til min fremgangsmaade?)
Avatar billede mugs Novice
11. april 2010 - 20:38 #3
Tak for point.

I den forespørgsel der ligger til grund for rapporten, kan du prøve med en Select Distinct...

Når de bruger Destinct, vil du kun få een forekomst af hvert felt.
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