Docmd.RunSQL

Работа VB и СУБД (Access, MSSQL, MySQL, Oracle и пр.)
Правила форума
При создании новой темы не забывайте указывать используемую СУБД.
Slav
Начинающий
Начинающий
 
Сообщения: 4
Зарегистрирован: 09.12.2004 (Чт) 16:28

Docmd.RunSQL

Сообщение Slav » 09.12.2004 (Чт) 18:03

Делаю SELECT из таблицы базы Access, но при запуске DoCmd.RunSQL и далее сама строка запроса получаю Run-time error 2342 "Для макрокоманды ЗапускЗапроса SQL требуется аргумент состоящий из инструкции SQL".
Инструкция совсем простая "SELECT * FROM MP". MP-табличка в Access.
Что не так?

Rainbow
Человек-радуга
Человек-радуга
 
Сообщения: 543
Зарегистрирован: 13.05.2003 (Вт) 14:16

Сообщение Rainbow » 09.12.2004 (Чт) 18:26

Так эта штука предназначена для запуска запросов типа UPDATE, DELETE, CREATE TABLE и тд - то есть запросов, выполняющих какое-то действие в базе, а не получающих выборку...

Тебе, наверное, нужен объект Recordset и его метод Open или еще что-нибудь такое.
Учиться - значит открывать для себя то, что уже знаешь. <...> Учить - значит напоминать другим о том, что они знают это также хорошо, как и ты. <...> Лучше всего ты учишь тому, чему тебе самому больше всего надо научиться. (Р. Бах)

Slav
Начинающий
Начинающий
 
Сообщения: 4
Зарегистрирован: 09.12.2004 (Чт) 16:28

Сообщение Slav » 09.12.2004 (Чт) 18:40

Может тогда подскажете, как в Access сделать выборку средствами VB без дополнительных объектов (если это возможно)?

Rainbow
Человек-радуга
Человек-радуга
 
Сообщения: 543
Зарегистрирован: 13.05.2003 (Вт) 14:16

Сообщение Rainbow » 10.12.2004 (Пт) 17:15

Хм... А что вообще требуется-то? Что с выборкой делать надо? Задача какая?

Я не специалист в Access. Я знаю, что там есть формы, которым можно указать в качестве источника данных запрос готовый или SQL. Контролы на форме можно связывать с определенными полями запроса.

Как использовать Access из VB - это пожалуйста, отвечу. А про сам Access - сорри, только общие слова...
Учиться - значит открывать для себя то, что уже знаешь. <...> Учить - значит напоминать другим о том, что они знают это также хорошо, как и ты. <...> Лучше всего ты учишь тому, чему тебе самому больше всего надо научиться. (Р. Бах)

Tatyanka
Немного Иная
Немного Иная
Аватара пользователя
 
Сообщения: 876
Зарегистрирован: 02.12.2004 (Чт) 13:55
Откуда: Киев

Сообщение Tatyanka » 14.12.2004 (Вт) 11:13

Да в общем-то, надо просто этот запрос сохранить под каким-нибудь именем (что уже наверняка сделано). А запуск сделать
DoCmd.OpenQuery stDocName, acNormal, acEdit (или как тебе там надо)
А можно запрос на выборку сделать и без VBA. В окне базы делаешь "Создание запроса с помощью мастера". Он тебе поможет. Дерзай! :D

Slav
Начинающий
Начинающий
 
Сообщения: 4
Зарегистрирован: 09.12.2004 (Чт) 16:28

Сообщение Slav » 21.12.2004 (Вт) 17:48

Tatyanka писал(а):Да в общем-то, надо просто этот запрос сохранить под каким-нибудь именем (что уже наверняка сделано). А запуск сделать
DoCmd.OpenQuery stDocName, acNormal, acEdit (или как тебе там надо)
А можно запрос на выборку сделать и без VBA. В окне базы делаешь "Создание запроса с помощью мастера". Он тебе поможет. Дерзай! :D


Да. Все это хорошо. Но запрос должен формироваться динамически(т.е. готового и сохраненного нет) и задача стоит сделать это средствами VBA. OpenQuery здесь не подойдет. Идеально было бы запустить Select, а результат увидеть на экране или сохранить в вьюшку. Но вот чем запустить SELECT (именно его, а не SELECT...INTO), или такая возможность при работе с Access таблицами вообще не предусмотрена? В общем вопрос в следующем. Как выполнить запрос типа "SELECT" из програмного кода в VBA?

Konst_One
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
Аватара пользователя
 
Сообщения: 3041
Зарегистрирован: 09.04.2004 (Пт) 13:47
Откуда: Химки

Сообщение Konst_One » 21.12.2004 (Вт) 17:52

Код: Выделить всё
Dim rs as ADODB.Recordset
Dim CN as ADODB.Connection

...
rs.Open "SELECT * FROM Table1",CN
....


snov
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 176
Зарегистрирован: 28.11.2003 (Пт) 10:12
Откуда: Челябинск

Сообщение snov » 09.02.2005 (Ср) 15:23

Slav писал(а):Да. Все это хорошо. Но запрос должен формироваться динамически(т.е. готового и сохраненного нет) и задача стоит сделать это средствами VBA. OpenQuery здесь не подойдет. Идеально было бы запустить Select, а результат увидеть на экране или сохранить в вьюшку. Но вот чем запустить SELECT (именно его, а не SELECT...INTO), или такая возможность при работе с Access таблицами вообще не предусмотрена? В общем вопрос в следующем. Как выполнить запрос типа "SELECT" из програмного кода в VBA?
Динамическое формирование запроса делается так:
Код: Выделить всё
CurrentDb.QueryDefs("Имя запроса").SQL="собсно запрос"
Ну а дальше как и было сказано
Код: Выделить всё
DoCmd.OpenQuery stDocName, acNormal, acEdit (или как тебе там надо)
Кстати в Access'e нет как такового понятия вьюхи. там только запросы, хранимые в базе


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

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

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

    TopList  
cron