BLOB Feld in einer Linked Object Tabelle

31. Mai 2013 09:21

Hallo,

weiß jemand von Euch ob es möglich ist ein BLOB Feld in einer linked object Tabelle einzufügen?

Bei mir kommt dann die folgende Fehlermeldung:

table has no ROWVERSION column in the SQL Server view description. A ROWVERSION column is required when BLOB fields have been defined.

Leider kann ich mit dieser Fehlermeldung nicht viel anfangen.

Gruß

Michael

Re: BLOB Feld in einer Linked Object Tabelle

31. Mai 2013 09:44

Ich behaupte mal die SQL-Tabelle hat keine Spalte mit dem Typ timestamp.

Volker

Re: BLOB Feld in einer Linked Object Tabelle

31. Mai 2013 10:13

Nach meinem Verständnis sind Linked Object Tabellen doch Views im SQL. Von daher würde ich nicht erwarten dort BLOBs abspeichern zu können. Aber das kann sicherlich ein SQL-Experte besser erklären.

Re: BLOB Feld in einer Linked Object Tabelle

5. Juni 2013 07:50

HattrickHorst hat geschrieben:Nach meinem Verständnis sind Linked Object Tabellen doch Views im SQL. Von daher würde ich nicht erwarten dort BLOBs abspeichern zu können. Aber das kann sicherlich ein SQL-Experte besser erklären.


Es sind aber trotzdem Insert/Update etc mit Einschränkungen möglich.
Ich denke auch, dass eine timestamp column fehlt.

Re: BLOB Feld in einer Linked Object Tabelle

5. Juni 2013 08:21

Ich weiss ja naicht, was du machen willst, aber es gibt da noch andere Möglichkeiten auf eine SQL-Tabelle zuzugreifen und Sie in NAV zu verwenden ohne Link.

Auf der NAV 2013-CD im Ordner UpgradeToolKit\Data Conversion Tools\601 gibt es die Upgrade601700.2.fob. Darin ist eine CU um direkt auf einen SQL-Server zuzugreifen.

Zusammen mit der nun bekannten Komprimierung (sollte über eine dotnet-Variable auch mit obiger CU gehen) kann man praktisch alles im SQL ändern, ohne dass dafür eine timestamp-Spalte notwendig wäre. Allerdings ist man selbst dafür verantwortlich zu prüfen ob der Datensatz ggf in der Zwischenzeit von einem anderen User geändert wurde.

Mit
Code:
Dim enc As Encoding = Encoding.GetEncoding(437)
BLOBklartext = enc.GetString(SQLAbfrage.Blobfeld)

Kann man unkomprimierte Felder (in diesem Fall Text) übrigens direkt auslesen. Und auch hier nur dotnet.

Volker

Re: BLOB Feld in einer Linked Object Tabelle

5. Juni 2013 08:27

vsnase hat geschrieben:Auf der NAV 2013-CD im Ordner UpgradeToolKit\Data Conversion Tools\601 gibt es die Upgrade601700.2.fob. Darin ist eine CU um direkt auf einen SQL-Server zuzugreifen.

Zusammen mit der nun bekannten Komprimierung (sollte über eine dotnet-Variable auch mit obiger CU gehen) kann man praktisch alles im SQL ändern, ...


Das ist hochgradig gefährlich. Man riskiert damit inkonsistente Daten, da auch kein Schutz dann für z.B. G/L Entry gibt.

Re: BLOB Feld in einer Linked Object Tabelle

5. Juni 2013 08:34

Na in dem Fall geht es um eine Linked Tabelle und daher wohl außerhalb NAV. Außerdem hat G/L keine BLOB-Spalte. Daher ist das in dem Fall wohl nicht so gefährlich. Und wenn jemand mit Linked Objects rumbastelt, dann hat er wohl eine gewisse Erfahrung und wird entsprechende Sorgfalt walten lassen. Abgesehen davon kann man meiner Meinung nach den Code der obigen CU gar nicht so einfach einsehen.

Re: BLOB Feld in einer Linked Object Tabelle

5. Juni 2013 10:38

Hallo,

herzlichen Dank für die vielen Vorschläge. Mein Problem ist, das es in der Fremdsystemtabelle kein Primärschlüsselfeld gibt. Deshalb kann ich das nicht so einfach übernehmen. Wenn ich das Timestamp Feld in meine Abfrage hinzufüge, dann kann ich die Linked-Object Tabelle abspeichern. Leider ist es mir bisher nicht gelungen, das Blob-Feld in Navision auszulesen. HASVALUE sagt mir immer, dass es keinen Wert gibt obwohl über SQL-Server ein Wert zu sehen ist.

Hat jemand von Euch eine Idee, warum ich das Feld nicht auslesen kann?

Gruß

Michael