2016-10-27 5 views
-6

Ich suche nach einer Lösung für ein ziemlich ernstes Problem, vor dem ich stehe; Ich möchte einen Datensatz in einem dbGrid löschen, aber wenn ich auf meine codierte Schaltfläche klicke und "Löschen" bestätige, finde ich keine unmittelbaren Ergebnisse. Um das Ergebnis des gelöschten Datensatzes zu finden, muss ich das Programm schließen und neu starten. Nur dann sehe ich, dass der Datensatz gelöscht wird.Löschen von Datensätzen in einem dbGrid Delphi 2010

Meine Codierung sieht im Grunde wie folgt

procedure TfrmPunte.btnDeleteClick(Sender: TObject); 
var 
sName, sLeerderNo : string; 
begin 
with dmPunte do 
    begin 
    sLeerderNo := tblLeerder['LeerderNr']; 
    sName := tblLeerder['NaamVan']; 
    if MessageDlg('Is jy seker dat jy ' + sName + ' met Leerder Nommer ' + sLeerderNo + ' wil wis van die rekords? Neem kennis dat al die rekords van sy/haar aktiwiteite ook uitgevee sal word!', mtWarning, [mbOk, mbCancel],0) = mrOK then 
     tblDeelname.Open; 
     tblDeelname.First; 
     while NOT tblDeelname.Eof do 
     begin 
      if tblDeelname['LeerderNr'] = sLeerderNo then 
      tblDeelname.Delete; 
      tblDeelname.Next; 
     end; 
     tblLeerder.Delete; 
     tblLeerder.Active := False; 
     tblLeerder.Active := True; 
    end; 
end; 

ich eine ADO-Tabelle verwenden verbunden Verbindung zu einer Access-Datenbank mit ADO. Ich entschuldige mich, einige Variablennamen sind in Afrikaans. Was soll ich tun?

+0

Der Datensatz, der gelöscht werden sollte, wird weiterhin im db-Grid angezeigt, ich verwende eine ADO-Tabelle mit ADO-Verbindung. –

+2

Auf einen Blick: Nach dem Löschen wird ein Datensatz nach dem Löschen eines Datensatzes übersprungen. Sie müssen sonst vor dem nächsten einfügen –

+0

Ich nehme an, dass "TblLeerder" und "TblDeelname" sind beide TADODataSet und im Raster wird der Inhalt von "TblDeelname" angezeigt. Dann müssen Sie actice: = false und active: = true nach tblDeelname.delete angeben. Wenn tblLeerder mit dem DBGrid verbunden ist, ist die Frage was willst du sehen? –

Antwort

0

Table.refresh funktioniert nicht in jeder Umgebung. Der sichere Weg ist

Table.Active := False; 
Table.Active := True; 

Achten Sie auf ein Problem, dass der tatsächliche Datensatz verloren ist. Sie können es speichern und zurückfinden.

+0

Danke für den Rat Christine, ich habe es versucht, aber leider funktioniert es immer noch nicht .... –

+1

Da muss man genauer sein. Bitte zeigen Sie uns den vollständigen Code (welcher Typ ist Tabelle?). Was bedeutet Löschen in dbgrid? Ich würde verstehen: Datensatz im Datensatz löschen und dbgrid aktualisieren ??? –

+0

Ich habe meinen Code in den Antworten hinzugefügt Christine, Vielen Dank für Ihre Hilfe bis jetzt. –