Feldtypen Nav/SQL

31. Januar 2008 17:51

Hallo,

Wir setzen die native Navision Datenbank ein, die wir mit einer SQL DB per SQL Connector (Commerce Portal) synchronisieren.

In beiden Datenbanken haben wir eine neue Tabelle (DTAUS Header Footer) die u. a. die Felder Kontrollsumme BLZ und Kontrollsumme KtoNr. haben. In der SQL DB stehen Datensätze, die ich per SQL Connector in die Navision Tabelle schreiben möchte.

Hier mein Problem:

Ich habe schon sämtliche Feldtypen ausprobiert. Natürlich habe ich jeweils gleiche Datentypen in den beiden Datenbanken gewählt. Folgende Kombinationen:

Navision: SQL:
Decimal Decimal
Integer Integer
BigInteger BigInteger
Code Code

Den Feldtyp Code kann ich nicht verwenden, da der Inhalt des Feldes später in die Tabelle Disk Ledger Entry geschrieben werden soll und die Feldtypen dort Decimal sind. Ich kenne kennen keine Konvertierung mit der ich aus einem Code-Wert einen Decimal-Wert machen könnte.

Der Feldtype Integer ist zu klein, da die Kontrollsumme u. U. sehr groß werden können.

Wähle ich die Feldtypen Decimal und BigInteger aus erhalte ich folgende Fehlermeldung:


Computer: WWW-DEV
Beschreibung:
This message is for C/AL programmers:

This data type is not supported by C/SIDE. You can access data from
any of the following data types:
VT_VOID, VT_I2, VT_I4, VT_R4, VT_R8, VT_CY, VT_DATE, VT_BSTR and VT_BOOL


Beide Feldtypen (Decimal und BigInteger) stehen aber doch in Navision zu auswahl. Warum kommt dann diese Fehlermeldung?

Grüße

31. Januar 2008 19:07

Navision: SQL:
Decimal Decimal
Integer Integer
BigInteger BigInteger
Code Code

Falsch! Der NAV Datentyp "Code" wird in SQL zu "varchar"!

Leider kenn ich diese "SQL Connector" nicht, aber wäre es nicht einfacher, die Daten aus der SQL Datenbank via MS ADO abzufragen?
Wie fragst Du die Daten denn ab?

31. Januar 2008 19:53

Richtig, mein Fehler. Habe aber in der Tat in SQL den Typ Varchar und auf Navisionseite Code ausgewählt. SQL Connector ist eine Tabelle, in der die zu synchronisierenden Tabellen und deren Felder gegenübergestellt werden. Zzgl. Synchronisationsintervalle etc.

Jetzt muss ich mal doof fragen, was ist MS ADO?

31. Januar 2008 19:58

Aaah, erst recherchieren, dann fragen. "Active Data Objects"! Wie man sieht, habe ich keine Erfahrungen damit und ehrlich gesagt basiert unsere komplette Synchronisation auf das SQL Connector-Verfahren, was ich ungern umbauen möchte. Vielleicht doch eine Idee, warum diese Fehlermeldung erscheint, obwohl beide Datentypen in beiden Datenbanken vorhanden sind?

17. April 2008 22:05

Probiere mal FORMAT()

l_Name Variant

l_Name := AdoField.Value;
Message(FORMAT(l_Name));