Member Login

Username
Password
Forget Password
New Sign Up
Search Forum

Buy Support
Incidents

If you can't find your answer in the FREE PUBLIC QDeveloper Forum, require URGENT Priority Support, or you need to send us private or confidential information:

Click Here
If you can't login and post questions or you are having trouble viewing forum posts:
Click Here
Callback
Support

If you live in USA, UK, Canada, Australia or New Zealand, you can leave us details on your question and request us to call you back and discuss them with you personally  (charges apply).

Click Here
 
Buy Support
Incidents
If you can't find your answer in the FREE PUBLIC QDeveloper Forum, require URGENT Priority Support, or you need to send us private or confidential information:
Click Here

Forum : Iterator ErrorSearch Forum

Forum Home > QODBC - ODBC Driver for QuickBooks > QODBC SQL Support Forum

 New Topic 
 
 Post Reply 
[1]  
 Iterator Error 
 Author   Message 
  Ian 
  
 Group: Members 
 Posts: 19 
 Joined: 2006-05-03 
 Profile
 Posted : 2006-07-07 00:59:06

I added FROM UNOPTIMIZED to my Customer query to force all records to be returned and I received the below.

OLE DB provider "MSDASQL" for linked server "egroup_QB" returned message "[QODBC] Error: 3391 - The iteratorID "{deaaec06-c36b-4dfa-b1a5-28eea7a909ee}" is not valid.".

Msg 7330, Level 16, State 2, Line 1

Cannot fetch a row from OLE DB provider "MSDASQL" for linked server "egroup_QB".

 

  Top 
  Tom 
  6c3c1_sdk-qodbc.gif
 Group: Administrator 
 Posts: 5510 
 Joined: 2006-02-17 
 Profile
 Posted : 2006-07-07 08:34:38
If you don't want the QODBC optimizer to run, switch it off instead. See: How do I switch OFF or RESET the QODBC optimizer?  

  Top 
  Ian 
  
 Group: Members 
 Posts: 19 
 Joined: 2006-05-03 
 Profile
 Posted : 2006-07-07 09:43:27

I followed the instructions and I am attempting the queries now. Could the iterator error be related to a corrupt optimizer file? I was getting that error without using the UNOPTIMIZED argument as well.

Also, could a corrupt file explain the BillItemLine NULL error I was receiving?

 

  Top 
  Tom 
  6c3c1_sdk-qodbc.gif
 Group: Administrator 
 Posts: 5510 
 Joined: 2006-02-17 
 Profile
 Posted : 2006-07-07 14:08:55
Well, maybe. 

  Top 
  Ian 
  
 Group: Members 
 Posts: 19 
 Joined: 2006-05-03 
 Profile
 Posted : 2006-07-08 03:36:30

Most queries are returning this iterator error - it has rendered the application unusable. Any suggestions at all? I have already reinstalled QODBC with no luck.

Cannot fetch a row from OLE DB provider "MSDASQL" for linked server "egroup_QB". OLE DB provider "MSDASQL" for linked server "egroup_QB" returned message - The iteratorID {fef44ce9-bb35-42db-8e20-1ba493576f73} is not valid.

Help.

Ian

 

  Top 
  Tom 
  6c3c1_sdk-qodbc.gif
 Group: Administrator 
 Posts: 5510 
 Joined: 2006-02-17 
 Profile
 Posted : 2006-07-08 12:24:18

You need to be using the Microsoft OLE DB Provider for ODBC for your QODBC linked tables.

 

  Top 
  Ian 
  
 Group: Members 
 Posts: 19 
 Joined: 2006-05-03 
 Profile
 Posted : 2006-07-09 00:56:35

MSDASQL is the Microsoft OLE DB Provider for ODBC -

Some queries work and some don't - the same queries that are now failing with the above error worked fine a couple of days ago. Even now, some continue to work.

Is that error being returned from QODBC or the QB SDK?

 

  Top 
  Tom 
  6c3c1_sdk-qodbc.gif
 Group: Administrator 
 Posts: 5510 
 Joined: 2006-02-17 
 Profile
 Posted : 2006-07-09 15:56:34

