Felddatentypen auslesen



  • Hallo,

    ich will Updates einer Datenbank automatisieren. Der Kunde hat eine Datenbank, ich sende eine Update-Datenbank zu mit allen Tabellen. Nun werden beide Datenbanken miteinander verglichen - gibt es die Tabelle schon, dann werden die einzelnen Felder geprüft, bei Bedarf neue angefügt oder bestehende Felddatentypen verändert. Wenn die Tabellen aus dem Update nicht leer sind, dann werden danach die Inhalte übertragen.

    Soweit zu dem was ich machen will.

    Die Feldnamen kriege ich raus, aber mit dem Rest hab ich Probleme. Ich brauche alle Tabellen, die es gibt und die Felddatentypen / Größen usw dazu.

    Wer hilft mir auf die Sprünge ? DANKE

    objQuery->SQL->Clear();
       objQuery->SQL->Add("Select * from Patienten");
       objQuery->Open();
    
       for (int i = 0; i < objQuery->FieldDefList->Count; i++)
       {
          ListBox1->Items->Add(objQuery->Fields->Fields[i]->FieldName);
       }
    


  • Hallo,

    das geht mit den entsprechenden (My)SQL Befehlen

    - SHOW COLUMNS
    - DESCRIBE
    - SHOW TABLES

    LG, Micha



  • Hallo Micha,

    danke für den Tip. Ich probier es. Ist nur blöderweise ne Access-DB. Einige SQL-Befehle gehen da nicht.

    Ernst



  • Hi,

    blos mal ein Beispiel das die einzelnen Felder einer mit Select * from ... Geöffneten Datei in einer Stinggrid listet, ist zwar Delphi, aber die gleiche VCL wie C++Builder, also nur die Sprache ein wenig umstricken:

    Felder := DbExplorerToolsForm.ArbeitsTable.FieldCount;
        HStringGridFelder.RowCount                := Felder + 1;
        for n := 0 to Felder - 1 do
        begin
          HStringGridFelder.Cells[ 0, n + 1 ]     := IntToStr( n + 1 );
          HStringGridFelder.Cells[ 1, n + 1 ]     := DbExplorerToolsForm.ArbeitsTable.Fields[ n ].FieldName;
          HStringGridFelder.Cells[ 2, n + 1 ]     := GetFeldDataType( DbExplorerToolsForm.ArbeitsTable.Fields[ n ].DataType );
          case DbExplorerToolsForm.ArbeitsTable.Fields[ n ].DataType of
              ftString,
              ftMemo,
              ftFmtMemo,
              ftFixedChar,
              ftWideString : HStringGridFelder.Cells[ 3, n + 1 ] := IntToStr( DbExplorerToolsForm.ArbeitsTable.Fields[ n ].Size );
            else
              HStringGridFelder.Cells[ 3, n + 1 ] := '';
          end;
          HStringGridFelder.Cells[ 4, n + 1 ]     := GetFeldFieldKind( DbExplorerToolsForm.ArbeitsTable.Fields[ n ].FieldKind );
        end;
        HStringGridFelder.Col := HStringGridFelder.FixedCols;
        HStringGridFelder.Row := HStringGridFelder.FixedRows;
    

    Viel Erfolg wünscht Mümmel


Anmelden zum Antworten