ExcelBanter

ExcelBanter (https://www.excelbanter.com/)
-   Excel Programming (https://www.excelbanter.com/excel-programming/)
-   -   Query Table "Connection" Prevents Excel from Quitting (https://www.excelbanter.com/excel-programming/365143-query-table-connection-prevents-excel-quitting.html)

Grasshopper

Query Table "Connection" Prevents Excel from Quitting
 
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-

Mike Fogleman

Query Table "Connection" Prevents Excel from Quitting
 
No guarantees, but try this in your query:

..MaintainConnection = False

Mike F
"Grasshopper" wrote in message
...
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-




Grasshopper

Query Table "Connection" Prevents Excel from Quitting
 
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?

"Mike Fogleman" wrote:

No guarantees, but try this in your query:

..MaintainConnection = False

Mike F
"Grasshopper" wrote in message
...
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-





Grasshopper

Query Table "Connection" Prevents Excel from Quitting
 
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-

"Grasshopper" wrote:

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-



All times are GMT +1. The time now is 09:05 AM.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
ExcelBanter.com