Please ensure you're running QODBC v6.00.00.176 and then test the queries that fail using VB Demo and look at both the QODBC and SDK Message logs to see what the real errors are.

See: How do I turn on the trace log? for more.

 

  Top 
  Ian 
  
 Group: Members 
 Posts: 19 
 Joined: 2006-05-03 
 Profile
 Posted : 2006-07-11 10:07:49

One other thing to note - just as I was having issues with a certain column being NULL in BillItemLine - TimeTracking returns the iterator error when I select certain columns but not when I select * (wierd!).

Example from QODBC Log: (There were a lot of these)

2006-07-10 18:50:12 QODBC Ver:  6.00.00.176 *********************************************************************************************************************
IsAService: True
SQLOptimize_OpenOptimizeDBHandle prepare:
SELECT "type", "tbl_name" FROM "SQLite_MASTER"
file is encrypted or is not a database

Example from SDK Log:

20060710.185349 I 3988 RequestProcessor ========= Started Connection =========
20060710.185349 I 3988 RequestProcessor Request Processor, QBXMLRP2 v5.0
20060710.185349 I 3988 RequestProcessor Connection opened by app named 'FLEXquarters QODBC'
20060710.185349 I 3988 CertVerifier The file does not contain an Authenticode signature.
20060710.185352 I 3988 RequestProcessor Opening the file in the DoNotCare mode.
20060710.185352 I 3988 RequestProcessor Connection closed by app named 'FLEXquarters QODBC'
20060710.185352 I 3988 RequestProcessor ========== Ended Connection ==========
20060710.185352 I 552 QBSDKProcessRequest Application named 'FLEXquarters QODBC' starting requests (process 3988).
20060710.185354 I 552 SpecVersion Current version of qbXML in use: 5.0
20060710.185354 I 552 QBSDKMsgSetHandler QUERY: Bill
20060710.185354 I 552 BillStorage::DoQuery Setting iterator chunk size to 00000100
20060710.185732 I 552 QBSDKMsgSetHandler Request 1 completed successfully.
20060710.185732 I 552 MsgSetHandler Finished.
20060710.185732 I 552 QBSDKProcessRequest Application named 'FLEXquarters QODBC' finishing requests (process 3988), ret = 0.
20060710.185733 I 552 QBSDKProcessRequest Application named 'FLEXquarters QODBC' starting requests (process 3988).
20060710.185734 I 552 SpecVersion Current version of qbXML in use: 5.0
20060710.185734 I 552 QBSDKMsgSetHandler QUERY: Time Tracking
20060710.185734 I 552 TimeTrackingStorage::DoQuery Setting iterator chunk size to 00000100
20060710.185735 I 552 QBSDKMsgSetHandler Request 1 completed successfully.
20060710.185735 I 552 MsgSetHandler Finished.
20060710.185735 I 552 QBSDKProcessRequest Application named 'FLEXquarters QODBC' finishing requests (process 3988), ret = 0.

 

  Top 
  Tom 
  6c3c1_sdk-qodbc.gif
 Group: Administrator 
 Posts: 5510 
 Joined: 2006-02-17 
 Profile
 Posted : 2006-07-11 11:19:23
The question was, do the queries run successfully using VB Demo? 

  Top 
  Ian 
  
 Group: Members 
 Posts: 19 
 Joined: 2006-05-03 
 Profile
 Posted : 2006-07-11 13:25:11

Yes, they work fine in VBDemo. Also, the query that returns the null error in BillItemLine works fine in VBDemo.

This was a sudden thing - everything was working great and then these null and iterator errors started. I am not aware of anything that changed to cause this to happen.

Thanks again for your help.

Ian

 

  Top 
  Ian 
  
 Group: Members 
 Posts: 19 
 Joined: 2006-05-03 
 Profile
 Posted : 2006-07-11 13:27:24

I also found this in the log:

