Gelöschte Sätze werden angezeigt

Zugriff, Engines, Konvertierung. Von ADS über DBF bis zu SQL.

Moderator: Moderatoren

Antworten
Benutzeravatar
Mirco
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 143
Registriert: Di, 03. Feb 2009 15:47
Wohnort: Viersen
Kontaktdaten:

Gelöschte Sätze werden angezeigt

Beitrag von Mirco »

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 :)
Benutzeravatar
Tom
Der Entwickler von "Deep Thought"
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

Beitrag von Tom »

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
Benutzeravatar
Mirco
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 143
Registriert: Di, 03. Feb 2009 15:47
Wohnort: Viersen
Kontaktdaten:

Re: Gelöschte Sätze werden angezeigt

Beitrag von Mirco »

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...
Benutzeravatar
Tom
Der Entwickler von "Deep Thought"
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

Beitrag von Tom »

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.
Herzlich,
Tom
Benutzeravatar
Mirco
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 143
Registriert: Di, 03. Feb 2009 15:47
Wohnort: Viersen
Kontaktdaten:

Re: Gelöschte Sätze werden angezeigt

Beitrag von Mirco »

Hallo Tom,

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!
Benutzeravatar
Herbert
Der Entwickler von "Deep Thought"
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

Beitrag von Herbert »

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?
Grüsse Herbert
Immer in Bewegung...
UliTs
Der Entwickler von "Deep Thought"
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

Beitrag von UliTs »

Das Thema gehört in das ADS-Unterforum ;-)
Uli
-------
Mitglied XuG Cologne
Mitglied XuG Osnabrück
ramses
Der Entwickler von "Deep Thought"
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

Beitrag von ramses »

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
Valar Morghulis

Gruss Carlo
Benutzeravatar
Tom
Der Entwickler von "Deep Thought"
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

Beitrag von Tom »

Hallo, Carlo.

Quatsch.
Herzlich,
Tom
ramses
Der Entwickler von "Deep Thought"
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

Beitrag von ramses »

@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
Benutzeravatar
Tom
Der Entwickler von "Deep Thought"
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

Beitrag von Tom »

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.
Herzlich,
Tom
hschmidt
Rekursionen-Architekt
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

Beitrag von hschmidt »

Hallo,
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.
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.

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
ramses
Der Entwickler von "Deep Thought"
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

Beitrag von ramses »

@ Tom, gute Idee, die DLL-Version: ich muss noch 6.20.0.11 verwenden

Gruss
Carlo
Valar Morghulis

Gruss Carlo
Benutzeravatar
Mirco
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 143
Registriert: Di, 03. Feb 2009 15:47
Wohnort: Viersen
Kontaktdaten:

Re: Gelöschte Sätze werden angezeigt

Beitrag von Mirco »

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
ramses
Der Entwickler von "Deep Thought"
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

Beitrag von ramses »

@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
Valar Morghulis

Gruss Carlo
Benutzeravatar
Herbert
Der Entwickler von "Deep Thought"
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

Beitrag von Herbert »

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
Nein, bei SET DELETED ON klar nicht.
Grüsse Herbert
Immer in Bewegung...
Benutzeravatar
Tom
Der Entwickler von "Deep Thought"
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

Beitrag von Tom »

@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.

:wink:
Herzlich,
Tom
Antworten