Reihenfolge beim Compilieren



  • Hallo,

    ich verwende in meiner Anwendung Datenbanken. Jetzt wird beim Starten geprüft, ob die Datenbanken existieren und wenn nicht, werden diese angelegt. In einem TabSheet greife ich in der onShow() Methode auf diese Datenbanken zu.

    Wenn ich diesen Code verwende, werden die DBs VOR dem onShow() angelegt (-> kein Fehler):

    if(!FileExists(Application_Pfad + "\\Daten\\Datenbank.DB")) {
          Query_Sonstiges->SQL->Clear();
          Query_Sonstiges->SQL->Add("CREATE TABLE Datenbank (Felder)");
          //Application->MessageBox(Query_Sonstiges->SQL->Text.c_str(),"sdfs",MB_OK);
          Query_Sonstiges->ExecSQL();
       }
    

    Wenn ich diesen Code an genau der gleichen Stelle verwende, erhalte ich den Fehler, dass die DBs nicht existieren. Er wird also NACH dem onShow() ausgeführt:

    TStringList *Datenbanken = new TStringList();
       Datenbanken->Add("Datenbank");
    
       //Application->MessageBox((IntToStr(Datenbanken->Count)).c_str(),"sdfs",MB_OK);
    
       for(int i = 0; i < Datenbanken->Count; i++) {
          if(!FileExists(Application_Pfad + "\\Daten\\" + Datenbanken->Strings[i] + ".DB")) {
             Query_Sonstiges->SQL->Clear();
             Query_Sonstiges->SQL->Add("CREATE TABLE " + Datenbanken->Strings[i] + " (Felder)");
             Application->MessageBox(Query_Sonstiges->SQL->Text.c_str(),"sdfs",MB_OK);
             Query_Sonstiges->ExecSQL();
          }
       }
    

    WIESO?? Ich denke mal, das hat was mit der StringList zu tun. Wie kann ich das anders lösen, wenn ich ca. 10 DBs habe. Da will ich den Code nicht 10 mal schreiben...

    Der obige Code steht in der

    __fastcall TForm_MainForm::TForm_MainForm(TComponent* Owner)
            : TForm(Owner) {
    

    Dank euch!!!

    chrisfs



  • Ich würde die Code-Zeilen nicht in OnShow, sondern generell im Konstruktor der Form ausführen lassen.



  • Das geht leider nicht, weil jedes mal, wenn dieses TabSheet angezeigt wird, stehen neue Daten drin...



  • Niemand?

    das kann ich gar nicht glauben, hier gibt es soviele Topleute... Ich brauche das wirklich dringend 😞 Tut mir echt leid, dass ich hier immer nur Frage und kaum antworte, aber ich steig bei C++ noch nicht 100% durch und bevor ich hier Müll rauslaber bin ich lieber ruhig 🙂

    Vielen Dank!
    chrisfs



  • Hi,

    führe doch mal deinen Code (zum Anlegen der Tabellen) in OnCreate der Forms aus!

    MFG

    Alexander Sulfrian



  • chrisfs schrieb:

    das kann ich gar nicht glauben, hier gibt es soviele Topleute

    Vielleicht solltest du in Erwägung ziehen, dass es evtl. an der Formulierung deiner Fragen liegt, dass du kaum Antworten bekommst, und daran denken, dass auch die "Topleute" nicht immer Lust haben, erst 'ne halbe Stunde zu raten, was du eigentlich erreichen willst und die Widersprüche in deinen Angaben aufzulösen?


Anmelden zum Antworten