Rambler's Top100
Форум: MS ACCESSVBVBA MS OfficeMS SQL server
Новые сообщения: 0000

Форум: MS ACCESS

Вопросы связанные с MS ACCESS

Обновить визитку
Участники «Online»
Все участники

 
 

Доброго времени суток, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: QueryDef (Create, Delete)
 
 автор: АлаяЗаря   (27.04.2011 в 17:15)   личное сообщение
 
 

При формировании отчета создаю запрос из БД для рекордсета QueryDef скажем "query". В конце работы с запросом я его удаляю.

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

Можно ли как то предварительно проверять есть ли запрос с таким именем или нет, и если есть его удалять...


Set bdd = DBEngine.Workspaces(0).OpenDatabase("путь к бд")
Set qwr = bdd.CreateQueryDef("query", strsql)
Set rs = qwr.OpenRecordset(dbOpenDynaset)

  Ответить  
 
 автор: Explorer   (27.04.2011 в 17:20)   личное сообщение
 
 

временные объекты создавай во временных БД
потом удаляй целиком временный файл

---

для того, чтобы узнать есть запрос или нет - обратись к нему по имени
и обработай ошибку если такого запроса нет

  Ответить  
 
 автор: АлаяЗаря   (27.04.2011 в 17:38)   личное сообщение
 
 

со временными бд буду разбираться =) спасибо!
А можно мини пример обращения к запросу и обработки ошибки?


With bdd
.QueryDefs.Delete "query_fio"
End With

так я его удаляю, ну если он есть конечно, а если его нет он ругается и приехали..., как тут обработать ошибку чтобы процесс на этом не тормазился....?

  Ответить  
 
 автор: Силblч   (27.04.2011 в 17:47)   личное сообщение
 
 


on error resume next
With bdd
.QueryDefs.Delete "query_fio"
End With 
on error goto 0

  Ответить  
 
 автор: АлаяЗаря   (27.04.2011 в 22:56)   личное сообщение
 
 

Огромное спасибо =) зарабатало =)

Всем спасибо за советы! По мере необходимости буду разбираться! Базу написал за 3 месяца имея нулевой уровень акса и вб. Не думал что она наберет такую популярность на работе, уже набили около 10000 записей в основную таблицу, соответственно и спрос с нее =) собрал маленький дистрибутив к ней, теперь ставят, пользуются =) даже через инет =) я это к чему, что многие вещи, которые для вас очевидны - для меня темный лес, и многих ваших мыслей я посто не могу уловить, поэтому так доходчиго, до тупого иногда спрашиваю.
Где то раз в месяц лезу в вб по базе, смотрю на код и думаю "Че за хр*нь!? как тут что можно понять" =)
Короче, спасибо вам за помощь =)

  Ответить  
 
 автор: Explorer   (27.04.2011 в 18:23)   личное сообщение
 
 

>> так я его удаляю

можно попробовать сохранить одноименный

  Ответить  
 
 автор: osmor   (27.04.2011 в 17:47)   личное сообщение
 
 

если вам нужен только рекордсет, то создавать querydef не обязательно или можно создавать без имени, тогда он не сохраниться в базе
проверить наличие запроса можно:
-перебрав коллекцию querydefs и сравнимать имена объектов с искомым
-попытаться обратиться к querydef по имени и обработать ошибку
- начиная с (кажется XP) есть коллекция AllQueries можно попробовать описанные выше способы с ней а не с querydefs

  Ответить  
 
 автор: Explorer   (27.04.2011 в 17:59)   личное сообщение
 
 

в стейтменте съехала закрывающая скобка!

до конца рабдня 1 мину

  Ответить  
 
 автор: Силblч   (27.04.2011 в 18:03)   личное сообщение
 
 

та :)
у нас ещё 57

  Ответить  
 
 автор: Explorer   (27.04.2011 в 18:13)   личное сообщение
 
 



ну ладно, я тобой посижу - чтоп тебе не скушно было

  Ответить  
 
 автор: Силblч   (27.04.2011 в 18:22)   личное сообщение
 
 

ыыыы

  Ответить  
 
 автор: Силblч   (27.04.2011 в 19:02)   личное сообщение
 
 

Ваньк, всё, я побёг в футбольчег поиграю

  Ответить  
 
 автор: Explorer   (27.04.2011 в 19:07)   личное сообщение
 
 

удачи!

  Ответить  
HiProg.com - Технологии программирования
Rambler's Top100 TopList