Results 1 to 3 of 3

Thread: Tabellen in een database

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

    Angry

    Hoe kom ik er achter welke tabellen in een database zijn opgenomen? Daarna wil ik graag weten uit welke velden een tabel bestaat.

    Nu dacht ik het antwoord ergens gezien te hebben, maar ik kan het helaas niet meer terugvinden! Ik zal wel weer eens op de verkeerde manier aan 't zoeken zijn.
    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

  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

    Talking

    Na wat zoeken in de BDE32.hlp en enig experimenteren kwam ik op de volgende oplossing:
    Code:
    procedure TForm1.Button2Click(Sender: TObject);
    var
      hCursor : hDBICur;
      ListDesc : TBLBaseDesc;
      hFieldCur: hDBICur;
      rslt: DBIResult;
      Field: FLDDesc;
    begin
      Table1.Open;
      Check(DbiOpenTableList(Table1.DBHandle, False, False, 'dbo.*', hCursor));
      Memo1.Clear;
      Memo2.Clear;
      while (DbiGetNextRecord(hCursor, dbiNOLOCK, @ListDesc, nil) = dbiErr_None) do begin
        if (pos('dbo', ListDesc.szName) = 1) then begin
          Memo1.Lines.Add(ListDesc.szName);
          Check(DbiOpenFieldList(Table1.DBHandle, ListDesc.szName, nil, True, hFieldCur));
          repeat
            rslt := DbiGetNextRecord(hFieldCur, dbiNOLOCK, @Field, nil);
            if (rslt = DBIERR_NONE) then begin
              Memo2.Lines.Add(ListDesc.szName + ': ' + Field.szName);
            end;
          until (rslt <> DBIERR_NONE);
        end;
      end; // while
      Table1.Close;
    end;
    Het resultaat van bovenstaande code is dat de naam van alle tabellen die in de database staan in Memo1 worden gezet. Van alle tabellen worden de velden in Memo2 gezet.

    Helemaal tevreden ben ik hier niet mee. Omdat ik geen onderscheid kan maken tussen systeemtabellen en 'user'tabellen. Dus wie helpt mij daar mee?
    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
    Ik ben zelf niet zo bekend met de BDE source, er zijn gelukkig wel wat componenten die e.e.a. voor je regelen. De RX library heeft twee componenten ([it]TDatabaseItems en TTableItems[/it]) om tabellen en velden uit een BDE database te trekken.

    RX is gratis en wordt met source geleverd. Je kunt dus het component gebruiken, maar je kunt ook de source induiken om te zien he ze dat nou voor elkaar hebben gekregen.

    RX Library: www.rxlib.com
    Marcel

Thread Information

Users Browsing this Thread

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

Similar Threads

  1. Replies: 34
    Last Post: 18-Dec-03, 00:23

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
  •