powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / возможна ли такая конструкция?
13 сообщений из 13, страница 1 из 1
возможна ли такая конструкция?
    #32288292
K_Николай
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
создается строка, например
strSQL="select * from"

Можно ли программном запуске запроса после from указать не явное имя таблицы или запроса, использовать ранее сщзданный временный объект QueryDef
например такой:
set qdf=currentDB.CreateQueryDef("") ' (т.е. мне не надо создавать его в окне БД)
qdf.sql="Select..... from <несколько связанных таблиц>"

как использовать qdf в качестве параметра в секции from строки strSQL ? если это возможно
...
Рейтинг: 0 / 0
возможна ли такая конструкция?
    #32288375
Hummer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Возможно:
Вот примерный вариант - просто кусок кода.
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
Set qdf = db.CreateQueryDef(fname, strSQL)
Set qdf = db.CreateQueryDef(fname_1, strSQL)

' Склеиваем два запроса и сохраняем

strSQL =  "SELECT ["  & fname_1 &  "].[Пункт анкеты], ["  & fname_1 &  "].Код, ["  & fname_1 &  "].Сектор, ["  & fname_1 &  "].Значение, ["  & fname_1 &  "].[Кол-во аптек], ["  & fname_1 &  "].Процент, ["  & fname_1 &  "].[Всего аптек]"  _
        &  " FROM ["  & fname_1 &  "] INNER JOIN ["  & fname &  "] ON (["  & fname_1 &  "].Сектор = ["  & fname &  "].Сектор) AND (["  & fname_1 &  "].[Пункт анкеты] = ["  & fname &  "].[Пункт анкеты])"  _
        &  " GROUP BY ["  & fname_1 &  "].[Пункт анкеты], ["  & fname_1 &  "].Код, ["  & fname_1 &  "].Сектор, ["  & fname_1 &  "].Значение, ["  & fname_1 &  "].[Кол-во аптек], ["  & fname_1 &  "].Процент, ["  & fname_1 &  "].[Всего аптек];" 
Set qdf = db.CreateQueryDef( "Готовый запрос" , strSQL)

Fname - имя первого запроса, fname_1 - имя второго запроса, strSQL - SQL инструкция.
...
Рейтинг: 0 / 0
возможна ли такая конструкция?
    #32288393
K_Николай
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
но ты ведь все равно указываешь имя запроса хоть и склеиваешь строки.
Это понятно, а как быть если запрос без имени, т.е. только в памяти?
можно ли его использовать в качестве источника для sql-строки?
т.е запрос не такой
Set qdf = db.CreateQueryDef(fname, strSQL),
а такой
Set qdf = db.CreateQueryDef("", strSQL)
Его нет как такового, он только в оперативке сидит.
Т.е. FROM [" & fname_1 & "] как написать если fname_1 нет.
Кстати не обязательно запрос должен быть связующий несколько таблиц
например
SELECT * from (а здесь надо каким-то образом указать на qdf)
...
Рейтинг: 0 / 0
возможна ли такая конструкция?
    #32288409
Hummer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да указываю, пусть создаёт его в БД с именем, потом я его удаляю, на момент написания мне так показалось проще:)
Это писалось для экспорта данных в Ексель из формы с фильтрами (т.е. первый запрос - одна форма с применённым фильтром, второй - вторая, потом вяжутся и кидаются в ексель - получается гораздо быстрее, чем бегать по рекрдсетам - но это так - оффтоп). Когда писал - не нашёл способа селекта из запроса в памяти.

Сейчас вообще так не работаю честно говоря - всё пишется на ХП, работаю с adp.
...
Рейтинг: 0 / 0
возможна ли такая конструкция?
    #32288413
Фотография Geo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SELECT * from (а здесь надо каким-то образом указать на qdf)
Ты ж дбф из строки создаешь? Тогда, м.б., проще так:

SELECT * from (SELECT * from ...) ... (А2000, А2002)

SELECT * from [SELECT * from ]. ... (A97)
...
Рейтинг: 0 / 0
возможна ли такая конструкция?
    #32288418
