Results 1 to 6 of 6

Thread: Lijst van een dbLookupComboBox

  1. #1

    Lijst van een dbLookupComboBox

    Ik heb een DBLookupComboBox gekoppeld aan een field van een database. Dit field heet b.v. bedrijfsnaam. Nu kan het voorkomen dat dezelfde bedrijfsnaam meerdere keren in de database voorkomt in het field bedijfsnaam. In de lijst van de LookupComboBox wil ik echter maar 1 keer dat de bedrijfsnaam voorkomt. Hoe kan ik dit het beste oplossen?

    Gerard

  2. #2
    Old Navigator Matthijs's Avatar
    Join Date
    Mar 2001
    Location
    Ede, NL. Delphi: Delphi 7/2005 :). Matthijs schrijf je Matthijs
    Posts
    2,199
    Hi Gerard,

    In principe zou je hier in je DB al voor moeten zorgen. Bijv. door te controleren voordat er een nieuw record wordt gepost of de bedrijfsnaam al voorkomt.
    Anders zou je het eens moeten proberen met een DataSource en TQuery als ListSource voor je DBLookupComboBox. In het SQl statement kun je dan iets gebruiken als "select distinct ... "
    Last edited by Matthijs; 11-Jul-01 at 22:16.
    What's in a sig?

    Would my posting be less valuable if it didnot have a sig? (Vrij naar William S.)

    Let op de kleine lettertjes. For all postings: e&oe!
    This program performed an illegal function, the police are on their way

  3. #3
    Hmm, als ik dit zo lees krijg ik behoorlijk de kriebels. Ik zou eerste maar eens het data model verder uit normaliseren. Dat kan een hoop problemen voorkomen in de toekomst.

    Een aparte tabel met bedrijfsnamen of bedrijfs gegevens en die koppelen aan de tabel waarin de DBLookupComboBox het veld moet wijzigen en ipv de naam een ID gebruiken om in het nieuwe record te plaatsen

    Marcel Vroone

  4. #4
    Beste Marcel Vroone,

    Ik ben geen expert in het gebruik met Delphi (sterker nog ben daar net mee begonnen). Misschien kan je je nader verklaren met de term 'kan een hoop problemen voorkomen in de toekomst'. Tot voor kort gebruikte ik namelijk een hoofdtabel en subtabellen in mijn programma. Waar ik echter mee zat is dat bij het vullen van de hoofdtabel de desbetreffende subtabellen ook gevuld moesten worden met exact dezelfde omschrijving als die ik voor het desbetreffende veld in de hoofdtabel had gebruikt. (b.v. de naam van een bedrijf moet hetzelfde zijn in de hoofdtabel als in de subtabel) Ongetwijfeld is dat wel weer op te vangen door een programma hiervoor te maken.

    Gerard

  5. #5
    Beste Gerard,

    Een van de problemen die je zou kunnen tegenkomen is dat een bedrijf van naam kan veranderen. Wanneer je de bedrijfsnaam als unieke identificatie gebruikt in een of meerdere tabellen moet je deze naam overal aan gaan passen. Daarbij moet je ook ontzettend op letten dat er geen fouten gemaakt worden anders komt het bedrijf misschien wel 3 keer voor in plaats van 1.

    Het beste is dus om een tabel met de gegevens van het bedrijf te maken met een kolom die je bijvoorbeeld 'BEDRIJFS_ID' noemt. Als je het allemaal in Paradox tabellen doet zou je voor het datatype 'Autoinc' kunnen kiezen. Dit datatype zorgt ervoor dat er automatisch een ID wordt gegenereerd wanneer een record wordt toegevoegd aan de tabel.

    Wanneer je een tabel hebt zoals hierboven beschreven kun je ipv van het veld bedrijfsnaam het veld 'BEDRIJFS_ID' gebruikten om vanuit een andere tabel naar een bedrijf te refereren.

    Verder moet je rekening houden met de referentiele integriteit. Dwz je kan niet zomaar een bedrijf uit de database verwijderen maar je moet er eerst zeker van zijn dat dit record niet meer gebruikt wordt.

    Nu even terugkomend op het praktische gedeelte. Wanneer je een situatie hebt zoals hier boven beschreven heb je in principe twee datasets. Een dataset met de bedrijfs gegevens(BEDRIJF) en een dataset die waarin een referentie naar een bedrijf moet worden opgenomen (REFER).

    Als je een DBLookUpCombox op het form geplaatst hebt kun moet je het volgende doen omdeze goed in te stellen.

    1) Koppel de datasource aan de datasource van de dataset (REFER) en selecteer het datafield (BEDRIJFS_ID).
    2) Koppel de listsource aan de datasource van de dataset (BEDRIJF) en als list field neem je het veld met de naam van het bedrijf.
    3) Als laatste selecteer je in de property KeyField het veld 'BEDRIJFS_ID'

    Als dit allemaal gelukt is zal je geen dubbele bedrijfsnamen meer tegenkomen. Indien je meer over dit soort dingen wil weten kan ik je aanraden een boek te lezen over relationele databases. Hierin worden alle aspecten van het opzetten van een goed datamodel beschreven.

    Mocht je verder nog vragen hebben, ben ik bang dat je even geduld zal moeten hebben ivm met mijn vakantie.

    Marcel Vroone

  6. #6
    Marcel,

    Bedankt voor je heldere uitleg.
    Prettige vakantie

    Gerard

Thread Information

Users Browsing this Thread

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

Similar Threads

  1. CTTM 2003
    By Marcel in forum Koffiehoek
    Replies: 26
    Last Post: 02-Jun-03, 13:02

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
  •