2006-07-10 19:44:40 QODBC Ver:  6.00.00.176 *********************************************************************************************************************
IsAService: True
SQL Statement: SELECT TxnID, VendorRefListID, TxnDate, DueDate, AmountDue, TermsRefListID, ItemLineCustomerRefListID, ItemLineItemRefListID, ItemLineQuantity, ItemLineCost, ItemLineAmount, ItemLineBillableStatus, Memo, ItemLineDesc FROM BillItemLine WHERE ItemLineI
temRefListID = '370001-1118367865'
Error Getting XML in BuildAndLoadXMLForNextRecord
Input XML:
<?xml version="1.0" encoding="ISO-8859-1"?>
<?qbxml version="5.0"?>
<QBXML>
    <QBXMLMsgsRq onError="continueOnError">
        <BillQueryRq requestID="1" iterator="Continue" iteratorID="{ae480fd2-f056-4bec-9fc5-ee67185c00ba}">
            <MaxReturned>00000100</MaxReturned>
            <IncludeLineItems>1</IncludeLineItems>
            <IncludeLinkedTxns>0</IncludeLinkedTxns>
            <IncludeRetElement>TxnID</IncludeRetElement>
            <IncludeRetElement>EditSequence</IncludeRetElement>
            <IncludeRetElement>VendorRef</IncludeRetElement>
            <IncludeRetElement>TxnDate</IncludeRetElement>
            <IncludeRetElement>DueDate</IncludeRetElement>
            <IncludeRetElement>AmountDue</IncludeRetElement>
            <IncludeRetElement>TermsRef</IncludeRetElement>
            <IncludeRetElement>Memo</IncludeRetElement>
            <IncludeRetElement>ItemGroupLineRet</IncludeRetElement>
            <IncludeRetElement>ItemLineRet</IncludeRetElement>
        </BillQueryRq>
    </QBXMLMsgsRq>
</QBXML>

 

  Top 
  Tom 
  6c3c1_sdk-qodbc.gif
 Group: Administrator 
 Posts: 5510 
 Joined: 2006-02-17 
 Profile
 Posted : 2006-07-11 14:27:45

Queries like:

SELECT TxnID, VendorRefListID, TxnDate, DueDate, AmountDue, TermsRefListID,
ItemLineCustomerRefListID, ItemLineItemRefListID, ItemLineQuantity,
ItemLineCost, ItemLineAmount, ItemLineBillableStatus, Memo, ItemLineDesc
FROM BillItemLine WHERE ItemLineItemRefListID = '370001-1118367865'

have to do a full table scan of BillItemLine. So the larger the number of records, the longer it's going to take. At this stage I'm guessing something is happening while running this query via a SQL Server Linked table.

Does the error happen all of the time, some of the time, or if it's the only thing running?

What version of QuickBooks are you running (including update release [R6 or R7])?

 

  Top 
  Ian 
  
 Group: Members 
 Posts: 19 
 Joined: 2006-05-03 
 Profile
 Posted : 2006-07-12 14:55:01

The null item error happens every time with the BillItemLine. The error that is returned to SQL is not a SQL error, it is a QB error isn't it?

The larger issue is most queries now fail with the iterator error I mentioned to you. I did get a customer query to run yesterday but it only returned 101 rows before failing and giving the iterator error. I am seeing this iterator error in Customer, Vendor, TimeTracking, etc.

Quickbooks Pro 2006 Release R7P

 

  Top 
  Tom 
  6c3c1_sdk-qodbc.gif
 Group: Administrator 
 Posts: 5510 
 Joined: 2006-02-17 
 Profile
 Posted : 2006-07-13 00:28:21
This issue has been escalated to second level support to our Software Engineer on Ticket ID: QS00000001. It may take up to 48 hours before a reply is posted here. 

  Top 
  Ian 
  
 Group: Members 
 Posts: 19 
 Joined: 2006-05-03 
 Profile
 Posted : 2006-07-18 11:25:17
Is there any update? 

  Top 
  Tom 
  6c3c1_sdk-qodbc.gif
 Group: Administrator 
 Posts: 5510 
 Joined: 2006-02-17 
 Profile
 Posted : 2006-07-18 14:12:38

