AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi RecordCount nach löschen eines Datensatzes 0
Thema durchsuchen
Ansicht
Themen-Optionen

RecordCount nach löschen eines Datensatzes 0

Ein Thema von BrinkschulteManfred · begonnen am 2. Jan 2008 · letzter Beitrag vom 7. Jan 2008
Antwort Antwort
Seite 1 von 2  1 2      
Benutzerbild von BrinkschulteManfred
BrinkschulteManfred

Registriert seit: 23. Sep 2003
Ort: Menden
97 Beiträge
 
Delphi 7 Enterprise
 
#1

RecordCount nach löschen eines Datensatzes 0

  Alt 2. Jan 2008, 21:59
Datenbank: Microsoft Access • Version: 2000 • Zugriff über: ADO; ADODataSet ; ADOCommand
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
  Mit Zitat antworten Zitat
hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.276 Beiträge
 
Delphi 10.4 Sydney
 
#2

Re: RecordCount nach löschen eines Datensatzes 0

  Alt 3. Jan 2008, 07:45
Hallo,

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

Versuch mal DataSet.Refresh oder DataSet.First


Heiko
Heiko
  Mit Zitat antworten Zitat
Benutzerbild von BrinkschulteManfred
BrinkschulteManfred

Registriert seit: 23. Sep 2003
Ort: Menden
97 Beiträge
 
Delphi 7 Enterprise
 
#3

Re: RecordCount nach löschen eines Datensatzes 0

  Alt 3. Jan 2008, 08:13
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
  Mit Zitat antworten Zitat
hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.276 Beiträge
 
Delphi 10.4 Sydney
 
#4

Re: RecordCount nach löschen eines Datensatzes 0

  Alt 3. Jan 2008, 08:20
Hallo,

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


Heiko
Heiko
  Mit Zitat antworten Zitat
Benutzerbild von BrinkschulteManfred
BrinkschulteManfred

Registriert seit: 23. Sep 2003
Ort: Menden
97 Beiträge
 
Delphi 7 Enterprise
 
#5

Re: RecordCount nach löschen eines Datensatzes 0

  Alt 3. Jan 2008, 08:22
Das Problem ist nur, dass die Tabelle gar nicht offen ist
  Mit Zitat antworten Zitat
hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.276 Beiträge
 
Delphi 10.4 Sydney
 
#6

Re: RecordCount nach löschen eines Datensatzes 0

  Alt 3. Jan 2008, 09:07
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
Heiko
  Mit Zitat antworten Zitat
Benutzerbild von Jelly
Jelly

Registriert seit: 11. Apr 2003
Ort: Moestroff (Luxemburg)
3.741 Beiträge
 
Delphi 2007 Professional
 
#7

Re: RecordCount nach löschen eines Datensatzes 0

  Alt 3. Jan 2008, 09:27
Also wenn du über AdoCommand einen SQL Befehl à la:
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
select count(*) from Table ausführen, um die Anzahl der Datensätze zu ermitteln.
  Mit Zitat antworten Zitat
hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.276 Beiträge
 
Delphi 10.4 Sydney
 
#8

Re: RecordCount nach löschen eines Datensatzes 0

  Alt 3. Jan 2008, 09:52
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
Heiko
  Mit Zitat antworten Zitat
Benutzerbild von BrinkschulteManfred
BrinkschulteManfred

Registriert seit: 23. Sep 2003
Ort: Menden
97 Beiträge
 
Delphi 7 Enterprise
 
#9

Re: RecordCount nach löschen eines Datensatzes 0

  Alt 3. Jan 2008, 10:17
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:

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

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....
  Mit Zitat antworten Zitat
Benutzerbild von BrinkschulteManfred
BrinkschulteManfred

Registriert seit: 23. Sep 2003
Ort: Menden
97 Beiträge
 
Delphi 7 Enterprise
 
#10

Re: RecordCount nach löschen eines Datensatzes 0

  Alt 3. Jan 2008, 17:40
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 ....?
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 20:20 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