Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / MSA+MSSQL: динамический запрос / 7 сообщений из 7, страница 1 из 1
21.10.2015, 08:53
    #39081999
Михайло_
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
MSA+MSSQL: динамический запрос
Возможно ли использование динамического запроса в качестве источника данных формы клиент-серверной архитектуры EXPRESS+mdb?
Вариант первый: на сервере создана хранимая процедура my_proc:

declare @str_SQL varchar(8000)
declare @str_filtr as varchar(1000);
SET @str_SQL = 'WITH (...) SELECT ... FROM ... WHERE ...'+@str_filtr
exec(@str_SQL)

В форме задаётся источник данных:

Dim rst As New ADODB.Recordset
rst.CursorLocation = adUseClient
rst.Open 'WITH (...) SELECT ... FROM ... WHERE ...' + str_filtr, "Provider=sqloledb;Server=...;Database=...;User ID=...;Password=...", adOpenKeyset, adLockOptimistic
Set Recordset = rst
rst.Close
Set rst = Nothing

Итог: данные не отображаются на форме. Ни ошибок, ни сообщений...

Вариант второй: В форме задаётся источник данных:

Dim rst As New ADODB.Recordset
rst.CursorLocation = adUseClient
rst.Open 'WITH (...) SELECT ... FROM ... WHERE ...' + str_filtr, "Provider=sqloledb;Server=...;Database=...;User ID=...;Password=...", adOpenKeyset, adLockOptimistic
Set Recordset = rst
rst.Close
Set rst = Nothing

Получаю ошибку: -2147217900 "Неправильный синтаксис около ключевого слова "WITH"".
...
Рейтинг: 0 / 0
21.10.2015, 09:07
    #39082009
П-Л
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
MSA+MSSQL: динамический запрос
Нормальным для аксеса является задание не рекордсета, а рекордсоурса для формы. В случае мдб + сервер использование процедур при этом невозможно. В рекордсоурсе синтаксис должен быть джетовский, входящие в него таблицы или запросы с сервера - прилинкованными.

Спасает дело запросы скл пасс сру. Они без анализа синтаксиса мозгами акеса отправляются на сервер, в ответ получается набор данных.

Заниматься созданием рекордсетов для форм - шаг, когда других вариантов не остается.

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

Ну есть устаревший адп, где такого рода проблемы в принципе не возникают.
...
Рейтинг: 0 / 0
21.10.2015, 09:14
    #39082019
Михайло_
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
MSA+MSSQL: динамический запрос
П-ЛВ случае мдб + сервер использование процедур при этом невозможно.Возможно.
П-ЛСпасает дело запросы скл пасс сру.Имеются в виду ODBC-"запросы к серверу"?
...
Рейтинг: 0 / 0
21.10.2015, 14:00
    #39082378
А так?
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
MSA+MSSQL: динамический запрос
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
Dim rst As New ADODB.Recordset
rst.CursorLocation = adUseClient
rst.Open " WITH (...) SELECT ... FROM ... WHERE ..." &  str_filtr, "Provider=sqloledb;Server=...;Database=...;User ID=...;Password=...", adOpenKeyset, adLockOptimistic
Set Recordset = rst
'rst.Close
set me.recordset = rst
Set rst = Nothing
...
Рейтинг: 0 / 0
21.10.2015, 15:31
    #39082535
Михайло_
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
MSA+MSSQL: динамический запрос
Тоже нет.
А оно чем-то отличается?
...
Рейтинг: 0 / 0
21.10.2015, 21:13
    #39082871
7137
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
MSA+MSSQL: динамический запрос
Михайло_,
авторПолучаю ошибку: -2147217900 "Неправильный синтаксис около ключевого слова "WITH"".
Код: vbnet
1.
sSQL = ";WITH cte as (select * from dbo.spt_values) SELECT * FROM cte WHERE type='A'"
...
Рейтинг: 0 / 0
23.10.2015, 15:59
    #39085009
Михайло_
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
MSA+MSSQL: динамический запрос
Тоже не работает...
А зачем точка с запятой перед WITH?
...
Рейтинг: 0 / 0
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / MSA+MSSQL: динамический запрос / 7 сообщений из 7, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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