[Gelöst] Problem beim Aufruf einer archivierten Bestellung

14. Dezember 2006 10:49

Hallo zusammen,

ich suche nach einer Fehlerursache, leider bislang erfolglos, vielleicht könnt ihr mir wieder weiterhelfen:

Wenn eine Bestellung bei uns gelöscht wird, dann wird sie archiviert. Wenn diese gelöschte Bestellung keine Zeilen hatte, dann lässt sich jedoch die Karte nicht mehr aufrufen.
Fehlermeldung:
"Die Einkaufskopf existiert nicht.
Identifizierte Felder und Werte:
Belegart='Bestellung',Nr.='xxxxx'
Belegart: Bestellung,Nr.: xxxxx"

Bei den archivierten Verkaufsaufträgen funktioniert es, da wird in der Karte des archivierten Auftrags der gelöschte Verkaufskopf angezeigt und eben leere Zeilen.

An den Forms liegt es nicht. Die Forms aus dem Verkauf habe ich schon umgemünzt auf den Einkauf. Ergebnis war die selbe Fehlermeldung.

Kennt das jemand? Der Debugger geht leider gar nicht erst an. Der Fehler erfolgt direkt beim Aufruf einer solchen Karte.
Zuletzt geändert von NavHummel am 15. Dezember 2006 12:52, insgesamt 1-mal geändert.

14. Dezember 2006 11:48

Nur noch mal zum Verständnis: In der Tabelle "Archivierter Einkaufskopf" gibt es einen Datensatz "Bestellung xxxx" aber in der Tabelle "Archivierte Einkaufszeile" gibt es zu der Bestellung keine Zeilen? Hab ich das richtig verstanden? Und die Fehlermeldung lautet "Die Einkaufskopf existiert nicht"?

Gruß, Marc

14. Dezember 2006 11:50

Hmmm, sieht so aus als ob irgendwo ein GET auf den gelöschten Einkaufskopf erfolgt, ohne den Rückgabewert auszuwerten ...
Wenn ein entsprechender Filter in der Form gesetzt wurde (und in der ZUP gespeichert), versucht NAV beim öffnen der Form diesen Filter zu setzen und der GET (OnAfterGetRecord Trigger?) greift dann ins Leere ...

Nur Vermutungen, aber vielleicht "inspiriert" Dich das ja ...

14. Dezember 2006 11:55

Marc Teuber hat geschrieben:Nur noch mal zum Verständnis: In der Tabelle "Archivierter Einkaufskopf" gibt es einen Datensatz "Bestellung xxxx" aber in der Tabelle "Archivierte Einkaufszeile" gibt es zu der Bestellung keine Zeilen? Hab ich das richtig verstanden? Und die Fehlermeldung lautet "Die Einkaufskopf existiert nicht"?

Gruß, Marc


Ja, genau so ist es.

14. Dezember 2006 12:00

stryk hat geschrieben:Hmmm, sieht so aus als ob irgendwo ein GET auf den gelöschten Einkaufskopf erfolgt, ohne den Rückgabewert auszuwerten ...
Wenn ein entsprechender Filter in der Form gesetzt wurde (und in der ZUP gespeichert), versucht NAV beim öffnen der Form diesen Filter zu setzen und der GET (OnAfterGetRecord Trigger?) greift dann ins Leere ...

Nur Vermutungen, aber vielleicht "inspiriert" Dich das ja ...


Danke.

Tja, wie gesagt, ich habe sogar die Forms aus dem Verkauf auf den Einkauf gemünzt und obwohl es im Verkauf funktioniert, funktioniert es im Einkauf nicht.

In den Forms (Mainform, Subform) gibt es keinen Get und auch sonst finde ich keine störende Programmierung.

So langsam habe ich Tabellenfelder im Verdacht, aber was könnte sowas auslösen?

Danke euch!

14. Dezember 2006 12:06

Wenn Du in der Form, die den Fehler bringt diesen Code einbaust:

Code:
Form - OnFindRecord(Which : Text[1024]) : Boolean
IF FIND (Which) THEN
  EXIT(TRUE)
ELSE BEGIN
  SETRANGE("No.");
  EXIT(FIND(Which));
END;


Tritt der Fehler dann immer noch auf?

14. Dezember 2006 12:58

stryk hat geschrieben:Wenn Du in der Form, die den Fehler bringt diesen Code einbaust:

Code:
Form - OnFindRecord(Which : Text[1024]) : Boolean
IF FIND (Which) THEN
  EXIT(TRUE)
ELSE BEGIN
  SETRANGE("No.");
  EXIT(FIND(Which));
END;


Tritt der Fehler dann immer noch auf?


In welcher Form, der Mainform?

Ich weiß ja nicht, in welcher Form der Fehler auftaucht: Mainform, Subform oder vielleicht sogar aus einer Tabelle?

Nur zum Verständis, ein Beispiel:
Gerade hat jemand eine Bestellung gelöscht, bei der noch keine Zeilen existierten. Jetzt öffne ich die archivierten Bestellungen über die periodischen Aktivitäten, klicke auf "Letzter" Datensatz und bekomme die Fehlermeldung.

Es gibt hier keine besondern Filter, nur der auf den Document Type Order.

