Открытие большего числа таблиц невозможно - err 3014(Access)

Работа VB и СУБД (Access, MSSQL, MySQL, Oracle и пр.)
Правила форума
При создании новой темы не забывайте указывать используемую СУБД.
CoolTeapot
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 123
Зарегистрирован: 28.06.2002 (Пт) 8:56
Откуда: Russia, Zelenogorsk

Открытие большего числа таблиц невозможно - err 3014(Access)

Сообщение CoolTeapot » 17.06.2003 (Вт) 8:08

Имеется Data1, подключенная к запросу базы ACCESS 2000
В процессе работы необходимо применять фильтры, типа "Фильт по выделенному", "Исключить выделенное", реализованные так:

1. меняем свойство

Код: Выделить всё
Me.Data1.Recordset.Filter = "[" & Name_Field & "]" & " <> '" & Value_Field & "'"

или:
Код: Выделить всё
Me.Data1.Recordset.Filter = "[" & Name_Field & "]" & " <> " & Value_Field

в зависимости от типа данных и

2. применяем фильтр
Код: Выделить всё
Set Me.Data1.Recordset = Me.Data1.Recordset.OpenRecordset


В результате после 10-15 таких фильтраций начинаются проблемы:

то в коде:
Код: Выделить всё
    Me.Data1.Recordset.Edit
    Me.Data1.Recordset![X] = returnPnt(0)
    Me.Data1.Recordset![Y] = returnPnt(1)
    Me.Data1.Recordset![Z] = returnPnt(2)
    Me.Data1.Recordset.Update

перестаёт работать метод update, то вылазит ошибка 3014 (Открытие
большего числа таблиц невозможно)

Удаление фильтра (смена на другой источник):
Код: Выделить всё
Me.Data1.RecordSource = "Запрос1"
Me.Data1.Refresh

тоже не фурычит.

У меня подозрения на то, что в памяти зависает копия таблицы при каждой фильтрации.

Может кто знает как это лечится или более рациональный способ фильтрации.[/code]
Жизнь - борьба.
До обеда с голодом, после обеда со сном.

CoolTeapot
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 123
Зарегистрирован: 28.06.2002 (Пт) 8:56
Откуда: Russia, Zelenogorsk

Сообщение CoolTeapot » 18.06.2003 (Ср) 2:03

Похоже в базах здесь не шарят :(
Жизнь - борьба.
До обеда с голодом, после обеда со сном.

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 18.06.2003 (Ср) 9:37

Я бы сказал, что нужно перед сменой фильтра делать Data1.Recordset.Close...
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

CoolTeapot
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 123
Зарегистрирован: 28.06.2002 (Пт) 8:56
Откуда: Russia, Zelenogorsk

Сообщение CoolTeapot » 21.06.2003 (Сб) 8:54

GSerg писал(а):Я бы сказал, что нужно перед сменой фильтра делать Data1.Recordset.Close...


Если делать так то теряются накопленные фильтры.

Я пошёл другим путём:
накапливаю SQL запросы:
strSQL = "[" & Name_Field & "]" & " <> " & Value_Field
strSQLFull = strSQLFull & " AND " & strSQL
и затем применяю:
Me.Data1.RecordSource = "SELECT * FROM [" & NameCurTable & "] WHERE (" & strSQLFull & ")"
Me.Data1.Refresh

В результате проблем ещё небыло (посмотрим когда база разрастётся).
И undo-redo фильтрации стало проще организовать.

p.s. при этом варианте можно попробовать и close
Жизнь - борьба.
До обеда с голодом, после обеда со сном.


Вернуться в Базы данных

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 32

    TopList