Programm bleibt stehen ohne Fehlermeldung



  • Hallo nochmal,
    also wenn ich die while-Schleife folgendermaßen anwende

    while(!DataModule1->sql_suchen_bestellungen_offline->Eof)
            for(int i=0; i < bestellung_suchen->ComponentCount; i++)
            {
                    if(bestellung_suchen->Components[i]->ClassNameIs("TCheckBox"))
                    {
                            dynamic_cast<TCheckBox*>(bestellung_suchen->Components[i])->Checked = false;
                    }
            }
    
            if(bestellter_artikel == "3201")
            {
                    bestellung_suchen->avfdvdboxen->Checked = true;
                    bestellung_suchen->avfdvdboxenmenge->Visible = true;
                    bestellung_suchen->avfdvdboxenmenge->Text = DataModule1->sql_suchen_bestellungen_offline->Fields->Fields[3]->AsString;
            }
            DataModule1->sql_suchen_bestellungen_offline->Next();
        }
    

    bleibt das Programm auch wieder stehen. Genauso wie vorher. Woran kann das liegen??

    Außerdem hätte ich noch eine Frage.
    Ich habe folgenden Code.:

    if(nn_suchen->Text != "")     sql_insert = "select * from kundendaten where nn = '"+bestellung_suchen->nn_suchen->Text+"'";
        DataModule1->sql_suchen_offline->SQL->Clear();
        DataModule1->sql_suchen_offline->SQL->Add(sql_insert);
        if(DataModule1->sql_suchen_offline->Open())
        {
           DataModule1->ds_suchen_offline->Enabled = true;
        }
    

    Wenn die SQL-Query leer ist wird das Programm mit der Meldung beendet, das die Query leer ist. Kann ich diese Fehlermeldung irgendwie abfangen, damit das Programm nicht abstürzt??

    Danke im voraus
    EPMS



  • Hallo

    bleibt das Programm auch wieder stehen. Genauso wie vorher. Woran kann das liegen??

    [cpp]
    while(!DataModule1->sql_suchen_bestellungen_offline->Eof)
    { // << Wichtig
    for(int i=0; i < bestellung_suchen->ComponentCount; i++)
    ...
    }[/cpp]

    Wenn die SQL-Query leer ist wird das Programm mit der Meldung beendet, das die Query leer ist. Kann ich diese Fehlermeldung irgendwie abfangen, damit das Programm nicht abstürzt??

    Frag doch RecordCount ab, der muß über 0 sein.

    /Edit : oder meinst du die SQL-Anweisung selber? dann doch einfach if (SQLAnweisung == "") Abbrechen();
    bis bald
    akari



  • Hallo akari,
    danke mit der while Schleife. Da fehlte mir würde ich mal sagen ganz klar die Brille. Doof sowas.

    Bei dem zweiten meinte ich nicht die SQL-Anweisung. Werde das mal mit RecNo ausprobieren.

    Gruß
    EPMS



  • Hallo akari nochmal,
    habe es jetzt mal folgendermaßen ausprobiert:

    if(nn_suchen->Text != "")     sql_insert = "select * from kundendaten where nn = '"+bestellung_suchen->nn_suchen->Text+"'";
        DataModule1->sql_suchen_offline->SQL->Clear();
        DataModule1->sql_suchen_offline->SQL->Add(sql_insert);
        if(DataModule1->sql_suchen_offline->RecNo != '0')
        {
            DataModule1->sql_suchen_offline->Open();
            DataModule1->ds_suchen_offline->Enabled = true;
        }
    

    Da kommt leider wieder die Fehlermeldung das die Query leer ist. Diese Meldung möchte ich ja gerade abfangen.
    Weiß jemand was diese Meldung auslöst?? Erst der Openbefehl oder schon die Ermittlung der RecNo??

    Danke im voraus
    EPMS



  • Hallo

    ich schrieb RecordCount :

    DataModule1->sql_suchen_offline->SQL->Add(sql_insert);
    DataModule1->sql_suchen_offline->Open();
    if(DataModule1->sql_suchen_offline->RecordCount > 0)
    {
      ...
    

    bis bald
    akari



  • Hi nochmal,
    sorry hatte ich überlesen.
    Aber wenn ich es mit RecordCount mache kommt auch das gleiche. Wieder die Meldung das die Query empty ist.

    Gibt es noch eine andere Möglichkeit das abzufangen??

    Gruß
    BeTZe



  • versuchs mal so, ist zwar etwas umständlich, funktioniert bei mir aber einwandfrei

    if(nn_suchen->Text != "")     sql_insert = "select * from kundendaten where nn = '"+bestellung_suchen->nn_suchen->Text+"'";
    DataModule1->sql_suchen_offline->SQL->Clear();
    DataModule1->sql_suchen_offline->SQL->Add(sql_insert);
    DataModule1->sql_suchen_offline->Open();
    DataModule1->sql_suchen_offline->Last();
    int num = DataModule1->sql_suchen_offline->RecNo;
    
    if (num > 0)
        {
        //Tu etwas    
        }
    


  • Hallo Linnea,

    danke für deinen Vorschlag. Aber auch hier kommt die gleiche Meldung.

    Wenn z.B. das feld nn_suchen leer ist und man auf suchen klickt kommt die Fehlermeldung "Query was empty".

    Kommt die Meldung bei dir nicht, wenn du das so machst?? Muß ich vielleicht bei der Query selber noch was beachten??

    Gruß
    EPMS



  • ach so meinst du das 😮

    na das ist doch dann noch einfacher:

    if(nn_suchen->Text != "") 
    [b]{[/b]    sql_insert = "select * from kundendaten where nn = '"+bestellung_suchen-  >nn_suchen->Text+"'";
       DataModule1->sql_suchen_offline->SQL->Clear();
       DataModule1->sql_suchen_offline->SQL->Add(sql_insert);
       DataModule1->sql_suchen_offline->Open();
       DataModule1->sql_suchen_offline->Last();
       int num = DataModule1->sql_suchen_offline->RecNo;
    
       if (num > 0)
        {
        //Tu etwas    
        } 
    [b]}[/b]
    


  • Moin Linnea,

    das stimmt allerdings. Dann ist das ja noch einfacher. Hätte ich auch selber drauf kommen können.

    Jetzt klappt es. Ich danke Euch für Eure Hilfe.

    Gruß
    EPMS


Anmelden zum Antworten