I am tasked with moving companies that are using Quickbooks Pro and Quickbooks Enterprise to NAV. I have been using the QODBC driver to access the Quickbooks data structure and have survived the QB → Excel → NAV process using Excel Buf (table 370) to pull QB data into tables that mirror QB tables. From there I have converted G/L Chart, G/L Transactions, Customers, Sales History, Vendors. The larger companies will generally use a vertical package for Customers / Sales / Inventory and QB Enterprise for G/L and A/P.
QB conversion has been a long and winding road. QB likes to change all the rules regularly by forcing upgrades and changing the data structure with each upgrade. In order to speed up the QB data pull, and insulate it from table structure changes, I have started to pursue ADO data access from C/SIDE using the QODBC driver. I was really excited until I ran into my first decimal data type in QB. I am pulling the data into NAV with a variant data type as in:
VariantTemp := ADO_RecSet.Fields().Item(‘Amount’).Value;
However, no matter what set of logic I try, I can’t get VariantTemp to give me a decimal value. The VariantTemp.ISDECIMAL property comes back false.
The local function shown below returns TRUE, (thank you Erik), which you might construe to mean that it was null. However, a little VBA code that parallels my C/SIDE logic proves that -8,159.02 is the value of Amount. I’ve got a support intance started with QODBC to see if I can monkey with their driver somehow. If that isn’t possible I may end up in some flavor of VB for this project. I CAN read from QB with one ADO connection and write to NAV using a 2nd ADO connection. I’m wondering if anyone has any suggestions, (technical please [8-|] ).
Procedure VarCheck(InVariant) : Boolean
EXIT(NOT (
InVariant.ISCODE OR
InVariant.ISBINARY OR
InVariant.ISTEXT OR
InVariant.ISINTEGER OR
InVariant.ISDECIMAL OR
InVariant.ISBOOLEAN OR
InVariant.ISOPTION OR
InVariant.ISCHAR OR
InVariant.ISDATE OR
InVariant.ISTIME));