Access 2010 Сбой при выполнении запроса
В 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 Sub
Я заметил, что использование памяти увеличивается каждый раз, когда оператор Set rs2 = db.OpenRecordset(strQ)
выполняется, хотя я убираю. Это не выпущено после очистки. Какую потенциальную утечку памяти может вызвать это утверждение?
Спасибо.
1 ответ
Проблема может заключаться в том, что ваш оператор SQL заключен в "умные кавычки" или символы Unicode 0x201C и 0x201D:
”select * from ... string7*')”
В отличие от стандартной двойной кавычки, которая является символом Unicode/ASCII 0x0022:
"select * from ... string7*')"
Вам также не хватает источника данных для вашего select
запрос:
select * from ??? where ...