Error nach CreateTable
-
Hi Leute
Ich schreibe ein Pgoramm mit dem C++ Builder 2006 und habe dort eine Firebird Embedded Datenbank eingebaut.
Nun will ich aus dem Programm heraus einen neuen Table zur Datenbank hinzufügen.
1. IBTable->Active auf false setzen
2. IBTable->Tablename auf den neuen Namen setzten
3. IBTable->FieldDefs->Add Neue FieldDefs hinzufügen
4. IBTable->Create Table erstellen
5. IBTable->Active wieder auf true um auf den Table zuzugreifenHier (5.) bekomme ich jetzt immer die Fehler Meldung "Table unknown" obwohl dieser vorhanden ist.
Habe ich einen Schritt beim erzeugen eines neuen Tables vergessen???
Überlege schon seit Stunden woran das liegen kann.Danke im Voraus
Gruß Tobias
-
Wo ist der Quell-Code?

Das ist doch schon wieder eine Abstraktion.
-
AnsiString newTablePA; newTablePA = IBTable1->FieldByName("NAME")->Value ;//Namen für neue Tabelle aus einer anderen Tabelle übernehmen newTablePA= newTablePA + "PA";//Zusatz "PA" an den Namen anfügen if (IBTable6->Active )//Prüfen ob IBTable aktiv ist { IBTable6->Active = false;//Table deaktivieren damit neue Tabelle erstellt werden kann } IBTable6->TableName = newTablePA.UpperCase();//Tabellen Namen in Großbuchstaben umwandeln if (IBTable6->Exists )//Prüfen ob Tabelle bereits vorhanden ist { IBTable6->FieldDefs->Clear();//Felder löschen IBTable6->DeleteTable();//Tabelle löschen } IBTable6->FieldDefs->Add("DATE_TIME",ftString ,20,false);//Neues Feld hinzufügen //Digitale Eingänge bestimmen for (i = 1;i <= 24; i++) { AnsiString searchfor = "di" + IntToStr (i) + "="; int pos = text1.Pos(searchfor); AnsiString di = text1.SubString(pos+4,1); AnsiString diName = "DI" + IntToStr (i); if (di == "1") { IBTable6->FieldDefs->Add(diName,ftString,1 ,false);//Neues Feld hinzufügen } } IBTable6->CreateTable();//Tabelle erstellen if (IBTable6->Exists) { IBTable6->Active = true;//Wenn Tabelle vorhanden ist auf aktiv schalten } else { Application->MessageBoxA("Parameter Tabelle nicht vorhanden","Fehler",MB_ICONSTOP|MB_OK); }
-
Hat niemand eine Idee was ich falsch mache?
Ich prüfe ob die Tabelle vorhanden ist und wenn ja dann setzte ich sie auf aktiv und dabei bekomme ich dann denn Fehler, das die Tabelle unbekannt ist. Das ist doch eigentlich unlogisch oder?Gruß BTobi
-
BTobi schrieb:
Hat niemand eine Idee was ich falsch mache?
Du verwendest eine Table-Komponente. Das würde ich schon als Fehler bezeichnen. Die meisten Table-Komponenten sind kaum mehr als Marketinggags und sollen nur ein Umstellung von BDE-Anwendungen erleichtern. Für Neuentwicklungen sind sie m.E. unbrauchbar.
-
schließ mal nach dem Erstellen der Tabelle die Verbindung zur Datenbank und öffne sie wieder, dann sollte die Tabelle wirklich vorhanden sein
einfacher gehts hier wirklich über IBQuery eine neue Tabelle zu erstellen
-
Jetzt erhalte ich eine neue Fehlermeldung: "ist kein gültiger integer wert"
Aber wenn ich dann im Builder auf "Fortführen" klicke ist der Table erstellt und geöffnet.
Wie beseitige ich diesen neuen Fehler?
-
Der Fehler tritt beim schließen der Datanbank auf.