Datenbank (mySQL) "refreshen"



  • Hi,
    erstmal wir kann man eine Datenbank automatisch refreshen? Bis jetzt mach ichs mit nen Timer und dann ->Refresh();. Ist allerdings keine gute Möglichkeit!

    Und dann hab ich noch ein Problem:
    Der User kann bei mir in einem DBGrid einen Datensatz auswählen! Beim refreshen springt der Cursor aber immer auf den 1. Datensatz! Wie kann ich das verhindern?

    Hab schon das hier versucht. Klappt allerdings nicht?

    TField *test;
     test = DBGrid1->SelectedField;
     ZMySqlTable1->Refresh(); // Zeo-Komponente für mySQL Zugriff
     DBGrid1->SelectedField = test;
    

    Was mache ich falsch?

    Danke

    Alexander Sulfrian



  • hi, wenn du die db refresht ändert sich ja deine ergebnismenge, um den vorigen datensatz wieder zu markieren, wird dir wohl nichts weiter übrigbleiben, als eine weitere abfrage zu schreiben, die dir den markierten datensatz aus deiner neuen ergebnismenge raussucht.



  • was hab ich da nur für quatsch erzählt?

    int x = db->FieldByName("schluesselfeld")->AsInteger;
    db->Refresh;
    while(x != db->FieldByName("schluesselfeld")->AsInteger)
       db->Next();
    

    nicht sehr schön, aber wirksam

    [ Dieser Beitrag wurde am 11.02.2003 um 09:02 Uhr von DBler editiert. ]



  • Hi,

    @Alexander Sulfrian
    erstmal wir kann man eine Datenbank automatisch refreshen? Bis jetzt mach ichs mit nen Timer und dann ->Refresh();

    oh....nou
    besser ist UDP, broadcast address, port, method ReceiveBuffer(...) [ReceiveString(...)]

    @DBler
    *```cpp
    int x = db->FieldByName("schluesselfeld")->AsInteger;
    db->Refresh;
    while(x != db->FieldByName("schluesselfeld")->AsInteger)
    db->Next();

    
    :confused:  
    
    ```cpp
    int x = db->FieldByName("schluesselfeld")->AsInteger;
    db->Refresh();
    if (!db->Locate("schluesselfeld", x, TLocateOptions() << loCaseInsensitive))
     db->First();
    


  • @blazek jaroslav

    viel besser



  • Hi,
    also der Vorschlag mit Locate funktioniert ganz gut! Aber Wie kann ich sicherstellen das der Datansatz der vor dem Refreshen oben war (oder der nächste der noch da ist) auch nach dem aktuallisieren wieder oben ist?

    Danke

    Alexander Sulfrian


Anmelden zum Antworten