Query Table "Connection" Prevents Excel from Quitting

  • Thread starter Thread starter Guest
  • Start date Start date
G

Guest

I know that if you allocate a pointer ( handle ) to a worksheet, range, query
table, etc. and don't release it then when you call quit from the application
the Excel process isn't released. I have no problem until I call Refresh on
a Query Table. I programmatically using C++ create/start the application,
workbooks, workbook, worksheets, worksheet, range, query tables, query table
with no problems. Each of those entities are cleaned up properly. I store
the pointer to them and release them when I'm done but it seems as though
when the Refresh is called some unknown pointer is created that I'm unaware
of that I don't release thus causing the program to reside in memory after
quitting. If I comment out the call to Refresh all is fine - well except I
can't perform a query. :) That means the query tables, query table, range
passed to the query table for the connection, worksheet, worksheets,
workbook, workbooks, and application pointers are being cleaned up. Setting
the "BackgroundQuery" property to false didn't change anything.
What am I missing? Thanks.
-G-
 
No guarantees, but try this in your query:

..MaintainConnection = False

Mike F
 
Mike, no change. Thanks for the input. The range pointer that's being passed
to the Add method is a reference counted variable. It is being dereferenced
to 0 and cleaned up as it should be. I thought that might be the issue but
it seems to be working okay. Next?
 
UPDATE
I am performing a SaveAs before I do the Query. If I comment out that call
everything works. If I comment out the query and do the SaveAs everything
works too. So individually everyone is playing nice but when both are
performed something is hosed. To add a kicker, it only happens when the
SaveAs is called BEFORE the Query. SaveAs after the Query is not a factor.
What gives?
-G-
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Back
Top