[Gelöst] Systeminterne Anlagedaten

19. Dezember 2007 12:07

Wenn ein Datensatz in einer Tabelle erstellt oder geändert wird, wird dann von Navision Systemintern irgendwelche Daten dazu hinterlegt? Wie zum Beispiel Datum und Uhrzeit?

Wenn ja: Kann man diese irgendwie auslesen?
Zuletzt geändert von Heike Bennerscheid am 19. Dezember 2007 12:27, insgesamt 1-mal geändert.

19. Dezember 2007 12:23

Soviel ich weiß, wird dies nicht an der Tabelle selbst gespeichert (auch nicht in der SQL-Umgebung).

Alternativ kann man das Änderungsprotokoll in NAV aktivieren; dort kannst du nach deinem Datensatz suchen und hast auch den Änderungszeitpunkt. Dies steht dann in der Tabelle Änderungsprotokollposten.

19. Dezember 2007 12:27

Danke dir. Dann werd ich mein Vorhaben wohl anders lösen müssen. Zwar ein wenig mehr aufwand, aber was solls. :wink:

19. Dezember 2007 12:40

Hallo Heike,

ich kann mir schon gut vorstellen, dass auch die Native-Datenbank intern einen Timestamp je Datensatz besitzt. Jedoch wirst du da nicht rankommen.

Anders bei der SQL-Datenbank. Hier wird in jeder Tabelle das Feld timestamp automatisch angelegt und gefüllt. Fehlermeldungen wie "Ein anderer Anwender hat den Datensatz geändert nachdem sie ihn geöffnet haben. Wiederholen Sie Ihren Änderungen (bla bla bla)" beruhen wahrscheinlich auf dieses Feld.

Um auf das Feld zugreifen zu können, muss man wahrscheinlich etwas "basteln". Ich würde es eventuell über neue Sicht (Views) (die unter anderem das Feld timestamp darstellt) versuchen die dann in Navision als LinkedObject-Tabellen angelegt wird. Irgendwie so... ;-)

Gruß, Marc

19. Dezember 2007 12:52

Ich habe mir überlegt eine temporäre Tabelle zu machen, in der neue bzw. geänderte Datensätze rein kopiert werden.
Der Objektaufrufplaner kann dann seine Datei aufrufen, welche auf diese temp. Tabelle zugreift, und wenn diese Datei fertig ist, den Inhalt wieder löscht. So dass immer nur aktuelle Daten in dieser Tabelle sind. Ich glaub das ist für mich ein wenig einfacher (kenn mich mit Sichten noch nicht wirklich aus :wink: )

19. Dezember 2007 12:55

Darf ich fragen, wofür du diese Daten brauchst?
Ließe sich vielleicht auch anders lösen.

19. Dezember 2007 13:01

Wir haben bei uns ein Shopsystem mit Kundendaten aus Navision. Wenn nun aber ein Neukunde anruft, und uns netterweise seine Email-Adresse gibt, soll für ihn direkt im Shop ein Account angelegt werden. Das heißt die Daten müssen dann aus Navision dem Shop übergeben werden. Das machen wir mit Hilfe von XML Dateien.

Der Objektaufrufplaner soll dann zum Beispiel alle 3 Minuten einen Report aufrufen der dann die aktuellen Dateien erzeugt.

19. Dezember 2007 14:14

Habt ihr denn wirklich soviele neuanlagen aus Navision heraus, dass alle 3 Minuten ein Lauf stattfinden muss?
Einfacher wäre es doch, dass man auf der Debitorenkarte einfach noch einen Button hinzufügt, der die XML-Datei erzeugt.
D.h. wenn jemand einen neuen Kunden anlegt oder ändert, dann klickt er anschließend auf den Button und fertig.

19. Dezember 2007 14:17

Ich weiß nicht genau wie viele wir haben (bin ja hauptsächlich für programmierung zuständig). Die 3 Minuten waren jetzt auch nur ein Beispiel.
Die Sache ist halt, das es gewünscht ist das es automatisch im Hintergrund läuft und man nicht noch nen Button drücken muss.

19. Dezember 2007 14:18

Benutze einen NAS und aus 5.0 z.B. die Job Steuerung (Also die Ablösung des Objektaufrufplaners bis 4.0)

19. Dezember 2007 14:20

Wir arbeiten aber zur Zeit mit 4.0 SP3 und nicht mit 5.0

19. Dezember 2007 14:29

Der Objektaufrufplaner muss per NAS ausführbar sein bzw. dieser NAS Scheduler müsste es auch tun: http://www.msdynamics.de/fpost18196.html#18196.

Die Codeunit/Report/Dataport muss auf dem NAS ohne eine Meldung laufen können, also ein GUIALLOWED bei jedem Dialog-Window abfragen.

Den Scheduler kann man so takten, dass er für ein bestimmtes Intervall die Codeunit ausführt. Falls von diesem Scheduler zuviel Objekte belegt werden, hilft auch eine Single-Instance-Codeunit mit einem Timer (Automation Server Navision Timer), die dasselbe tut. Diese Single-Instance-Codeunit müsste dann in die Funktion NASHandler der Codeunit 1 aufgerufen werden.

19. Dezember 2007 14:37

Danke für die Infos. Da wir diese Funktion aber ziemlich bald brauchen, und ich mich mit obigen Thema dann erst einmal auseinandersetzen muss, werd ich doch erst einmal meine Lösung verwenden (auch wenn sie nicht ganz so elegant ist).

Da wir eh demnächst alles auf 5.0 neu programmieren wollen, wird sich das mit dem NAS ja dann bald anbieten.