![]() |
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 |
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 |
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 |
Re: RecordCount nach löschen eines Datensatzes 0
Hallo,
hm, über AdoCommand, dann würde ich die Tabelle schliesen und neu öffnen. Heiko |
Re: RecordCount nach löschen eines Datensatzes 0
Das Problem ist nur, dass die Tabelle gar nicht offen ist :(
|
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 |
Re: RecordCount nach löschen eines Datensatzes 0
Also wenn du über AdoCommand einen SQL Befehl à la:
SQL-Code:
ausführst, wieso sollte dann in der RecordCount Eigenschaft was Sinnvolles drinstehen. Dann musst du schon anschliessend z.B. ein
delete from Table where Name = 'Blubb'
SQL-Code:
ausführen, um die Anzahl der Datensätze zu ermitteln.
select count(*) from Table
|
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 |
Re: RecordCount nach löschen eines Datensatzes 0
Zitat:
Zitat:
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.... |
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 10:02 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz