![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Поиск в найденном [D7, MS Access]
databaser © (2007-03-09 21:26:00)Для решения задачи использовал сохранение последнего запроса и вставку его в рекурсивную генерацию многокритериального запроса в "хвост".
Теперь же запросы не генерируются, а жестко забиты в БД. Как быть?
Вариант с сохранением последнего запроса использовал потому что БД read-only и не хотелось бы создавать отдельной таблицы для записи. Насколько я понял применить толком запрос к данным в датасете нереально, разве что Filter, но я так понял он не поможет в моих условиях.
MsGuns (2007-03-14 22:16:00) [1]>Johnmen © (13.03.07 22:31) [20]
Спасибо, приму к сведению
Johnmen (2007-03-13 22:31:00) [2]
> MsGuns © (13.03.07 21:11) [19]
> 1. КЕМ воспринимаются ?
> 2. Что понимается под глаголом "ВОСПРИНИМАЮТСЯ" ?
1. АДО.
2. Выглядят так (с т.з. АДО), будто бы это настоящие ХП.
MsGuns (2007-03-13 21:11:00) [3]>databaser (13.03.07 05:49) [18]
>Ссылки нету под рукой, но Mike Kouzmine верно утверждает. Запросы из mdb воспринимаются как SP, проверить можно используя TADODataSet (cmStoredProc) -> CommandText.
Осталось выяснить только две вещи:
1. КЕМ воспринимаются ?
2. Что понимается под глаголом "ВОСПРИНИМАЮТСЯ" ?
databaser (2007-03-13 05:49:00) [4]MsGuns © (12.03.07 22:54) [15]
MsGuns © (13.03.07 01:29) [17]
Ссылки нету под рукой, но Mike Kouzmine верно утверждает. Запросы из mdb воспринимаются как SP, проверить можно используя TADODataSet (cmStoredProc) -> CommandText.
MsGuns (2007-03-13 01:29:00) [5]>Mike Kouzmine © (12.03.07 23:27) [16]
>Вообще-то встроенные запросы трактуются как хп.
Поясни, будь так добр, можно со ссылкой
Mike Kouzmine (2007-03-12 23:27:00) [6]MsGuns © (12.03.07 22:54) [15] Вообще-то встроенные запросы трактуются как хп.
MsGuns (2007-03-12 22:54:00) [7]>databaser (12.03.07 10:01) [14]
>Спасибо, в принципе так и делал (сохранял последний запрос потом искал в нем, правда запрос делал через зад). В качестве CommandText'a может быть использована хранимая процедура (ее имя) в данном случае?
В акцесе нет ХП.
А если вместо акцеса MSSQL, то тоже нельзя, ибо Select from SP мелкомягкие не поддерживают. В этих случаях надо либо писать на сервере функцию и запускать ее, либо делать "через зад", используя рекордсет AdoCommand
databaser (2007-03-12 10:01:00) [8]MsGuns © (11.03.07 23:46) [12]
Спасибо, в принципе так и делал (сохранял последний запрос потом искал в нем, правда запрос делал через зад). В качестве CommandText'a может быть использована хранимая процедура (ее имя) в данном случае?
MsGuns © (11.03.07 23:48) [13]
Сканирование отпадает. НД не мал.
MsGuns (2007-03-11 23:48:00) [9]Если НД, где надо искать, не слишком большой, можно организовать сканирование и найденные записи показывать в стрингриде или TClientDataSet.
MsGuns (2007-03-11 23:46:00) [10]>databaser (11.03.07 22:41) [10]
>Как организовать поиск в найденном? Можно ли это сделать не создавая отдельной таблицы с записью туда последней выборки?
with TADODataSet.Create(nil) do
try
Connection := SourceDataSet.Connection;
CommandText := 'Select S.* from ('+SourceDataSet.CommandText+') S '+
<Строка с доп.условиями>
Open;
<Дела с возвращенным рекордсетом>
Close;
finally
Free;
end;
Johnmen (2007-03-11 23:10:00) [11]
> databaser (11.03.07 22:41) [10]
> Как организовать поиск в найденном? Можно ли это сделать
> не создавая отдельной таблицы с записью туда последней выборки?
[9]
> Насколько оптимален вариант с запоминанием текста последнего
> запроса и использования вложенности?
Ни насколько. Он вообще крайне неэффективен.
> Возможно ли это организовать в рамках параметризированных
> запросов?
Конечно.
databaser (2007-03-11 22:41:00) [12]Johnmen © (11.03.07 01:26) [9]
С этим понял.
Давайте вернемся все-таки к subj. С ним пока темный лес. Как организовать поиск в найденном? Можно ли это сделать не создавая отдельной таблицы с записью туда последней выборки?
Насколько оптимален вариант с запоминанием текста последнего запроса и использования вложенности?
Возможно ли это организовать в рамках параметризированных запросов?
Johnmen (2007-03-11 01:26:00) [13]
> SELECT ...WHERE [A]... IN (SELECT ...WHERE [B]...)
заменяется на SELECT ...WHERE [A] and [B]..., что очевидно.
Если из нескольких таблиц, то, соответственно, используем соединение.
databaser (2007-03-10 23:38:00) [14]
> Johnmen © (10.03.07 23:22) [7]
> К решению чего? Я не понял...
Как можно оформить запрос на выборку по нескольким критериям без SELECT ... IN (SELECT ...)? То что запросы переехали в БД не изменило их вида практически ) Просто теперь они жестко забиты в нужном виде.
К тому же я сам увел вас от subj'a. Как можно организовать поиск в найденном при сложившихся условиях?
Ужасно вышло что тема оказалась разбита на два топика =( Надо было вместе пытаться. http://www.delphimaster.ru/cgi-bin/forum.pl?id=1173464588&n=1
Johnmen (2007-03-10 23:22:00) [15]
> databaser (10.03.07 22:16) [6]
> а как можно иначе подойти к решению?
К решению чего? Я не понял...
А задница - это динамически генерируемых вложенныхзапросов.
Вариант с кучей запросов встроенных в mdb непосредственнотоже задница... Если, конечно, они не описывают в необходимой и достаточной мере все потребности, используя параметрическое задание необходимых параметров.
databaser (2007-03-10 22:16:00) [16]MsGuns © (10.03.07 14:08) [3]
Desdechado © (10.03.07 18:30) [5]
Пасибо, мужыки. Стало легче. Я так понял вариант с задницей - это вариант использования динамически генерируемых вложенных запросов? Вариант с кучей запросов встроенных в mdb непосредственно - нормуль?
Johnmen © (10.03.07 14:46) [4]
а как можно иначе подойти к решению?
Desdechado (2007-03-10 18:30:00) [17]причем задницу с хроническим геморроем
Johnmen (2007-03-10 14:46:00) [18]
> (вложенности запросов с использованием IN)
"эй, парень, ты все делаешь через задн*цу" !!!
MsGuns (2007-03-10 14:08:00) [19]>databaser (10.03.07 06:55) [2]
>Ведь "степень" рекурсии зависит от количества критериев (вложенности запросов с использованием IN). К тому же количество критериев может измениться в ближайшее время в большую сторону. Поэтому подобная генерация была более чем удобна (правда, исключительно, для меня).
п-п-п-ереведи
>Хотелось бы услышать крик "эй, парень, ты все делаешь через задн*цу", мне бы уже стало легче +)
"эй, парень, ты все делаешь через задн*цу" !!!
databaser (2007-03-10 06:55:00) [20]MsGuns © (10.03.07 00:05) [1]
В смысле? ) Ведь "степень" рекурсии зависит от количества критериев (вложенности запросов с использованием IN). К тому же количество критериев может измениться в ближайшее время в большую сторону. Поэтому подобная генерация была более чем удобна (правда, исключительно, для меня).
Хотелось бы услышать крик "эй, парень, ты все делаешь через задн*цу", мне бы уже стало легче +)
Что по поводу Subj'a?