Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Запросы: Программный доступ к параметру хранимого запроса. / 15 сообщений из 15, страница 1 из 1
20.11.2003, 13:51
    #32330085
kaskiev
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запросы: Программный доступ к параметру хранимого запроса.
База данных создана в Microsoft Access. Существует запрос с изменяемым параметром.
Код: plaintext
SELECT * FROM MyTable1 WHERE MyParam=[NewParam]

Запрос хранится в БД в разделе "Запросы".

Вопрос:
Возможно ли задать параметр запроса программным способом?
Например, используя VBA. Код должен иметь примерно такой вид:
Код: plaintext
1.
qdf.Parameters( "Param1" ).Value =  "777 "    
Set rst = dbs.OpenRecordset( "MyQwery1" )


Важно:
Я изучал этот вопрос. В докуметации разработчика говорится, что нельзя задать параметры хранимиого запроса программынм способом . Эта было актульно еще для Access 97. Но, я считаю, что это очень большой недостаток .
Неужели ничего с тех пор не изменилось? Или я что-то пропустил?
...
Рейтинг: 0 / 0
20.11.2003, 14:06
    #32330119
Владимир Саныч
Модератор форума
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запросы: Программный доступ к параметру хранимого запроса.
автор писал:Код должен иметь примерно такой вид:
Ну так это правильный код. Что, он не работает?
...
Рейтинг: 0 / 0
20.11.2003, 14:12
    #32330134
Владимир Саныч
Модератор форума
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запросы: Программный доступ к параметру хранимого запроса.
Прошу прощения. Это неправильный код. Вторая строка должна быть такая:

Код: plaintext
Set rst = qdf.OpenRecordset
...
Рейтинг: 0 / 0
20.11.2003, 14:32
    #32330165
kaskiev
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запросы: Программный доступ к параметру хранимого запроса.
Да, это код не работает.
Выдается сообщение об ошибке: "Слишком мало параметров. Требуется <число>. (Ошибка 3061)" ("Too few parameters (...)")

Это "старая байка"! Это код никогда еще неработал, ни при каких вариациях, ни у кого!
Об этой "особенности" невозможности программного задания параметров в хранимых запросов написано в официальной документации разработчика MSDN.
...
Рейтинг: 0 / 0
20.11.2003, 14:36
    #32330180
kaskiev
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запросы: Программный доступ к параметру хранимого запроса.
Согласно документации разработчика верны оба варианта:
Код: plaintext
Set rst = dbs.OpenRecordset( "MyQwery1" )

Код: plaintext
Set rst = qdf.OpenRecordset
...
Рейтинг: 0 / 0
20.11.2003, 14:39
    #32330189
Senin Viktor
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запросы: Программный доступ к параметру хранимого запроса.
Ты пьян, kaskiev\r
Прочти, например: FAQ: Как избавиться от подтверждений на удаление и т.п., или что лучше DoCmd.Run - это про АДО или FAQ: Как избавиться от подтверждений на удаление и т.п., или что лучше DoCmd.Run - это про дао
...
Рейтинг: 0 / 0
20.11.2003, 14:48
    #32330208
Владимир Саныч
Модератор форума
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запросы: Программный доступ к параметру хранимого запроса.
Если писать НЕ

Set rst = qdf.OpenRecordset

то подставленные в qdf значения параметров не будут использованы.
...
Рейтинг: 0 / 0
20.11.2003, 15:14
    #32330262
Hummer
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запросы: Программный доступ к параметру хранимого запроса.
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
Public Sub Test()
Dim db As DAO.Database
Dim qd As DAO.QueryDef
Dim rst As DAO.Recordset

Set db = CurrentDb
Set qd = db.QueryDefs( "RDV" )
With qd
    .Parameters( "id" ).Value =  3 
    Set rst = .OpenRecordset()
End With
With rst
    .MoveLast
    MsgBox .RecordCount &  " "  & .Fields( 1 ).Value
    .Close: Set rst = Nothing
End With

Set qd = Nothing
Set db = Nothing
End Sub


RDV - сохранённый запрос с параметром. Всё работает.
...
Рейтинг: 0 / 0
20.11.2003, 15:17
    #32330270
kaskiev
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запросы: Программный доступ к параметру хранимого запроса.
Владимир Саныч
Вы абсолютно правы!
Такой код работает:
Код: plaintext
1.
qdf.Parameters( "Param1" ).Value =  "777 "    
Set rst = qdf.OpenRecordset 


Я делал поиск по интернету. Я выяснил, что у многих возникала такая проблема. И везде были рекомендации использовать генерацию строки SQL запроса в тексте программы "налету". Но это очень неудобно.
Спасибо, теперь проблема решена!

Senin Viktor
А вам надо учиться цивилизованно общаться.
...
Рейтинг: 0 / 0
20.11.2003, 15:20
    #32330277
Владимир Саныч
Модератор форума
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запросы: Программный доступ к параметру хранимого запроса.
Неужто наш форум владеет монополией на правильное решение этой задачи... :^)
...
Рейтинг: 0 / 0
20.11.2003, 15:25
    #32330283
Hummer
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запросы: Программный доступ к параметру хранимого запроса.
Ага, аккурат после msdn наверное:)

P.S. Не понятно, на каких форумах парень спрашивал решение....
...
Рейтинг: 0 / 0
20.11.2003, 16:17
    #32330410
Senin Viktor
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запросы: Программный доступ к параметру хранимого запроса.
2kaskiev
>А вам надо учиться цивилизованно общаться.

Если ты дашь источник откуда ты взял : В докуметации разработчика говорится, что нельзя задать параметры хранимиого запроса программынм способом. я извинюсь.
...
Рейтинг: 0 / 0
20.11.2003, 17:57
    #32330614
kaskiev
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запросы: Программный доступ к параметру хранимого запроса.
Senin Viktor
Да, действительно, я ошибся. На MSDN есть с десяток статей по поводу создания и особенностей работы с параметрическими запросами ("parameter queries"). Видимо я сделал неправильный перевод -- английский мой неродной язык. Для уточнения проблемы я и обратился в форум.

Но в любом случае все-таки хочеться нормально общаться.
...
Рейтинг: 0 / 0
20.11.2003, 18:01
    #32330619
Владимир Саныч
Модератор форума
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запросы: Программный доступ к параметру хранимого запроса.
Я предлагаю простить Виктора. Готов попросить прощения за него. И даже уже прошу.
...
Рейтинг: 0 / 0
20.11.2003, 18:20
    #32330643
Темный
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запросы: Программный доступ к параметру хранимого запроса.
Гы-гы. Это нормальное общение. Зашел бы ты на ПТ пару месяцев назад - здесь бы раем показалось.

Даже странно, на х не послали, дебилом не обозвали и т.п.
Лана, злой я сегодня. Пора домой. А с завтрашнего дня - долгожданный отпуск!!!
...
Рейтинг: 0 / 0
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Запросы: Программный доступ к параметру хранимого запроса. / 15 сообщений из 15, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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