Hummer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 Geo
Один вопрос - сколько вложенных селектов поддерживает аксес? Уже подзабыл, но ограничения есть по-моему.
Поэтому может возникнуть необходимость создания отдельных подзапросов.
...
Рейтинг: 0 / 0
возможна ли такая конструкция?
    #32288424
Фотография SergeySV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
>>SELECT * from (а здесь надо каким-то образом указать на qdf)

Ну можно вывернуться так, обратись к его свойству: qdf.SQL (особенности вставки во FROM SELECT'а уже было на сайте ) - ну сам понимаешь, что вставляется по сути только строка, т.е. компиляция и запуск этого qdf никак не помогут в итоговом запросе, он вообще по сути начинает тогда выполнять только одну тупую роль - хранения SQL строки, а учитывая что qdf это временный запрос, то смысла особого в нем нет, проще в переменной держать SQL строку, только если ты не используешь этот запрос в коде несколько раз (например с параметром), тогда можно и сдуть у qdf последнею SQL строку...

Так что сам видишь, смысл в этом временном запросе в твоем случае весьма относителен, проще создать не временный запрос, а обычный, а потом его удалить - я так обычно делаю, и никаких проблем, а еще ....., тут уже обсуждали в одном топике стратегию хранения и использования запросов, подумай, можнт имеет большой смысл хранить этот запрос постоянно - для промежуточного использования в итогвом запросе - а в что в этом такого (сохр. запрос совершенно не обязательно должен быть итоговым, чтобы на него любоваться) преймуществ масса:
1. компилишь его и так хранишь - лучше по скорости
2. параметры - не дадаут ему засохнуть от старости и ненужности :-)
3. виден в окне базы, не надо лазить в код чтобы подправить, и никогда его не потеряешь
...
Рейтинг: 0 / 0
возможна ли такая конструкция?
    #32288427
IgorM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
97 имхо только один вложенный select и достаточно простой.
В A'XP проблем со вложенностью быть не должно.
...
Рейтинг: 0 / 0
возможна ли такая конструкция?
    #32288433
K_Николай
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
можно попробовать.
но тот select который в секции from - ретранслируемый, т.е. прямой запрос к серверу (dbo.таблица.поле), а первый select аксессовский, будет ли он работать?
у меня A97
Сейчас попробую. Спасибо за совет
...
Рейтинг: 0 / 0
возможна ли такая конструкция?
    #32288434
Фотография SergeySV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2Geo: А у меня в A2002 только так поддерживает - SELECT * from [SELECT * from ] почему-то (правда я это проверял до установки SP1,2)
...
Рейтинг: 0 / 0
возможна ли такая конструкция?
    #32288450
Фотография Geo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2Hummer
Не знаю, но лично мне твой вариант предпочтительнее кажется.

2SergeySV
А фик знает. У меня с круглыми работает. И с и без сервиспаков.

Надо бы как-нибудь разобраться с этими вложенностями. Как руки дойдут...
...
Рейтинг: 0 / 0
возможна ли такая конструкция?
    #32288460
Hummer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 Geo
Ну мне в общем-то тоже, потому его и использовал в своё время:)

2 K_Николай
Ещё такой момент, постарайтесь не вязать акссесовские таблицы, селекты с таблицами серверными (связанными через ODBC например) - получите тормоза. Либо создание временных таблиц на сервере с данными из аксеса - потом связь, либо формирование выборки на сервере с переменными параметрами, а потом передача в аксес - во временную таблицу, а потом связь. Предпочтительнее первый вариант.
...
Рейтинг: 0 / 0
возможна ли такая конструкция?
    #32288466
K_Николай
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
В общем-то я так и сделал создал запрос потом удалил, но всеравно такое чувство, что решение избыточное и немного надуманное. Поэтому и спросил, как сделать лучше.
...
Рейтинг: 0 / 0
13 сообщений из 13, страница 1 из 1
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / возможна ли такая конструкция?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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