Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi Daten satz aus Access DB löschen... Howto??? (https://www.delphipraxis.net/63036-daten-satz-aus-access-db-loeschen-howto.html)

Archer 13. Feb 2006 09:44

Datenbank: Access • Zugriff über: ADO / Jet

Daten satz aus Access DB löschen... Howto???
 
Hallo!

Nachdem ich mein Programm jetzt auf ADO und Access umgebaut habe, bin ich auf folgendes Problem gestossen:

Ich habe eine Tabelle in einer Access DB, und wähle mittels DBNavigator den zu löschenden Datensatz aus. (RecordX)
Nun versuche ich verzweifelt, mittels Click auf Button 1, diesen Datensatz zu löschen.

hier derCode:
Delphi-Quellcode:
procedure TForm11.Button2Click(Sender: TObject);
begin
adotable1.Close;
adotable1.Open;
adotable1.edit;
adotable1.RecNo:=recordX;
adotable1.Delete;
adotable1.Post;
adotable1.Close;
adotable1.Open;
label13.Caption:=inttostr(Adotable1.RecordCount);

 
end;
Bei der Ausführung bekomme ich dann die Fehlermeldung:
ADOTable1 not in Edit Mode.

Hat da jemand mal einen Tip für mich??

Danke!
Jochen

Frank Borland 13. Feb 2006 10:18

Re: Daten satz aus Access DB löschen... Howto???
 
Zitat:

Zitat von Archer
Hallo!
Bei der Ausführung bekomme ich dann die Fehlermeldung:
ADOTable1 not in Edit Mode.

Hat da jemand mal einen Tip für mich??
Danke!
Jochen


Moin, moin,

Du wilst gleichzeitig editieren, löschen und speichern, siehe unten.
Dein Debugger dürfte in der Zeile mit dem "Post" stehengeblieben sein.
Ich würde immer ein SQL- Statement al la delete from tabelle where bedingung vorziehen.

Gruß

Malte


Delphi-Quellcode:
procedure TForm11.Button2Click(Sender: TObject);
begin
adotable1.Close;
adotable1.Open;
// adotable1.edit;
adotable1.RecNo:=recordX;
adotable1.Delete;
// adotable1.Post;
adotable1.Close;
adotable1.Open;
label13.Caption:=inttostr(Adotable1.RecordCount);
end;

Archer 13. Feb 2006 10:41

Re: Daten satz aus Access DB löschen... Howto???
 
danke für den Tip, ich habe die Änderungen nach Deinem Vorschlag durchgeführt, aber nun bekomme ich eine neue Fehlermeldung:

sinngemäß:

Die Schlüsselspalteninformationen sind ungenügend oder inkorrekt. Es sind zu viele Zeilen von der Aktualisierung betroffen.

Was will mir das sagen??

SQL Statements möchte ich nur ungern verwenden, da meine Programm nur ein kleines Minimalteil sein soll.


Danke, Jochen

localizer 13. Feb 2006 10:45

Re: Daten satz aus Access DB löschen... Howto???
 
Sind bei Dir alle Datensätze eindeutig identifizierbar? Ist ein Primärschlüssel vorhanden? Ist ein ID Feld sicher nicht zweimal vergeben (z.B leer ist etc.)?

Archer 13. Feb 2006 10:51

Re: Daten satz aus Access DB löschen... Howto???
 
da bin ich mir jetzt nicht so sicher...

Wie kann ich das prüfen?
Ich denke, mir fehlt sowas komplett.
Ich erzeuge meine Records bisher einfach über
Delphi-Quellcode:
ADOtable1.AppendRecord...
und wähle die datensätze zur Weiterverarbeitung mittels DBNavigator aus.
Dieser Teil funktioniert bisher prima.

Wie kann ich das anpassen?
Auch der Button Delete Record (nbDelete) des Navigators bringt den gleichen Fehler...

Danke, jochen

localizer 13. Feb 2006 12:06

Re: Daten satz aus Access DB löschen... Howto???
 
probier mal einfach nur in der betreffenden Access Tabelle ein Feld "ID" einzufügen und dieses mit Autowert zu befüllen (du kannst es auch zusätzlich als Primärschlüssel deklarieren)

Damit ist für SQL gewährleistet, dass es keinen einzigen Datensatz in der Tabelle gibt der alle Felder gleich hat. Um dieses Feld brauchst du dich auch nicht weiter zu kümmern.

Bei mir hat das geholfen.

aschne1 13. Feb 2006 12:13

Re: Daten satz aus Access DB löschen... Howto???
 
Hallo

Ist es nur eine Tabelle oder sind eventuell die Relationen für Dein Problem verantwortlich? Dann könnte der Datensatz nicht gelöscht werden, da noch Daten an ihm hängen.

Gruss

Archer 13. Feb 2006 12:50

Re: Daten satz aus Access DB löschen... Howto???
 
Seltsame Dinge gehen hier vor sich... :gruebel:

Ich habe eben die Löschfunktion für die zweite Tabelle der Datenbank wie oben
dargestellt gecodet, nichtserwartend auf "Play" gedrückt, und siehe da: :shock:
it works :!:

keine Ahnung was das soll...
... aber ich werde mich nicht beklagen, wenns tut :-D

Vielen Dank für Eure Hilfe!
Ich melde mich, wenns nicht mehr funktioniert :zwinker: !

Jochen


Alle Zeitangaben in WEZ +1. Es ist jetzt 13:37 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz