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

Форум: MS ACCESS

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

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

 
 

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

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

тема: Выполнение нескольких запросов одновременно
 
 автор: Sanek   (23.09.2009 в 18:05)   личное сообщение
 
 

Помогите разобраться.
Делаю следующий запрос:

CurrentDb.Execute "SELECT Table1.* INTO temp1 FROM Table1; SELECT Table2.* INTO temp2 FROM Table2;"

Выдает ошибку: Онаружены символы за пределами инструкции SQL

Как можно реализовать данную процедуру и возможно ли ее вообще реализовать?

Заранее, очень благодарен!

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

CurrentDb.Execute "SELECT Table1.* INTO temp1 FROM Table1", DB_FAILONERROR
CurrentDb.Execute "SELECT Table2.* INTO temp2 FROM Table2", DB_FAILONERROR

  Ответить  
 
 автор: Sanek   (24.09.2009 в 10:11)   личное сообщение
 
 

Т.е. в одном Execute нельзя задать два запроса? Надо разбивать их на два Execute?

  Ответить  
 
 автор: Силblч   (24.09.2009 в 10:14)   личное сообщение
 
 

а что вас так в этом напрягает?

  Ответить  
 
 автор: Sanek   (24.09.2009 в 10:21)   личное сообщение
 
 

Да вообщем задача стоит следующая:
Необходимо подключаться к SQL Server-у через инет и из таблиц забирать все данные (таблиц около 10, информации много).
Если писать 10 Execut-ов, то при каждом Execute система выполняет подключение и отключение, а это лишний простой и лишние действия (сколько времени занимает не знаю, но занимает). В ADO.NET видел что можно подать в одной команде несколько запросов. Вот и подумал, а Access может делать так или нет?

  Ответить  
 
 автор: FORMAT   (24.09.2009 в 10:33)   личное сообщение
 
 

А что мешает на самом SQL-сервере сделать хранимку с любым количеством запросов?

  Ответить  
 
 автор: Силblч   (24.09.2009 в 10:46)   личное сообщение
 
 

+100

  Ответить  
 
 автор: Sanek   (24.09.2009 в 10:54)   личное сообщение
 
 

Не представляю как это можно сделать и как оно будет взаимодействовать с моим Access.
Если можно ссылочки дайте пожалуйста, как это делать и с чем его едят!

  Ответить  
 
 автор: FORMAT   (24.09.2009 в 11:05)   личное сообщение
 
 

http://www.eduhmao.ru/var/db/files/4460.100482.htm
Да и вообще в гугле можно найти кучу примеров
погуглите на StoredProcedure и Access

  Ответить  
 
 автор: Силblч   (24.09.2009 в 10:45)   личное сообщение
 
 

А что мешает сделать одно подключение?

  Ответить  
 
 автор: Sanek   (24.09.2009 в 10:57)   личное сообщение
 
 

Подключение то одно. Но все равно незнаю или специфика Access или в чем то другом дело. Но система простаивает немного перед выполнением следующего запроса, в этот момент соединение физически не закрывается, но такое впечатление, что закрывается (почему он простаивает немного).

Может подскажите или дадите ссылочку как можно сделать это подругому и с максимальной скоростью выполнения.

  Ответить  
 
 автор: osmor   (23.09.2009 в 18:24)   личное сообщение
 
 

начнем с того что execute в DAO выполняет только запросы на изменение даных...
для select нужно создавать Recordset

  Ответить  
 
 автор: Sanek   (24.09.2009 в 10:05)   личное сообщение
 
 

Несогласен с Вами. Execute может выполнить любой запрос, только результат он не возвращает. А в моем случае результат надо вставить в дуругую таблицу, поэтому Recordset мне уж точно не нужен.

  Ответить  
 
 автор: osmor   (24.09.2009 в 10:38)   личное сообщение
 
 

Несогласен с Вами.


А это и не обязательно. Надеюсь с MS вы согласны ? вот цитата из help


The Execute method is valid only for action queries. If you use Execute with another type of query, an error occurs. Because an action query doesn't return any records, Execute doesn't return a Recordset


а это ссылка
http://msdn.microsoft.com/en-us/library/bb243015.aspx

Вы видимо путаете DAO и ADODB в ADO действительно можно с помощью execute выполнять select'ы
В приведенном вами коде используется DAO (CurrentDb)

А в моем случае результат надо вставить в дуругую таблицу, поэтому Recordset мне уж точно не нужен


Вот как раз доя этого и нужно использовать запрос на добавление который можно выполнить методом EXECUTE

  Ответить  
 
 автор: osmor   (24.09.2009 в 10:44)   личное сообщение
 
 

упс. Только что заметил что у вас запрос "Select.... INTO ...." т.е. action и может быть выполнен с помощью execute

  Ответить  
 
 автор: Sanek   (24.09.2009 в 10:52)   личное сообщение
 
 

Я так и понял. Что мы друг друга не много не поняли . За объяснение спасибо

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