Results 1 to 7 of 7

Thread: JOIN query of Lookup fields

  1. #1

    JOIN query of Lookup fields

    Ik wil in een grid gegevens tonen uit verschillende tabellen. In feite is er sprake van 1 hoofdtabel met veel foreign keys naar andere tabellen. Aangezien deze getalletjes de gebruiker niet veel zal zeggen wil ik deze informatie tonen.

    Nu kan ik dit oplossen door een query te maken met JOINS en daar een CDS aan koppelen, of ik haal alle losse tabellen op en voeg in het CDS Lookup fields toe om die gegevens te tonen.

    Het gaat hier om meer dan 10 lookup-tabellen en om 50.000+ records. Ik weet dat ik me moet realiseren of ik dit niet kan inperken, maar zijn los van dit gegeven de voor- en nadelen van beide oplossingen?

    Ik zou de losse tabellen toch nodig hebben om in de invoer-forms de controls van data te voorzien

  2. #2
    Ik zou zelf voor de JOIN gaan. Ik vind de lookup-oplossing altijd wat rommelig aanvoelen omdat er naar mijn idee vanalles aan elkaar wordt geknoopt wat van elkaar afhankelijk is. Met een JOIN heb je gewoon één dataset waarmee je je gegevens kunt tonen, als je inderdaad de gebruiker wilt laten selecteren kun je daar altijd aparte datasets voor gebruiken.
    Marcel

  3. #3
    Ik ben het met je eens dat die oplossing een beetje houtje-touwtje aanvoelt. Immers kan één verkeerd klikje in de IDE een hoop zoekwerk opleveren.

    Maar volgens mij verlies je met een JOIN het voordeel om de CDS de INSERT/UPDATE statements te laten genereren. Of gebruik je voor wijzigingen sowieso een aparte query?

  4. #4
    Nee hoor, dat gaat gewoon goed. Afhankelijk van je database en componentenset (niet alles parsed even goed) wordt dat al goed geregeld in de fields van je query. Maar dat kun je ook zelf regelen door persistent fields te maken op je query en daar met de ProviderOptions in te stellen of een veld in de WHERE en/of de UPDATE meegenomen moet worden. De "externe" velden neem je daar dus nooit in mee.
    Marcel

  5. #5
    Ok, duidelijk.

    Maar stel nu dat er naast de lookuptabellen ook een aanvullende tabel is.

    Bijvoorbeeld een hoofdtabel met basisgegevens, en afhankelijk van de gekozen module aangevuld met specifieke gegevens voor die module.

    Dus de hoofdtabel bevat basisgegevens voor alle modules. Voor iedere module geldt dan dat ieder record een verwijzing heeft naar het bijbehorende record in de hoofdtabel.

    Die gegevens zou ik ook door middel van een JOIN in één grid kunnen tonen. Echter zouden in dat geval dus de records voor beide tabellen moeten bijwerken.

    Dat betekent dat ik bij TDataSetProvider gebruik moet maken van het event OnGetTableName, of niet?

    Dan moet ik op een of andere manier bij gaan houden welk veld bij welke tabel hoort.

  6. #6
    Geen probleem, daar is de TField.Origin voor. Als je query goed wordt geparsed is deze gevuld in de form Table.Field, anders kun je deze zelf vullen.
    Marcel

  7. #7
    Kijk dat wist ik dan weer niet. Bedankt!

Thread Information

Users Browsing this Thread

There are currently 1 users browsing this thread. (0 members and 1 guests)

Tags for this Thread

Bookmarks

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •