(Ungewollter) doppelter Eintrag in DBGrid



  • Hallo!

    Eigentlich wollte ich keine Hilfe aber nun komme ich doch nicht weiter.
    Folgendes:

    Ich greife mittels Database, Table und DataSource auf MS-Access DB zu.
    Lasse mir Daten in einem DBGrid anzeigen.
    Wenn ich einen neuen Eintrag mache (über ein Formular,Editfelder) erscheint der Eintrag zunächst doppelt.(ganz oben und unten)

    Ändere ich einen der beiden Einträge(über ein Formular) verschwindet der eine Eintrag. Oder ich verlasse das Programm und starte es neu, dann ist auch nur noch einer da.
    Ist aber nicht Sinn der Übung.
    Hier der Code:

    Hauptfenster->Table1->Insert();
    Hauptfenster->Table1->Edit();
    
    Hauptfenster->Table1->FieldByName("Name")->AsString = Neuaufnahme->Edit_Name->Text;
    
    Hauptfenster->Table1->Post();
    
    Hauptfenster->Table1->Refresh();
    
    Neuaufnahme->Close();
    

    Wer gibt mir einen Tipp ?

    Danke.



  • Hallo

    entweder Edit() oder Insert() verwenden.
    Schau dir doch mal TDataSet::Insert() in der BCB-Hilfe an, insbesondere das Beispiel dazu.

    bis bald
    akari



  • Das Beispiel habe ich mir angeschaut.
    Aber ich brauche nix konvertieren.

    Es funzt ja. Bis auf den doppelten Eintrag, der später auch verschwindet.
    Aber woran liegt das, das im DBGrid 2 Einträge erscheinen ?



  • Möglicherweise an der Kombination TTable + Access...



  • Das Problem hab ich auch gehabt.
    Mein Code hat diesen Effekt nicht.Probiers mal so

    if(Table1->Active==false)
            Table1->Open();//Öffnen der Tabelle
    
      Table1->Append();//Wahl des Zugriffs
     //Hier kommt dein Edit() etc rein. 
    
    Table1->FieldByName("<Hier spalten Name>")->AsString=DBGrid1->Text;//Schreiben in Tabelle als String
    

    Hoff das hilft weiter

    *verfluch* 2002 is schon lange her.... 🤡



  • Natürlich kann man solange an den Symptomen herumdoktorn, bis es erst einmal läuft. Bis zum nächsten großen Knall...
    Man könnte natürlich auch die Ursache eliminieren: BDE und TTable. Beides Altlasten aus dem letzten Jahrtausend. Weg damit.


Anmelden zum Antworten