Helpmij.nl
Helpmij.nl
Helpmij.nl
Steun Helpmij.nl! Klik hier     Computerprobleem? Klik hier!

Quote

Weergeven resultaten 1 tot 14 van 14

Onderwerp: Access Query : Laatste record

  1. #1
    Member
    Verenigingslid

    Geregistreerd
    31 augustus 2017
    Locatie
    Antwerpen
    Afstand tot server
    ±185 km
    Vraag is opgelost

    Access Query : Laatste record

    Ik gebruik doorlopend formulier : "te contacteren" met als recordbron een gekoppelde qry_sollicitant & qry_bewegingen.

    Nu probeer ik het jongste record per persoon in m'n query te krijgen.
    Heb van alles al geprobeerd zoals "LAST" - "FROM AS" - "GROUP BY" maar dat lukt me blijkbaar niet goed.

    De sql v/d query ziet er momenteel zo uit.
    Code:
    SELECT tbl_sollicitant.ID_SOLLICITANT, tbl_sollicitant.NAAM_SOLLICITANT, tbl_sollicitant.VOORNAAM_SOLLICITANT, tbl_sollicitant.GEBOORTEDATUM_SOLLICITANT, tbl_sollicitant.GSM_SOLLICITANT, tbl_sollicitant.EMAIL_SOLLICITANT, tbl_sollicitant.AANGEPAST_OP, tbl_bewegingen.ID_BEWEGINGEN, tbl_bewegingen.ID_OPZOEKEN, tbl_bewegingen.ID_OPZOEKEN_OMSCHRIJVING, tbl_bewegingen.OPZOEKEN_TYPE, tbl_bewegingen.OPZOEKEN_OMSCHRIJVING, tbl_bewegingen.DATUM_BEWEGING
    FROM tbl_sollicitant INNER JOIN tbl_bewegingen ON tbl_sollicitant.ID_SOLLICITANT = tbl_bewegingen.ID_SOLLICITANT
    WHERE (((tbl_bewegingen.ID_OPZOEKEN)<>6) AND ((tbl_bewegingen.ID_OPZOEKEN_OMSCHRIJVING)<>11 And (tbl_bewegingen.ID_OPZOEKEN_OMSCHRIJVING)<>12) AND ((tbl_bewegingen.DATUM_BEWEGING) Between Date() And Date()-20))
    ORDER BY tbl_bewegingen.DATUM_BEWEGING DESC;
    Iemand enig idee hoe eraan te beginnen?

  2. #2
    Tera Honourable Senior Member
    Verenigingslid
    OctaFish's avatar
    Geregistreerd
    6 februari 2009
    Locatie
    Rotterdam
    Afstand tot server
    ±151 km
    Doe er een voorbeeldje bij, want zo wordt het gokken. Je hebt al een datumselectie, maar dat is blijkbaar dan ook niet de bedoeling. Overigens kan deze query een stuk overzichtelijker.
    PHP Code:
    1
    2
    3
    4
    5
    
    SELECT a.ID_SOLLICITANT, a.NAAM_SOLLICITANT, a.VOORNAAM_SOLLICITANT, a.GEBOORTEDATUM_SOLLICITANT, a.GSM_SOLLICITANT, a.EMAIL_SOLLICITANT, a.AANGEPAST_OP, 
    b.ID_BEWEGINGEN, b.ID_OPZOEKEN, b.ID_OPZOEKEN_OMSCHRIJVING, b.OPZOEKEN_TYPE, b.OPZOEKEN_OMSCHRIJVING, b.DATUM_BEWEGING
    FROM tbl_sollicitant As a INNER JOIN tbl_bewegingen As b ON a.ID_SOLLICITANT = b.ID_SOLLICITANT
    WHERE (b.ID_OPZOEKEN<>6 AND b.ID_OPZOEKEN_OMSCHRIJVING Not In(11,12) AND b.DATUM_BEWEGING Between Date() And Date()-20)
    ORDER BY b.DATUM_BEWEGING DESC;
    Gebruik de QUOTE knop alleen als je iets wit citeren.
    Op deze pagina kun je zien hoe je met TAGS werkt.

  3. #3
    Member
    Verenigingslid

    Geregistreerd
    31 augustus 2017
    Locatie
    Antwerpen
    Afstand tot server
    ±185 km
    Hierbij de laatste mdb
    cv_opvolging.zip

    Betreft de form: form_sollicitant_niet_geantwoord.

  4. #4
    Senior Member JohanRVT's avatar
    Geregistreerd
    2 maart 2011
    Locatie
    Otegem
    Afstand tot server
    ±290 km
    In uw zip zitten 2 Db's; de ene is met login en paswoord (dat wij niet kennen) en de andere bevat enkel tabellen

  5. #5
    Member
    Verenigingslid

    Geregistreerd
    31 augustus 2017
    Locatie
    Antwerpen
    Afstand tot server
    ±185 km
    SHIFT en dubbelklik op cv_opvolging heft dit op. wel via het koppelingsbeheer de tabellen uit cv_opvolging_be koppelen. Anders krijg je niets te zien.

  6. #6
    Tera Honourable Senior Member
    Verenigingslid
    OctaFish's avatar
    Geregistreerd
    6 februari 2009
    Locatie
    Rotterdam
    Afstand tot server
    ±151 km
    Volgens mij heb je een subquery nodig in je filter.
    PHP Code:
    1
    2
    3
    4
    5
    6
    7
    8
    
    SELECT a.ID_SOLLICITANT, a.NAAM_SOLLICITANT, a.VOORNAAM_SOLLICITANT, a.GEBOORTEDATUM_SOLLICITANT, a.GSM_SOLLICITANT, a.EMAIL_SOLLICITANT, a.AANGEPAST_OP, 
    b.ID_BEWEGINGEN, b.ID_OPZOEKEN, b.ID_OPZOEKEN_OMSCHRIJVING, b.OPZOEKEN_TYPE, b.OPZOEKEN_OMSCHRIJVING, b.DATUM_BEWEGING
    FROM tbl_sollicitant AS a INNER JOIN tbl_bewegingen AS b ON a.ID_SOLLICITANT = b.ID_SOLLICITANT WHERE ((b.ID_BEWEGINGEN In 
         (Select Top 1  Dupe.[ID_BEWEGINGEN] FROM [tbl_bewegingen] AS Dupe 
         WHERE  Dupe.[ID_SOLLICITANT] = b.[ID_SOLLICITANT] Order By Dupe.[ID_BEWEGINGEN] Desc)) 
    AND b.ID_OPZOEKEN<>6 AND b.ID_OPZOEKEN_OMSCHRIJVING Not In (11,12) 
    AND b.DATUM_BEWEGING Between Date() And Date()-20)
    ORDER BY a.ID_SOLLICITANT, b.DATUM_BEWEGING DESC;
    Gebruik de QUOTE knop alleen als je iets wit citeren.
    Op deze pagina kun je zien hoe je met TAGS werkt.

  7. #7
    Member
    Verenigingslid

    Geregistreerd
    31 augustus 2017
    Locatie
    Antwerpen
    Afstand tot server
    ±185 km
    Zover ik kan zien werkt deze query goed.
    Doch één raar verschijnsel: het sorteren volgens bewegingsdatum wordt niet uitgevoerd. b.DATUM_BEWEGING DESC;

  8. #8
    Tera Honourable Senior Member
    Verenigingslid
    OctaFish's avatar
    Geregistreerd
    6 februari 2009
    Locatie
    Rotterdam
    Afstand tot server
    ±151 km
    Quote Origineel gepost door fde Bekijk Bericht
    Doch één raar verschijnsel: het sorteren volgens bewegingsdatum wordt niet uitgevoerd. b.DATUM_BEWEGING DESC;
    Dat lijkt mij niet meer dan logisch. Pakken we je oorspronkelijke vraag er even bij:
    Quote Origineel gepost door fde Bekijk Bericht
    Nu probeer ik het jongste record per persoon in m'n query te krijgen.
    Dat moet je lezen als: van elke persoon wil je het laatste record zien. Oftwel: van elke persoon zie je maar één record. De dynatabel is gesorteerd op persoonID. Van die persoon zie je dan verschillende gegevens, waaronder de datum. En te tegenvraag is dus: als je van elke persoon maar één record ziet, hoe kan je dat record dan op datum sorteren? Je kunt de sortering wel omdraaien (sorteren op datum) maar dan kun je niet meer op persoon als eerste sorteersleutel sorteren. Omdat je datums vermoedelijk wel meerdere keren voorkomen, kun je per datum dan weer wel op persoon sorteren.
    Gebruik de QUOTE knop alleen als je iets wit citeren.
    Op deze pagina kun je zien hoe je met TAGS werkt.

  9. #9
    Tera Honourable Senior Member
    Verenigingslid
    OctaFish's avatar
    Geregistreerd
    6 februari 2009
    Locatie
    Rotterdam
    Afstand tot server
    ±151 km
    Om het in de query te laten zien, krijg je dan deze sorteersleutel:
    Code:
    ORDER BY b.DATUM_BEWEGING DESC, a.ID_SOLLICITANT;
    Gebruik de QUOTE knop alleen als je iets wit citeren.
    Op deze pagina kun je zien hoe je met TAGS werkt.

  10. #10
    Member
    Verenigingslid

    Geregistreerd
    31 augustus 2017
    Locatie
    Antwerpen
    Afstand tot server
    ±185 km
    De aanpassing werk perfect. In jouw code heb ik ook enkele een kleine aanpassing gedaan: Not In (11,12,32,56,60) ipv Not In (11,12). Ik denk dat we nu een goede tool hebben om een degelijke opvolging te kunnen uitvoeren. Met dank hiervoor ; ook voor de uitleg die je erbij verschaft.

  11. #11
    Tera Honourable Senior Member
    Verenigingslid
    OctaFish's avatar
    Geregistreerd
    6 februari 2009
    Locatie
    Rotterdam
    Afstand tot server
    ±151 km
    De manier waarop jij records uitsloot (tbl_bewegingen.ID_OPZOEKEN_OMSCHRIJVING)<>12 etc) werkt an sich prima, maar is erg onhandig als het gaat om veel codes. In dat geval is de optie [Not] In(#1; #2; #3 etc) een veel betere en overzichtelijkere methode. Kwestie van getalletjes toevoegen of weghalen. De extra parameter "Not" gebruik je dan om de selectie positief of negatief te maken.
    Gebruik de QUOTE knop alleen als je iets wit citeren.
    Op deze pagina kun je zien hoe je met TAGS werkt.

  12. #12
    Member
    Verenigingslid

    Geregistreerd
    31 augustus 2017
    Locatie
    Antwerpen
    Afstand tot server
    ±185 km
    Dat is inderdaad zo en het is überhaupt veel overzichtelijker met de NOT IN - code. Op deze wijze wordt de SQL van de query erg ingekort.
    Nog een vraagje over dit stukje code: WHERE Dupe.[ID_SOLLICITANT] = b.[ID_SOLLICITANT] Order By Dupe.[ID_BEWEGINGEN] Desc)) .
    Hoe moet ik ... Dupe. ... interpreteren?

  13. #13
    Tera Honourable Senior Member
    Verenigingslid
    OctaFish's avatar
    Geregistreerd
    6 februari 2009
    Locatie
    Rotterdam
    Afstand tot server
    ±151 km
    De Dupe tabel is eigenlijk een kopie van de oorspronkelijke tabel. Je gebruikt de kopie a.h.w. om het record uit de hoofdtabel (b.[ID_SOLLICITANT]) te matchen met de kopie tabel. Zeg maar de relatie tussen de twee tabellen. Met TOP 1 haal je per match één record op. Verander je die waarde naar 3, dan zou je 3 records per persoon krijgen in de query. Omdat je 1 gebruikt, en aflopend op ID_BEWEGINGEN sorteert, is dat dus per definitie de laatste waarde, want ID_BEWEGINGEN is een autonummerveld. Je had ook aflopend kunnen sorteren op Datum, dan had je ook de laatste record gevonden.
    Je mag dus elke naam gebruiken die je wilt.
    Gebruik de QUOTE knop alleen als je iets wit citeren.
    Op deze pagina kun je zien hoe je met TAGS werkt.

  14. #14
    Member
    Verenigingslid

    Geregistreerd
    31 augustus 2017
    Locatie
    Antwerpen
    Afstand tot server
    ±185 km
    Dank je voor deze verhelderende uitleg. Weeral bijgeleerd voor een leek als ik.

Berichtenregels

  • U mag geen nieuwe vragen starten.
  • U mag niet reageren op berichten.
  • U mag geen bijlagen versturen.
  • U mag uw berichten niet bewerken.
  •  
Helpmij.nl
Helpmij.nl

Helpmij.nl en business

Partners
Sponsoren
Aanbiedingen