Results 1 to 13 of 13

Thread: gebruik van een set uit een tabel

  1. #1
    John Kuiper
    Join Date
    Apr 2007
    Location
    Almere
    Posts
    8,747

    gebruik van een set uit een tabel

    Zijn er gevallen bekend waardoor je een het in een dataveld kan gebruiken in delphi? in MySQL (en waarschijnlijk ook in andere databases) kan je dit veld aanmaken:
    Code:
     CREATE TABLE set_test(
        rowid INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY,
        myset SET('Travel','Sports','Dancing','Fine Dining')
      );
    Ik zie delphi daar helemaal niet mee doen. Zelfs als ik een DBcombobox neerzet, zie ik geen waarden van dat veld. Ik weet dat deze sets worden omgezet naar een decimal / binary, maar de set, die je invoert, zal toch ook in de DDL staan.
    Delphi is great. Lazarus is more powerfull

  2. #2
    Waarom sla je de set op je database? Waarom niet de Ord() van je set. Deze moet je dan gewoon tweemaal aanmaken. Indien je de waarden zelf wilt, sla je ze gewoon op als een commatext, toch?

    P.S.: TDbRoot heeft deze mogelijkheid wel. Zie
    opslaan variabele data door gebruik te maken van een TStringDataSetField.
    Last edited by Handsaeme; 16-Dec-08 at 17:08.

  3. #3
    John Kuiper
    Join Date
    Apr 2007
    Location
    Almere
    Posts
    8,747
    Omdat deze functionaliteit er gewoon in zit, dus waarom zou je het niet gebruiken?
    Het zou mooi zijn als de datafield als set rechtstreeks kan gebruiken zonder eerst zelf een set te maken.
    Delphi is great. Lazarus is more powerfull

  4. #4
    Counting your refs Paul-Jan's Avatar
    Join Date
    Feb 2002
    Location
    Lage Zwaluwe
    Posts
    2,160
    Nou, zo "gewoon" is dergelijke functionaliteit ook weer niet, vziw kennen databases als MSSQL en Oracle dit echt niet (correct me if I'm wrong), het is nogal MySQL-specifiek. Het zou mij dan ook niets verbazen als Delphi er verder geen ondersteuning voor heeft.

  5. #5
    Ik ben het in Oracle inderdaad nog nooit tegengekomen, maar in Access dan weer wel.
    Maar ja. In Oracle bestaan zelfs auto-increment velden niet.
    1+1=b

  6. #6
    John Kuiper
    Join Date
    Apr 2007
    Location
    Almere
    Posts
    8,747
    Quote Originally Posted by GolezTrol View Post
    Ik ben het in Oracle inderdaad nog nooit tegengekomen, maar in Access dan weer wel.
    Maar ja. In Oracle bestaan zelfs auto-increment velden niet.
    Oracle gaat uit van een goede rationele database met de juiste links en indexen.
    Dat is toch een goede basis geweest voor Oracle, want ze zijn toch nog steeds #1 op database niveau (correct me if i'm wrong).
    Delphi is great. Lazarus is more powerfull

  7. #7
    Ja, maar je moet het in Oracle wel zelf aan elkaar plakken. Indexen bestaan wel degelijk, maar voor het implementeren van een auto nummering, moet je een zgn sequence maken, een insert before trigger schrijven en in die trigger de volgende waarde van de sequence nemen en in het betreffende veld plakken. Je hebt dan wel een ophogende nummering, maar auto kun je het niet meer noemen.

    Of Oracle nummer 1 is weet ik trouwens niet, maar het werkt verder inderdaad wel best.
    1+1=b

  8. #8
    In iedere database zitten er data-base specifieke velden en dat is zeker het geval voor Oracle.

    Wat is het doel eigenlijk om constanten in je database te gaan gebruiken?
    De verbazing begint waar de kennis ophoudt

  9. #9
    Ja, maar je moet het in Oracle wel zelf aan elkaar plakken.
    Dat is niet alleen in Oracle zo. In bv Interbase / Firebird werkt dat ook zo, alleen heeft het dan een Generator.

    Ik weet niet hoe de Delphi componenten voor Oracle werken, maar voor Interbase zijn er diverse componenten die een auto inc veld kunnen maken waarbij ze de generator gebruiken.

    Voordeel van de Generators bij Interbase is dat ze lopen buiten de transactie context, dus gegarandeerd altijd uniek zijn binnen de database. Of dat bij de Oracle sequencers ook zo is weet ik niet.

  10. #10
    John Kuiper
    Join Date
    Apr 2007
    Location
    Almere
    Posts
    8,747
    Quote Originally Posted by rik.osstyn View Post
    In iedere database zitten er data-base specifieke velden en dat is zeker het geval voor Oracle.

    Wat is het doel eigenlijk om constanten in je database te gaan gebruiken?
    Ik heb het nu anders opgelost Rik, maar de bedoeling was als volgt:
    Door een set / enum te maken in de database, wilde ik rechtstreeks via een select offensief reschtstreeks springen naar de juiste case.
    Voorbeeld:
    Code:
    TSoort = (ch,nu,fl,dt);   // staat in het veldtype van een tabel
    
    var Soort : Tsoort
    case Soort of
      ch: ....
      nu: ....
      dt: .....
      fl : .....
    end;
    Dit geeft beter aan om welke select set gaat, dan als je met nummers werkt.
    Als dit rechtsreeks vanuit de tabel kwam, dan hoef je niet verder na te denken en wordt automatisch de juiste set / enum gekozen.

    Maar delphi ziet dit als een string (als je via je fieldlist sleept naar de form).
    Delphi is great. Lazarus is more powerfull

  11. #11
    Nee, dat gaat inderdaad niet lukken. Logisch ook want dat zou betekenen dat je database Delphi code zou moeten genereren en zo dicht staat de code niet tegen de database aan.
    Marcel

  12. #12
    senior member PeterVercruysse's Avatar
    Join Date
    Nov 2006
    Location
    Rijsel
    Posts
    1,608
    Voor iets dergelijks gebruikt men normaal een ADT-Field.

    Hoe je dit soort veld gebruikt in combinatie met MySQL weet ik niet, maar als het mogelijk is, is het via deze weg, waarschijnlijk echter niet zonder wat geknutsel.
    Gras groeit niet sneller door er aan te trekken

  13. #13
    Ik schat het succes hiervan niet al te hoog in, want ook je drivers moeten meewerken.
    De verbazing begint waar de kennis ophoudt

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
  •