14. Dezember 2006 13:41

Hmmm ... der Code dient dazu, einen etwaig gesetzten Filter auf "No." zu löschen (Mainform Archivierte Bestellung), falls kein Datensatz gefunden wird ... ich denke aber inzwischen, daß das in Deinem Fall nicht (?) das Problem ist ... aber was dann? ...

14. Dezember 2006 14:17

Kommt die Meldung auch, wenn du die Subform über den ObjectDesinger aufrufst? Entfern mal die Subform-Control von der Mainform und starte die Main-Form. Mal schauen, ob dann dort die Meldung kommt...

14. Dezember 2006 14:47

Marc Teuber hat geschrieben:Kommt die Meldung auch, wenn du die Subform über den ObjectDesinger aufrufst? Entfern mal die Subform-Control von der Mainform und starte die Main-Form. Mal schauen, ob dann dort die Meldung kommt...


Nein, die Meldung kommt nicht. Daher meine Vermutung, es muss irgendwie mit den Einkaufsarchivzeilen zu tun haben. Nur, da ist keine Programmierung, die stören könnte. Ich habe mal alles auskommentiert (GetCaption, ShowDimensions,...), auf der Subform und in der Einkaufsarchivtabelle, aber der Fehler kommt trotzdem... :-(

14. Dezember 2006 17:53

Hallo,

Bei uns gibt es keine Probleme.

Aber bei anderen ähnlichen Situationen habe ich die entsprechenden
Objecte als Text-Files exportiert.

Hier kann man besser solche Fehler aufspüren.

15. Dezember 2006 10:01

Ingo Roth hat geschrieben:Hallo,

Bei uns gibt es keine Probleme.

Aber bei anderen ähnlichen Situationen habe ich die entsprechenden
Objecte als Text-Files exportiert.

Hier kann man besser solche Fehler aufspüren.


Leider helfen mir die Textfiles auch nicht, wenn ich nicht weiß, wonach ich suche. In den Tabellen sieht alles normal aus und die Forms können es nicht sein.
Die Fehlermeldung ist auch falsch, denn der Einkaufskopf existiert ja, nur die Zeilen existieren nicht...

15. Dezember 2006 10:44

Also nochmal:

Ein Benutzer löscht eine EK-Bestellung ohne Zeilen. Beim Löschen wird die BEstellung archiviert. Öffnet man die Archivierten Bestellungen und ruft den Beleg für die eben gelöschte Bestellung auf, so erhält man den Fehler:
"Die Einkaufskopf existiert nicht.
Identifizierte Felder und Werte:
Belegart='Bestellung',Nr.='xxxxx'
Belegart: Bestellung,Nr.: xxxxx"

Vom Wortlaut der Meldung her handelt es sich um ein Problem mit GET, also Zugruff auf Einkaufskopf via Primärschlüssel.
Da der Debugger nichts aufzeigt, vermute ich, daß Problem liegt irgendwo in den Eigenschaften eines Steuerelements.

Vielleicht kannst Du ja die Form Archivierte EK Bestellung (Main und Sub) als Text exportieren und hier posten, vielleicht finden wir ja gemeinsam was?

15. Dezember 2006 10:46

Ansonsten: Hast Du 'nen SDK zur Verfügung? Hier könnte man mit WHERE USED mal recherchieren ...

15. Dezember 2006 11:33

So wie ich das sehe, scheint wohl in der Tabelle "Purchase Line Archiv" im Feld "Document No." eine TableRelation auf die Tabelle 38 (Purchase Header) gesetzt zu sein.
Hier müsste die TableRelation natürlich auf die Tabelle "Purchase Header Archiv" zeigen.
Das würde auch erklären, warum du keinen Programmcode findest und selbst der Debugger dir nichts anzeigt.

15. Dezember 2006 12:38

Ich habe es!!!!! Es war eine TableRelation auf einem Feld in der Einkaufszeilenarchivtabelle, die auf den Purchase Header ging. Nachdem ich diese TableRelation gelöscht habe, hat es funktioniert.

Ich vermute mal, dass man die Einkaufsarchivzeilentabelle aus der Kopie der Einkaufszeilentabelle heraus erstellt hat und vergessen hat, diese TableRelation zu löschen.... :roll:

Ein herzliches Dankeschön noch einmal an Euch alle!

Edit: Ach, jetzt sehe ich es erst, Timo war schneller. :wink: Ich hatte hier noch eine andere Antwort stehen, die ich ein paar Mal editiert habe, dann kam mir eine Idee, ich fand den Fehler und habe noch einmal editiert und dann abgeschickt. Danke noch einmal!

15. Dezember 2006 12:50

Anstatt die (fehlerhafte) TableRelation zu löschen wäre es sinnvoller, sie auf die richtige Tabelle ("Purchase Header Archiv") zeigen zu lassen.

15. Dezember 2006 13:01

Timo Lässer hat geschrieben:Anstatt die (fehlerhafte) TableRelation zu löschen wäre es sinnvoller, sie auf die richtige Tabelle ("Purchase Header Archiv") zeigen zu lassen.


Stimmt allerdings und funktioniert auch wunderbar! :wink: