Access 2010查询执行崩溃

时间:2019-01-10 22:16:00

标签: database ms-access crash sql-like linked-tables

在Windows 10和MS Access 2010中,我运行的vba函数执行SQL查询,该查询从链接到与Outlook链接的表中提取记录。 查询看起来像这样:

select * from  where LinkedTable.Field1 like '*string1*' and (LinkedTable.Field2 like 'string2*' OR LinkedTable.Field2 like 'string3*' OR LinkedTable.Field2 like 'string4*' OR LinkedTable.Field2 like 'string5*' OR LinkedTable.Field2 like 'string6*' OR LinkedTable.Field2 like string7*')

在执行查询之前,我正在刷新表的链接。

运行该功能时访问崩溃。调试导致确定执行查询的时间点是Access崩溃时:Set rs2 = db.OpenRecordset(strQ)

代码如下:

    Sub xyz()
    Dim db As DAO.Database
    Dim rs2 As DAO.Recordset 'this the sql query table
    dim rs1 as DAO.Recordset
set rs1=db.openrecordset("anothertable")
rs1.movefirst
do while not rs1.eof 

    strQ ="select * from  LinkedTable where LinkedTable.Field1 like '*string1*' and (LinkedTable.Field2 like 'string2*' OR LinkedTable.Field2 like 'string3*' OR LinkedTable.Field2 like 'string4*' OR LinkedTable.Field2 like 'string5*' OR LinkedTable.Field2 like 'string6*' OR LinkedTable.Field2 like string7*')"

    db.TableDefs(LinkedTable).RefreshLink
    Set rs2 = db.OpenRecordset(strQ)
    .

rs2.close
set rs2=nothing
rs1.movenext
loop
    .
    .
    En

d子

我注意到每次声明时内存使用量都会增加 设置rs2 = db.OpenRecordset(strQ)

即使我正在清理,也会执行

。清理后不会释放。该语句可能导致什么潜在的内存泄漏?

谢谢。

1 个答案:

答案 0 :(得分:0)

问题可能是您的SQL语句包含在“智能引号”或Unicode字符0x201C0x201D中:

”select * from ... string7*')”

与标准双引号相反,后者是Unicode / ASCII字符0x0022

"select * from ... string7*')"

您还缺少select查询的数据源:

select * from ??? where ...