Home |
Search |
Today's Posts |
|
#1
![]()
Posted to microsoft.public.excel.programming
|
|||
|
|||
![]()
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- |
#2
![]()
Posted to microsoft.public.excel.programming
|
|||
|
|||
![]()
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- |
#3
![]()
Posted to microsoft.public.excel.programming
|
|||
|
|||
![]()
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- |
#4
![]()
Posted to microsoft.public.excel.programming
|
|||
|
|||
![]()
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- |
Reply |
Thread Tools | Search this Thread |
Display Modes | |
|
|
![]() |
||||
Thread | Forum | |||
Create Pivot Table Data with Column "Sum" rather than "count" defa | Excel Discussion (Misc queries) | |||
Excel - Golf - how to display "-2" as "2 Under" or "4"as "+4" or "4 Over" in a calculation cell | Excel Discussion (Misc queries) | |||
Adding to excel "table" using external data query | Excel Discussion (Misc queries) | |||
Pivot table "Show all data" query | Excel Discussion (Misc queries) | |||
Copy recordset from an Access "make table" query | Excel Programming |