We will most likely add a setting to the QODBC Advanced Setup tab to turn off the Iterators for use with MS SQL Server and other multi-threaded applications. The QuickBooks session is per thread and we have to restart a new session every time the MS SQL Server thread ID changes.

Note: Only USA Editions of QuickBooks 2006 have the iterator feature, meaning QuickBooks 2005 and other country versions (non-USA editions) don't have this issue. 

 

  Top 
  Ian 
  
 Group: Members 
 Posts: 19 
 Joined: 2006-05-03 
 Profile
 Posted : 2006-07-18 20:35:30
What is the time frame for something like this? 

  Top 
  Tom 
  6c3c1_sdk-qodbc.gif
 Group: Administrator 
 Posts: 5510 
 Joined: 2006-02-17 
 Profile
 Posted : 2006-08-14 10:38:32

This has been fixed in QODBC Setup v6 Build 186 (or higher):

QODBC Advanced Setup

The selected defaults in the Advanced settings should apply to most users and normally don't need not be changed.

  • Reconnect Delay: Is an amount of time to wait after a disconnect when using the remote connector. This allows QuickBooks to fully unload it if it is being loaded in the background on the Host Remote Connector, before you connect again.
  • Maximum Field Name Length: is set to the QuickBooks limitation but certain applications like Delphi can not handle this limit and must be set accordingly.
  • Use Case Sensitive RefNumber Searches when checked means a refnumber of 'ABC' and 'abc' will be different, but means QuickBooks can use an index internally for a search instead of a complete table scan. (Note: this feature applies to versions of QuickBooks 2005 and higher)
  • Include Raw Files if checked will display both filtered and raw data formats. QODBC formats data into SQL field types more easily used in programming languages for math and comparison operations. The Raw tables return the data as it is returned to QODBC without modification.
  • Run 2.1 ODBC Compatibility is checked for certain applications that require ODBC 2.1 Compatibility to use QODBC. Anything that uses the Java ODBC library, like ColdFusion, requires this option turned on or recordsets will be returned with no rowsets or only 1 rowset.
  • Simulate Transaction Support for SQL Server will turn transaction support on so that SQL Server will allow updates when using QODBC as a linked server. QODBC still does not support transactions, but simulates the turning on and off of transactions.
  • The Advanced tab in QODBC Setup v6 Build 186 and later has new defaults for Use Iterators and Iterator or Chunk Size fields. This allows you to turn off iterators. This is needed on systems like MS-SQL and Web Servers that use multiple threads.
  • Integrated Application Defaults Authorization popup settings. These settings are only available to USA QuickBooks 2005 and USA QuickBooks 2006 users, otherwise they are greyed out.

 

  Top 
  adrshen 
  
 Group: Members 
 Posts: 2 
 Joined: 2008-06-03 
 Profile
 Posted : 2008-06-10 09:09:39

I am importing data from QB to SQL Server . I could't import some tables and record this error

Msg 7342, Level 16, State 1, Line 1

An unexpected NULL value was returned for column "[QB]...[WorkersCompCode].Desc" from OLE DB provider "MSDASQL" for linked server "QB". This column cannot be NULL.

I have looked on itreator option under Advance table it is checked and default vlaue is 500.

I am using 8.00.00.240 trial version of QODBC and Enterprise edition 2008 of QB?

Is there any soultion.

 

 
Ahmad Drshen
MCP,MCDBA,MCITP 
 
  Top 
  Tom 
  6c3c1_sdk-qodbc.gif
 Group: Administrator 
 Posts: 5510 
 Joined: 2006-02-17 
 Profile
 Posted : 2008-06-10 11:33:16
This error has nothing to do with the Iterator. Some columns in QuickBooks will return NULL values. For example: BillItemLine.ItemGroupLineItemGroupRefListID is often a NULL because not every inventory item will belong to a group. You will need to subsitute the null value using something along the lines of:

Select TxnID, {fn IFNULL(ItemGroupLineItemGroupRefListID, 'NULL')}
as ItemGroupLineItemGroupRefID from BillItemLine 

  Top 
 New Topic 
 
 Post Reply 
[1]  

Jump to