EXCEL ADODB Query on local worksheet not Including newly inserted records

断了今生、忘了曾经 提交于 2019-12-24 12:34:49

问题


I am using ADODB to query data form a worksheet in the Active workbook. The data resides on it's own sheet, and has column headers. I've defined the table as an excel ListObject - excel's automatic table formatting construct.

I open the connection like this:

Set cn = CreateObject("ADODB.Connection")
Set rs = CreateObject("ADODB.Recordset")

strCon = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & ThisWorkbook.Path & "\" & _ 
   ThisWorkbook.Name & ";Extended Properties=""Excel 8.0;HDR=Yes;IMEX=1"";"
cn.Open strCon

Then I can fetch a recordset using a simple SQL statement:

strSQL = "SELECT * from [sheet1$]
rs.Open strSQL, cn, 0, 1  'cursortype = adOpenForwardOnly, locktype = adOpenReadonly

This all works fine... until I insert a new row in the table on sheet1. The new row is not included in subsequent queries, even if I close, set to nothing, and re-open both the connection and recordset variables in my code.

If I save and close the workbook, and then re-open it, the new records ARE included in the query, which leads me to believe this might be a caching issue. I've searched for ADODB Cache Flush etc, but most results appear to be related to PHP or Access. I've also tried a variety of other options for Cursor Type and Lock Type, with no difference.

Can anyone suggest how I can ensure that each time I run my query I get all the rows, even after I insert new rows in the table?


回答1:


Figured out a solution:

Since I'm using Excel 2010, I discovered that I can use a newer version of ADODB.

So, instead of defining my connection string like this:

"Provider=Microsoft.Jet.OLEDB.4.0;Data Source="...

I changed it to this:

"Provider=Microsoft.ACE.OLEDB.12.0;Data Source="...

and the problem is solved. New inserts and edits are now showing up immediately after I make them. This also removes the issue of the known memory leak in OLEDB.4.0, so that's a bonus.



来源:https://stackoverflow.com/questions/24193112/excel-adodb-query-on-local-worksheet-not-including-newly-inserted-records

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!