![]() |
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- |
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- |
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- |
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