Datenbankverbindung -> ConnectionTimeout -> ProgressBar



  • Hallo Leutz!

    Hat jemand eine Idee, wie man das anders regeln könnte?
    Hatte mir vorgestellt, das jemand die Verbindungsdaten zu einem SQL-Server einträgt und geprüft wird ob die Verbindung dahin klappt.
    Während des Verbindungsversuchs sollte wie unten gezeigt der Fortschritt
    angezeigt werden.

    Soweit die Theorie... Aber warum geht das nicht?

    Wärend

    ADOConnection1->Connected = true;
    

    ausgeführt wird, werden keine Ereignisse vom Programm ausgelöst bzw. wargenommen ... was'n da kaputt?
    Muss ich da jetzt echt noch mit Thread's oder Prozessen anfangen? Für so eine harmlose Fortschrittsanzeige?

    void __fastcall TForm1::Button1Click(TObject *Sender)
    { 
        AnsiString VerbindungsString = "";
    
        VerbindungsString += "Provider=SQLOLEDB.1;Persist Security Info=True;";
        VerbindungsString += "Password=" + EditPW->Text + ";";
        VerbindungsString += "User ID=" + EditUSER->Text + ";";
        VerbindungsString += "Initial Catalog=" + EditDB->Text + ";";
        VerbindungsString += "Data Source=" + EditSERVER->Text + ";";
    
        ADOConnection1->ConnectionString = VerbindungsString;
    
        ProgressBar1->Max = ADOConnectionT1->ConnectionTimeout;
        ProgressBar1->Position = 0;
    
        Timer1->Enabled = true;
        try
        {
            ADOConnection1->Connected = true;   // sollte max. 
                                                // [ConnectionTimeout] sec dauern
        }
        catch(...)
        {
    
        }
    
        Timer1->Enabled = false;
    }
    
    //---------------------------------------------------------------------------
    void __fastcall TForm1::Timer1Timer(TObject *Sender)
    {
    
            ProgressBar1->StepBy(1);
    }
    

    Gruß,
    Lachzwerg 😃



  • Lachzwerg,

    Lachzwerg schrieb:

    Muss ich da jetzt echt noch mit Thread's oder Prozessen anfangen?

    wenn Du die Verbingungsaufnahme im Main-Tread ausführst, ist dieser halt blockiert, bis die Methode abgearbeitet ist - also ja.


Anmelden zum Antworten