Results 1 to 3 of 3

Thread: Kolomnamen veranderen in een data base bij DBF (Lazarus)

  1. #1

    Kolomnamen veranderen in een data base bij DBF (Lazarus)

    Hallo allemaal

    Hoe verander je een kolomnaam in een database in DBF. Component DBF in Lazarus.

    Met een groet Frans

  2. #2
    zoeken op 'dbf database column name' met duckduckgo vind ik op
    stackoverflow
    dat dit kan met:
    "ALTER TABLE tablename RENAME COLUMN OUDENAAM TO NIEUWENAAM"

    Aangegeven wordt dat het met een ADO driver niet mogelijk is. Dus hopen maar dat je dat niet gebruikt ...

    Succes!

  3. #3
    Met die specifiek ADO driver. ADO is alleen een abstractielaag. Het zou prima mogelijk moeten zijn om daarmee dat soort statement uit te voeren, mits de onderliggende driver het ondersteunt.

    Maar het DBF component in Lazarus, daarmee bedoel je denk ik TDbf? De documentatie daarvan beschrijft hoe dat werkt.

    In een notendop, je beschrijft de nieuwe structuur van je tabel, en geeft aan hoe de oude structuur en de nieuwe samenhangen. Op basis van die definitie, kan de RestructureTable method de tabel herstructureren. Je kan een kopie maken van de huidige `DbfFieldDefs` van het component als basis voor de nieuwe structuur, en daarin de kolomnaam aanpassen.

    Voorbeeld uit hoofdstuk 6.35 van de doc, met vertaalde en aangepaste comments.
    Quote Originally Posted by 6.35.1 Example
    Code:
      NewFieldDefs: TDbfFieldDefs;
      NewFieldDef: TDbfFieldDef;
      Dbf1: TDbf;
    ...
      // Maak een nieuwe field list
      NewFieldDefs := TDbfFieldDefs. Create ( Self);
      // Ken de huidige eraan toe
      NewFieldDefs. Assign ( Dbf1. DbfFieldDefs);
    
      // Voorbeeld voor aanpassen van de size van (string) fields:
      NewFieldDefs. Items [0]. Size := 40;
    
      // Voorbeeld van het hernoemen van velden:
      NewFieldDefs. Items [1]. FieldName := ’RENAMED ’;
    
      // Voorbeeld van toevoegen van een float field
      NewFieldDef := NewFieldDefs. AddFieldDef;
      NewFieldDef. FieldName := ’NEW_FLOAT ’;
      NewFieldDef. FieldType := ftFloat;
      NewFieldDef. Size := 10;
      NewFieldDef. Precision := 3;
    
      // Tabel herstructureren en direct packen
      Dbf1. Restructure( NewFieldDefs , true);
    
      // Herstructureren zonder te 'packen'
      // Dbf1. Restructure( NewFieldDefs , false );
    
      // De tijdelijke field defs moet je zelf vrijgeven.
      NewFieldDefs. Free;
    Last edited by GolezTrol; 15-Nov-21 at 12:46.
    1+1=b

Thread Information

Users Browsing this Thread

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

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
  •