Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi RecordCount nach löschen eines Datensatzes 0 (https://www.delphipraxis.net/105946-recordcount-nach-loeschen-eines-datensatzes-0-a.html)

BrinkschulteManfred 2. Jan 2008 20:59

Datenbank: Microsoft Access • Version: 2000 • Zugriff über: ADO; ADODataSet ; ADOCommand

RecordCount nach löschen eines Datensatzes 0
 
Hallo und ein frohes neues Jahr zusammen!

Ich habe gerade mal das Problem, dass ich nach löschen eines Datensatzes per ADOCommand "DELETE ..." als Ergebnis von ADODataSet.RecordCount eine 0 bekomme, obwohl noch viele Datensätze da sind. Ich greife per DELPHI7 auf eine Access 2000 Datenbank per ADO zu. Muss nach dem ADOCommand.Execute eventuell noch ein Commit oder dergleichen kommen?

Besten Dank für die Antworten

Manfred Brinkschulte

hoika 3. Jan 2008 06:45

Re: RecordCount nach löschen eines Datensatzes 0
 
Hallo,

auf RecordCount würde ich mich gar nicht verlassen.
Aber naja:

Versuch mal DataSet.Refresh oder DataSet.First


Heiko

BrinkschulteManfred 3. Jan 2008 07:13

Re: RecordCount nach löschen eines Datensatzes 0
 
Guten Morgen Heiko,

habe ich schon ausprobiert, sowohl ADODataSet.Refresh, also auch ADODataSet.Requery also auch ADODataSet.First vor dem RecordCount führen zum selben inkorrekten Ergebnis.
Wenn ich während des Programmlaufes mir die Tabelle in Access anschaue, sehe ich auch den gelöschen Datensatz noch in der Tabelle als #gelöscht# in jeder Zelle der Zeile. Erst, wenn das Programm beendet wird, ist diese Zeile auch weg. Daher war meine Vermutung, dass man noch ein COMMIT oder dergleichen einbauen muss. Eventuell gibt es auch Parameter, die man dem ADOCommand.Exceute mitgeben muss ?

Beste Grüße
Manfred

hoika 3. Jan 2008 07:20

Re: RecordCount nach löschen eines Datensatzes 0
 
Hallo,

hm, über AdoCommand, dann würde ich die Tabelle schliesen und neu öffnen.


Heiko

BrinkschulteManfred 3. Jan 2008 07:22

Re: RecordCount nach löschen eines Datensatzes 0
 
Das Problem ist nur, dass die Tabelle gar nicht offen ist :(

hoika 3. Jan 2008 08:07

Re: RecordCount nach löschen eines Datensatzes 0
 
Aha !!!

wieso gehst du dann davon aus,
dass RecordCount einen sinnvollen Wert hat ?
Der Wert kann sich doch ständig ändern,
z.B. wenn ein anderer Benutzer auch gerade was an der Tabelle macht.


Heiko

Jelly 3. Jan 2008 08:27

Re: RecordCount nach löschen eines Datensatzes 0
 
Also wenn du über AdoCommand einen SQL Befehl à la:
SQL-Code:
delete from Table where Name = 'Blubb'
ausführst, wieso sollte dann in der RecordCount Eigenschaft was Sinnvolles drinstehen. Dann musst du schon anschliessend z.B. ein
SQL-Code:
select count(*) from Table
ausführen, um die Anzahl der Datensätze zu ermitteln.

hoika 3. Jan 2008 08:52

Re: RecordCount nach löschen eines Datensatzes 0
 
Hallo Jelly,

es macht schon manchmal Sinn,
festzustellen, wie viele Records gelöscht worden sind,
aber ROWSAFFECTED wird von Access bestimmt nicht unterstützt.


Heiko

BrinkschulteManfred 3. Jan 2008 09:17

Re: RecordCount nach löschen eines Datensatzes 0
 
Zitat:

wieso gehst du dann davon aus,
dass RecordCount einen sinnvollen Wert hat ?
Der Wert kann sich doch ständig ändern,
@Hoika: Ja, natürlich kann sich der Wert ständig ändern, aber zumindest sollte er nicht 0 sen, außer wenn momentan tatsächlich keine Datensätze vorhanden sind. Andere Nutzer im Netz kann ich momentan ausschließen, da es sich bei der Anwendung vom Thema her um eine Einzelplatzanwendung handelt.

Zitat:

Also wenn du über AdoCommand einen SQL Befehl à la:

SQL-Code:
delete from Table where Name = 'Blubb'
ausführst, wieso sollte dann in der RecordCount Eigenschaft was Sinnvolles drinstehen. Dann musst du schon anschliessend z.B. ein

SQL-Code:
select count(*) from Table
ausführen, um die Anzahl der Datensätze zu ermitteln.
Zur Erläuterung:
Ich habe ein ADODataSet mit dem ich auch die Daten zugreife um sie z.B. in einem Treeview anzuzeigen. Diese Tabelle ist dabei nur beim Aufbau des Treeview geöffnet. Wenn ein Knoten aus der Tabelle gelöscht werden soll, greife ich per ADOCommand (Delete) auf die Daten zu. Nach dem Löschen sollte der Baum mit den aktuellen Daten wieder neu aufgebaut werden. Dazu verwende ich wieder das ADODataSet, welches nur für den Zeitraum des Aufbauens geöffnet und anschließend wieder geschlossen wird.
Ich werde aber gleich gerne versuchen, einen zweiten ADOCommand (SLECET *) auszuführen. Ich melde mich dann, ob das Ergebnis dann anders ist....

BrinkschulteManfred 3. Jan 2008 16:40

Re: RecordCount nach löschen eines Datensatzes 0
 
Schade, auch der Tipp, nach dem DELETE per ADOCommand noch einen weiteren ADOCommand (SELECT *) durchzuführen brachten keinen Erfolg.
Auch hier ist anschließend RecordCount = 0.

Noch weitere Ideen?

Ich muss meine Aussage übrigens revidieren: In der Access-Tabelle wird nur so lange #gelöscht# in jeder Zelle der gelöschten Zeile angegeben, bis ich ie Tabelle in Access neu öffne, das Delphi-Programm wird dabei zwischenzeitlich nicht beendet. Damit würde ich ein Commit einerTransaktion eingentlich ausschließen.

Bis später ....?


Alle Zeitangaben in WEZ +1. Es ist jetzt 15:12 Uhr.
Seite 1 von 2  1 2      

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