Gelöschte Sätze werden angezeigt
Moderator: Moderatoren
- Mirco
- Rekursionen-Architekt
- Beiträge: 143
- Registriert: Di, 03. Feb 2009 15:47
- Wohnort: Viersen
- Kontaktdaten:
Gelöschte Sätze werden angezeigt
Hallo Leute,
wir nutzen die Advantage Database Engine von Sybase (bei den meisten in der lokalen Version, einige mit ADS-Server) und greifen mittels der ADS-Klasse von Tobax darauf zu.
Es kommt immer wieder vor, dass gelöschte Sätze bei uns im Browser angezeigt werden. Aktuell habe ich das Problem, dass ich an einer Programmstelle wieder einen Satz lösche und den Browser neu aufbaue (besagte Tabelle wird nach dem löschen geschlossen und wieder neu geöffnet) und der im Database Architect als gelöscht markierte Satz mir im Browser angezeigt wird.
Erst wenn ich die Anwendung komplett beende und neusstarte, wird der Satz nicht mehr angezeigt. Ein Seek nach dem gelöschten Satz findet den Satz aber immer noch!
Was kann das sein? Habt ihr sowas schonmal gehabt?
Gruß
Mirco
wir nutzen die Advantage Database Engine von Sybase (bei den meisten in der lokalen Version, einige mit ADS-Server) und greifen mittels der ADS-Klasse von Tobax darauf zu.
Es kommt immer wieder vor, dass gelöschte Sätze bei uns im Browser angezeigt werden. Aktuell habe ich das Problem, dass ich an einer Programmstelle wieder einen Satz lösche und den Browser neu aufbaue (besagte Tabelle wird nach dem löschen geschlossen und wieder neu geöffnet) und der im Database Architect als gelöscht markierte Satz mir im Browser angezeigt wird.
Erst wenn ich die Anwendung komplett beende und neusstarte, wird der Satz nicht mehr angezeigt. Ein Seek nach dem gelöschten Satz findet den Satz aber immer noch!
Was kann das sein? Habt ihr sowas schonmal gehabt?
Gruß
Mirco
- Tom
- Der Entwickler von "Deep Thought"
- Beiträge: 9358
- Registriert: Do, 22. Sep 2005 23:11
- Wohnort: Berlin
- Hat sich bedankt: 101 Mal
- Danksagung erhalten: 361 Mal
- Kontaktdaten:
Re: Gelöschte Sätze werden angezeigt
Durchsuch Deinen Code mal nach SET DELETED OFF. Oder nach Set(_SET_DELETED). Irgendwo legst Du einen Schalter um, den Du wieder zurückzulegen vergisst.
Herzlich,
Tom
Tom
- Mirco
- Rekursionen-Architekt
- Beiträge: 143
- Registriert: Di, 03. Feb 2009 15:47
- Wohnort: Viersen
- Kontaktdaten:
Re: Gelöschte Sätze werden angezeigt
Hallo Tom,
das habe ich bereits getan, gibts es nirgends. Nur am Start einmal SET DELETED ON.
Der Fehler tritt ja nicht in jedem Menüpunkt / Bereich auf. Ich tippe auf eine "schlechte" Programmierung an irgendeiner Stelle (bei uns oder in der Tobax Klasse) oder n Bug in der ADS-Engine...Allerdings fehlen mir die Ideen, wo nach ich suchen soll...
das habe ich bereits getan, gibts es nirgends. Nur am Start einmal SET DELETED ON.
Der Fehler tritt ja nicht in jedem Menüpunkt / Bereich auf. Ich tippe auf eine "schlechte" Programmierung an irgendeiner Stelle (bei uns oder in der Tobax Klasse) oder n Bug in der ADS-Engine...Allerdings fehlen mir die Ideen, wo nach ich suchen soll...
- Tom
- Der Entwickler von "Deep Thought"
- Beiträge: 9358
- Registriert: Do, 22. Sep 2005 23:11
- Wohnort: Berlin
- Hat sich bedankt: 101 Mal
- Danksagung erhalten: 361 Mal
- Kontaktdaten:
Re: Gelöschte Sätze werden angezeigt
Hallo, Mirco.
Gut möglich, dass in der Klasse Einstellungen (falsch) verändert werden. Du kannst das ja trotzdem selbst prüfen - indem Du einfach nach dem Auftreten des Fehlers Set(_SET_DELETED) abfragst. Wenn das gesetzt ist, solltest Du das Verhalten Tobax melden.
Gut möglich, dass in der Klasse Einstellungen (falsch) verändert werden. Du kannst das ja trotzdem selbst prüfen - indem Du einfach nach dem Auftreten des Fehlers Set(_SET_DELETED) abfragst. Wenn das gesetzt ist, solltest Du das Verhalten Tobax melden.
Herzlich,
Tom
Tom
- Mirco
- Rekursionen-Architekt
- Beiträge: 143
- Registriert: Di, 03. Feb 2009 15:47
- Wohnort: Viersen
- Kontaktdaten:
Re: Gelöschte Sätze werden angezeigt
Hallo Tom,
habe nun folgenden Code
Der Ablauf ist nun folgendermaßen:
- Datensatz ist in DB vohanden, aber als gelöscht markiert.
- Programm wird gestartet und Datensatz wird in Browser auch nicht angezeigt.
- Ich gebe in die Positionsfelder den Datensatz genau so ein, wie er in der DB bereits als gelöscht vorhanden ist
- Ich drücke auf Löschen, es wird also der Satz mit den Daten aus den Positionsfelder gesucht, um ihn zu löschen, falls er vorhanden ist.
- Satz wird nun gefunden (obwohl nur als gelöscht vorhanden) und versucht erneut zu löschen.
- Datensatz bleibt in DB als gelöscht markiert
- Browser wird neu aufgebaut und -zack-, der gelöschte Datensatz wird angezeigt
Bin nur per Zufall auf das Phänomen gestoßen...
Vielen Danke für deine / eure Hilfe!
habe nun folgenden Code
Code: Alles auswählen
If Set(_SET_DELETED) // <<<<<------ Ist false
melde("Deleted on!!")
// Hier wird nicht reingesprungen
Endif
if ::oPREKPos:Seek(Str(1, 3, 0)+clager+Str(nLief, 6, 0)+dtos(ddatum)+Str(nArtikel, 6, 0)+str(nPos,3,0)) // <<<<<---- Der Satz wird angeblich gefunden, obwohl im Architect eindeutig als gelöscht angezeigt.
// Eigentlicher Code, um einen Satz zu löschen
else
// Satz, der gelöscht werden soll, wurde nicht gefunden. Also entweder nicht vorhanden oder bereits gelöscht
endif
Der Ablauf ist nun folgendermaßen:
- Datensatz ist in DB vohanden, aber als gelöscht markiert.
- Programm wird gestartet und Datensatz wird in Browser auch nicht angezeigt.
- Ich gebe in die Positionsfelder den Datensatz genau so ein, wie er in der DB bereits als gelöscht vorhanden ist
- Ich drücke auf Löschen, es wird also der Satz mit den Daten aus den Positionsfelder gesucht, um ihn zu löschen, falls er vorhanden ist.
- Satz wird nun gefunden (obwohl nur als gelöscht vorhanden) und versucht erneut zu löschen.
- Datensatz bleibt in DB als gelöscht markiert
- Browser wird neu aufgebaut und -zack-, der gelöschte Datensatz wird angezeigt
Bin nur per Zufall auf das Phänomen gestoßen...
Vielen Danke für deine / eure Hilfe!
- Herbert
- Der Entwickler von "Deep Thought"
- Beiträge: 1991
- Registriert: Do, 14. Aug 2008 0:22
- Wohnort: Gmunden am Traunsee, Österreich
- Danksagung erhalten: 3 Mal
- Kontaktdaten:
Re: Gelöschte Sätze werden angezeigt
Nun bin ich verwirrt...
Ich verstehe, dass das Finden eines Satzes, obwohl löschmarkiert, zu dessen Anzeige führen kann.
Aber ein genauer Seek auf einen gelöschten Satz sollte doch bei SET DELETED ON zu keinem Treffer führen.
Liegt dies an ADS?
Ich verstehe, dass das Finden eines Satzes, obwohl löschmarkiert, zu dessen Anzeige führen kann.
Aber ein genauer Seek auf einen gelöschten Satz sollte doch bei SET DELETED ON zu keinem Treffer führen.
Liegt dies an ADS?
Grüsse Herbert
Immer in Bewegung...
Immer in Bewegung...
-
- Der Entwickler von "Deep Thought"
- Beiträge: 2828
- Registriert: Fr, 10. Feb 2006 9:51
- Wohnort: Aachen
- Hat sich bedankt: 259 Mal
- Danksagung erhalten: 12 Mal
- Kontaktdaten:
Re: Gelöschte Sätze werden angezeigt
Das Thema gehört in das ADS-Unterforum
Uli
Uli
-------
Mitglied XuG Cologne
Mitglied XuG Osnabrück
Mitglied XuG Cologne
Mitglied XuG Osnabrück
-
- Der Entwickler von "Deep Thought"
- Beiträge: 2513
- Registriert: Mi, 28. Jul 2010 17:16
- Hat sich bedankt: 12 Mal
- Danksagung erhalten: 77 Mal
Re: Gelöschte Sätze werden angezeigt
Hi
du MUSST "SET DELETED ON" ZWINGEND erst oder nochmals ausführen NACHDEM du den Connect zum ADS-Server aufgebaut hast!!!!!!
Wenn du "SET DELETED ON" am Anfang deines Codes hast und erst danach den Connect zum ADS Server ausführst gilt der Befehl nicht da du die Verbindung zum Server danach aufgebaut hast.
Gruss
Carlo
du MUSST "SET DELETED ON" ZWINGEND erst oder nochmals ausführen NACHDEM du den Connect zum ADS-Server aufgebaut hast!!!!!!
Wenn du "SET DELETED ON" am Anfang deines Codes hast und erst danach den Connect zum ADS Server ausführst gilt der Befehl nicht da du die Verbindung zum Server danach aufgebaut hast.
Gruss
Carlo
Valar Morghulis
Gruss Carlo
Gruss Carlo
-
- Der Entwickler von "Deep Thought"
- Beiträge: 2513
- Registriert: Mi, 28. Jul 2010 17:16
- Hat sich bedankt: 12 Mal
- Danksagung erhalten: 77 Mal
Re: Gelöschte Sätze werden angezeigt
@Tom, versuchs doch!! Ich arbeite seit Version 4 mit ADS (Server nicht Lokal) und bin schon mehrmals genau in diese Falle gefallen.....
Zuletzt geändert von ramses am Fr, 23. Mär 2012 9:27, insgesamt 1-mal geändert.
Valar Morghulis
Gruss Carlo
Gruss Carlo
- Tom
- Der Entwickler von "Deep Thought"
- Beiträge: 9358
- Registriert: Do, 22. Sep 2005 23:11
- Wohnort: Berlin
- Hat sich bedankt: 101 Mal
- Danksagung erhalten: 361 Mal
- Kontaktdaten:
Re: Gelöschte Sätze werden angezeigt
Ich arbeite seit über 10 Jahren mit der ADS und Xbase++, seit Version 5 und aktuell mit der 10. SET DELETED erfolgt in der (eigenen) Startprozedur, feddisch. Gelöschte Datensätze werden nirgendwo angezeigt, ganz egal, was man sonst so tut. Nach dem Aufbau der Connection - die nach dem SET DELETED u.a. erfolgt - und einigen ADS-Settings wird lediglich das Session-Objekt in Modulen, die in eigenen Threads laufen, per oSession:SetDefault() weiter genutzt. Ansonsten entspricht der Code weitgehend der DBFNTX-Version - und verhält sich auch so. Lediglich bei gesetzten Filtern und anschließender Direktnavigation (DbGoto()) erfolgt bei aktiver ADS hin und wieder ein DbGoTop(), weil das ansonsten in dieser Kombination fehlschlägt (oder fehlschlug - zuletzt getestet mit Version 8 ).
Dabei stellt sich dann übrigens die Frage: Welche ADS-Version wird genutzt und welche Client-DLLs werden ausgeliefert? Das ist zwar weitgehend abwärtskompatibel, aber ich erinnere mich, dass wir mit den 8er- oder 9er-DLLs große Probleme hatten.
Dabei stellt sich dann übrigens die Frage: Welche ADS-Version wird genutzt und welche Client-DLLs werden ausgeliefert? Das ist zwar weitgehend abwärtskompatibel, aber ich erinnere mich, dass wir mit den 8er- oder 9er-DLLs große Probleme hatten.
Herzlich,
Tom
Tom
-
- Rekursionen-Architekt
- Beiträge: 164
- Registriert: Mo, 09. Jan 2006 17:06
- Wohnort: Paderborn
- Hat sich bedankt: 2 Mal
- Kontaktdaten:
Re: Gelöschte Sätze werden angezeigt
Hallo,
Wie sieht denn die Seek-Methode aus? Stammt die aus der Tobax ADS-Klasse? Wird dort evtl. mit DELETED gespielt?
Schöne Grüsse
Hans
das kann ich nicht bestätigen. Wir benutzen schon seit 15 Jahren den ADS und bei uns im Code gibt es nur ein einziges SET DELETED ON - und zwar definitiv vor der Verbindung zum ADS-Server. Ich habe noch nie ein Problem mit gelöschten Sätzen gehabt.ramses hat geschrieben:Wenn du "SET DELETED ON" am Anfang deines Codes hast und erst danach den Connect zum ADS Server ausführst gilt der Befehl nicht da du die Verbindung zum Server danach aufgebaut hast.
Wie sieht denn die Seek-Methode aus? Stammt die aus der Tobax ADS-Klasse? Wird dort evtl. mit DELETED gespielt?
Schöne Grüsse
Hans
-
- Der Entwickler von "Deep Thought"
- Beiträge: 2513
- Registriert: Mi, 28. Jul 2010 17:16
- Hat sich bedankt: 12 Mal
- Danksagung erhalten: 77 Mal
Re: Gelöschte Sätze werden angezeigt
@ Tom, gute Idee, die DLL-Version: ich muss noch 6.20.0.11 verwenden
Gruss
Carlo
Gruss
Carlo
Valar Morghulis
Gruss Carlo
Gruss Carlo
- Mirco
- Rekursionen-Architekt
- Beiträge: 143
- Registriert: Di, 03. Feb 2009 15:47
- Wohnort: Viersen
- Kontaktdaten:
Re: Gelöschte Sätze werden angezeigt
Hallo Leute,
werde die Versionen definitiv nochmal überprüfen.
In dem von mir geschilderten Fall hat sich das Problem (soweit ich mich erinnern kann, hatte einiges zu tun) selbst gelöst. Aber ein anderer Kunde hat auch mal wieder gemeldet, dass gelöschte (Auftrags-)positionen angezeigt werden.
Wir haben auch auch andere sporadische Fehler in Bezug auf den ADS-Server (hauptsächlich lokal). "Interne Datenstrukturen beschädigt" ist dabei eindeutig auf Platz 1.
Sobald mal etwas Zeit ist, schaue ich mir das genauer an, sammle Infos und würde mich dann in einem seperaten Thread nochmal an euch wenden...
Die gelöschten Sätze sind natürlich etwas dringender...
Vielen Dank und Gruß
Mirco
werde die Versionen definitiv nochmal überprüfen.
In dem von mir geschilderten Fall hat sich das Problem (soweit ich mich erinnern kann, hatte einiges zu tun) selbst gelöst. Aber ein anderer Kunde hat auch mal wieder gemeldet, dass gelöschte (Auftrags-)positionen angezeigt werden.
Wir haben auch auch andere sporadische Fehler in Bezug auf den ADS-Server (hauptsächlich lokal). "Interne Datenstrukturen beschädigt" ist dabei eindeutig auf Platz 1.
Sobald mal etwas Zeit ist, schaue ich mir das genauer an, sammle Infos und würde mich dann in einem seperaten Thread nochmal an euch wenden...
Die gelöschten Sätze sind natürlich etwas dringender...
Vielen Dank und Gruß
Mirco
-
- Der Entwickler von "Deep Thought"
- Beiträge: 2513
- Registriert: Mi, 28. Jul 2010 17:16
- Hat sich bedankt: 12 Mal
- Danksagung erhalten: 77 Mal
Re: Gelöschte Sätze werden angezeigt
@Mirco
was für einen Browser verwendest du? Mit dbgoto(recno) wird dir auch ein gelöschter Satz angezeigt, da du den satzzeiger auf diesen Satz stellst. Verwendest verschiedene Threads?
Cu Carlo
was für einen Browser verwendest du? Mit dbgoto(recno) wird dir auch ein gelöschter Satz angezeigt, da du den satzzeiger auf diesen Satz stellst. Verwendest verschiedene Threads?
Cu Carlo
Valar Morghulis
Gruss Carlo
Gruss Carlo
- Herbert
- Der Entwickler von "Deep Thought"
- Beiträge: 1991
- Registriert: Do, 14. Aug 2008 0:22
- Wohnort: Gmunden am Traunsee, Österreich
- Danksagung erhalten: 3 Mal
- Kontaktdaten:
Re: Gelöschte Sätze werden angezeigt
Nein, bei SET DELETED ON klar nicht.ramses hat geschrieben:@Mirco
was für einen Browser verwendest du? Mit dbgoto(recno) wird dir auch ein gelöschter Satz angezeigt, da du den satzzeiger auf diesen Satz stellst. Verwendest verschiedene Threads?
Cu Carlo
Grüsse Herbert
Immer in Bewegung...
Immer in Bewegung...
- Tom
- Der Entwickler von "Deep Thought"
- Beiträge: 9358
- Registriert: Do, 22. Sep 2005 23:11
- Wohnort: Berlin
- Hat sich bedankt: 101 Mal
- Danksagung erhalten: 361 Mal
- Kontaktdaten:
Re: Gelöschte Sätze werden angezeigt
@Herbert: Für Dich ganz persönlich ein Zitat aus der Doku zu "DbGoto()":
Daher kann mit DbGoto() jeder Datensatz angesprungen werden, selbst wenn eine Filterbedingung für diesen Datensatz nicht zutrifft, oder wenn der Datensatz als "Gelöscht" markiert und SET DELETED ON gesetzt ist.
Daher kann mit DbGoto() jeder Datensatz angesprungen werden, selbst wenn eine Filterbedingung für diesen Datensatz nicht zutrifft, oder wenn der Datensatz als "Gelöscht" markiert und SET DELETED ON gesetzt ist.
Herzlich,
Tom
Tom