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 TABLESLG, 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