27. Mai 2010 11:57
Hallo,
ich möchte eine Art Änderungsprotokoll per ReportingServices aus der Tabelle [MANDANT$Change Log Entry] erstellen.
Mir fehlt jedoch die Möglichkeit die jeweiligen Namen zu den Spalten [Table No_],[Field No_],[Type of Change] auszulesen.
Den Namen der Tabelle könnte man noch mit einem JOIN mit der Tabelle [Object] ermitteln, jedoch finde ich nichts für
den "Field Name"=Spaltenname und den Name für die Änderung.
Wo kann man diese Info auslesen / verknüpfen?
Vielen Dank!
27. Mai 2010 12:07
Es gibt die Tabelle Field, aus der du alle Feldnamen (bei entsprechender Filterung) auslesen kannst.
27. Mai 2010 13:15
Hallo,
danke für die schnelle Antwort.
Ich finde jedoch in unsere NAV 5SP1 auf SQL-Server2k8 keine solche Tabelle.
Auch in der Beispieldatenbank Cronos ist nichts zu finden.
Das ist etwas verwirrend ...
27. Mai 2010 13:41
Das ist eine von diese speziellen Systemtabellen!
27. Mai 2010 13:44
HattrickHorst hat geschrieben:Das ist eine von diese speziellen Systemtabellen!
Und wo siehst du die auf dem SQL-Server? Außer der Object-Tabelle ist da nichts ... Der Inhalt der Fields-Tabelle wird für den NAV-Client zur Laufzeit aufbereitet; es handelt sich hierbei um keine Tabelle.
27. Mai 2010 13:55
Ok, dann ist das aber eine virtuelle Tabelle. Ich dachte immer, daß wäre eine Systemtabelle, denn eigentlich muß da ja zur Laufzeit nichts neu berechnet werden. Eine Aktualisierung zwischendurch mal ist u.U. sinnvoll, aber die Strukturen der Tabellen inkl. Aufbau der Felder sollte doch immer bekannt sein. Anhand was wird denn dann der Datenbankaufbau gesichert?
27. Mai 2010 14:00
Unabhängig davon habe ich aber schon eine SQL-basierte Lösung gesehen, die die Feldnamen dynamisch ausgelesen hat. Es geht also irgendwie. Ich dachte immer, die hätte das aus der Tabelle Field ausgelesen. Naja, so kann man sich irren.
27. Mai 2010 16:00
Als Nicht-NAV-Entwickler muss ich mal nachfragen:
Existiert diese "Tabelle" nur innerhalb der Laufzeitumgebung von Navision und ist per SQL nicht zu erreichen?
Gibt es trotzdem eine Möglichkeit darauf zuzugreifen oder diese Daten einmalig/regelmäßig zu exportieren?
mfg
27. Mai 2010 17:30
HattrickHorst hat geschrieben:Anhand was wird denn dann der Datenbankaufbau gesichert?
Ok, blöde Frage von mir. Die Objekte liegen natürlich in der Object-Tabelle im BLOB Field. Daraus wird dann irgendwann zur Laufzeit die Tabelle Field gefüllt. NAV ist schon manchmal komisch!
27. Mai 2010 17:32
dot-org hat geschrieben:Als Nicht-NAV-Entwickler muss ich mal nachfragen:
Existiert diese "Tabelle" nur innerhalb der Laufzeitumgebung von Navision und ist per SQL nicht zu erreichen?
Gibt es trotzdem eine Möglichkeit darauf zuzugreifen oder diese Daten einmalig/regelmäßig zu exportieren?
mfg
Ja, genauso ist es. Virtuelle Tabellen werden zur Laufzeit generiert und sind nicht auf dem SQL vorhanden. Theoretisch kannst du die natürlich einmalig oder auch regelmäßig exportieren.
27. Mai 2010 20:37
HattrickHorst hat geschrieben:Ok, blöde Frage von mir. Die Objekte liegen natürlich in der Object-Tabelle im BLOB Field. Daraus wird dann irgendwann zur Laufzeit die Tabelle Field gefüllt. NAV ist schon manchmal komisch!
Kann man die Objekte im BLOB Field parsen und sich so die Feldinformationen herausziehen?
28. Mai 2010 09:25
Nein, meines Wissens nach liegen die in kompilierter Form darin. Es gibt allerdings die Möglichkeit ab NAV 2009 über die Funktion EXPORTOBJECTS alle Objekte im Text- oder XML-Format zu exportieren. Diese Dateien könnte man dann wieder parsen.
Aber wie gesagt, es muß auch eine einfachere Variante geben. Ich kann mal dort nachfragen, wo ich das gesehen hab. Kann aber ein paar Tage dauern und ich weiß auch nicht, ob die das preisgeben. Aber vielleicht kann ja mal einer von den SQL-Experten hier dazu noch was sagen.
28. Mai 2010 10:05
Ein reine SQL-Lösung wäre optimal und könnte auch regelmässig wiederholt werden, ohne dass jemand die Field-List manuell exportieren muss.
Ich würde mich freuen, wenn Du noch etwas in Erfahrung bringen könntest bzw. jemand hier im Forum noch eine Idee hat!
16. Juli 2010 08:30
Sorry, es hat etwas gedauert das herauszufinden. Und jetzt gleich noch eine schlechte Nachricht: Die machen das anders, als ich dachte. Bisher habe ich vermutet, daß die dynamisch aufgebauten Tabellen der Lösung nur die Felder enthalten würden, die im Nachgang auch verwendet werden. Für den Fall bräuchte man ja in irgendeiner Form eine Felddefinition. Aber die lassen die komplette Tabelle als 1zu1-Kopie über SELECT INTO anlegen.
- Code:
SELECT * INTO <NEUTAB> FROM <ALTTAB> WHERE 0=1
Da die Bedingung immer false ergibt, wird sozusagen nur eine exakte Kopie der Tabelle angelegt, ohne irgendwelche Daten zu kopieren. Hier lassen sich dann wieder nur die Daten hineinladen, die man braucht. Also, das hilft dir wahrscheinlich für deinen Fall nicht weiter. Tut mir leid.
Eigentlich müßten doch alle Änderungen auch ins Transaction Log einfließen. Kann man die Änderungen nicht daraus ermitteln?
Powered by phpBB © phpBB Group.
phpBB Mobile / SEO by Artodia.