Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Как создать скрытый запрос на VBA / 10 сообщений из 10, страница 1 из 1
17.01.2017, 15:54
    #39386173
Адеке
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как создать скрытый запрос на VBA
Создаю запрос
Set qry = CurrentDb.CreateQueryDef("имяЗапроса")
Но как дать ему атрибут "скрытый"?
...
Рейтинг: 0 / 0
17.01.2017, 16:34
    #39386217
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как создать скрытый запрос на VBA
Формально
Код: sql
1.
2.
3.
4.
UPDATE [MSysObjects]
SET [Flags] = [Flags] AND 8
WHERE [Name] = "Имя Запроса"
AND [Type] = 5


Вот только хрен он даст...
...
Рейтинг: 0 / 0
17.01.2017, 16:58
    #39386236
MrShin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как создать скрытый запрос на VBA
Код: vbnet
1.
Application.SetHiddenAttribute acQuery, "Query1", True
...
Рейтинг: 0 / 0
17.01.2017, 17:00
    #39386237
MrShin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как создать скрытый запрос на VBA
Да, кстати, если это просто временный запрос, не давайте ему имя, запрос будет удален после использования автоматически.
...
Рейтинг: 0 / 0
17.01.2017, 17:16
    #39386252
Адеке
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как создать скрытый запрос на VBA
MrShin
Код: vbnet
1.
Application.SetHiddenAttribute acQuery, "Query1", True



Спасибо. Пашет.
...
Рейтинг: 0 / 0
17.01.2017, 17:25
    #39386269
Адеке
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как создать скрытый запрос на VBA
MrShinДа, кстати, если это просто временный запрос, не давайте ему имя, запрос будет удален после использования автоматически.
Да, угадали, это временный вопрос. Создаю временный запрос на сервер. Но через него надо сделать INSERT на локальную таблицу и удалить этот временный запрос. Возможно ли в этом случае обратиться на этот безымянный запрос?
Т.е. спрева
Код: vbnet
1.
2.
3.
4.
    Set qry = CurrentDb.CreateQueryDef("имяЗапроса")
    qry.Connect = "ODBC;Driver=SQL Server;Server={Сервер};Database=База;UID=юзер;PWD=пароль;"
    qry.ReturnsRecords = True
    qry.SQL = "текст запроса или вызов хранимой процедуры"



потом
Код: vbnet
1.
CurrentDb.Execute "INSERT INTO tbl... SELECT ... FROM имяЗапроса"



А возможно ли разом, без сохранения временного запроса?
...
Рейтинг: 0 / 0
17.01.2017, 17:36
    #39386279
MrShin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как создать скрытый запрос на VBA
Нет, ко временному запросу можно обратиться только через переменную qry. Если запрос используется в нескольких местах, создаете постоянный именной запрос, используете, потом удаляете, но если используется один раз, ничего не мешает сделать так:

Код: vbnet
1.
2.
3.
4.
5.
    Set qry = CurrentDb.CreateQueryDef("") ' У временного запроса имя пустое
    qry.Connect = "ODBC;Driver=SQL Server;Server={Сервер};Database=База;UID=юзер;PWD=пароль;"
    qry.ReturnsRecords = False
    qry.SQL = "INSERT INTO tbl... SELECT ... FROM (текст вашего запроса на выборку) "
    qry.Execute dbFailOnError
...
Рейтинг: 0 / 0
17.01.2017, 17:45
    #39386287
Адеке
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как создать скрытый запрос на VBA
MrShin,

в таком случае INSERT выполнится на сервере, а не у меня. А мне надо скачать данные с сервера к себе.
...
Рейтинг: 0 / 0
18.01.2017, 06:22
    #39386564
MrShin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как создать скрытый запрос на VBA
Да, забыл убрать коннект
Код: vbnet
1.
2.
3.
    Set qry = CurrentDb.CreateQueryDef("") ' У временного запроса имя пустое
    qry.SQL = "INSERT INTO tbl... SELECT ... FROM (текст вашего запроса на выборку) "
    qry.Execute dbFailOnError


При этом таблицы, входящие в ваш запрос уже должны быть прилинкованы к текущей базе. Если не хотите линковать по соображениям безопасности/производительности или сложности с конвертацией серверного запроса в формат Акцесса, то без создания промежуточного постоянного запроса с именем не обойтись, далее делаете как сами предложили. После выполнения запрос можно удалить.
...
Рейтинг: 0 / 0
18.01.2017, 11:16
    #39386674
PaulB
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как создать скрытый запрос на VBA
Зачем такие сложности?
ConStr = "ODBC;DRIVER={SQL Server};SERVER=SSSSS;DATABASE=DDDDD;UID=UUUUU;PWD=PPPPPP;APP=Microsoft Office 2013"
currentdb.execute "UPDATE [" & ConStr & "].ТаблицаНаСервере SET Код=-1 WHERE Код=-1;",dbfailonerror

или

DoCmd.SetWarnings False
DoCmd.RunSQL "UPDATE [" & ConStr & "].ТаблицаНаСервере SET Код=-1 WHERE Код=-1;"
DoCmd.SetWarnings True
...
Рейтинг: 0 / 0
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Как создать скрытый запрос на VBA / 10 сообщений из 10, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]