Консультация № 148127
22.10.2008, 15:06
0.00 руб.
0 7 0
Здравствуйте ув. Эксперты. Помогите кто чемможет )). Из Делфи подключаюсь к базе Аццес, где имеется запрос, который использует отдельный запрос, который вызывает тоже запрос (типа тройная вложеность). И в каждом этом запрос есть дата, которую нужно менять на текущую. Но так как запрос очень длинный, не хотелось бы составлять эту строчку вручную. Говорят для этого имеються запросы с параметрами. Как ими пользоваться? И как можно получить доступ и з Делфи не к таблице, а к запросу? Заранее спасибо.

Обсуждение

давно
Мастер-Эксперт
425
4118
22.10.2008, 16:03
общий
В БД Access доступ из Дельфи можно получить только к данным. А запрос данными не является. Просто перекопируйте этот "тройной одеколон" к себе в программу.
Об авторе:
Я только в одном глубоко убеждён - не надо иметь убеждений! :)
Неизвестный
22.10.2008, 16:33
общий
Это как? Забить каждый запрос в свое Query. И обращатся к подзапросу по имени Query? А что насчет параметров?
давно
Мастер-Эксперт
425
4118
22.10.2008, 17:53
общий
Забить каждый запрос в свое Query

Правильно.
А что насчет параметров?

Примерно так:
ADOQuery.SQL.Add('SELECT field1, field2 FROM tablica WHERE field3=:parametr');
где parametr - это название параметра. В компоненте ADOQuery есть свойство params. В нём создаёте нужные Вам параметры. Использование:
ADOQuery.ParamByName('parametr').AsТип:=Значение_параметра;
ADOQuery.Open;
Об авторе:
Я только в одном глубоко убеждён - не надо иметь убеждений! :)
Неизвестный
27.10.2008, 12:35
общий
А как можна теперь вызывать подзапросы, если они сидят в Query? Если мне надо написать AdoQuery1.SQL:='SELECT * FROM '+ADOQuery2, AdoQuery3, ADOQUERY4?
давно
Мастер-Эксперт
425
4118
27.10.2008, 17:07
общий
Надо все запросы в один свести. Акцесс - БД не всамоделешняя, поэтому то что позволяют делать нормальные сервера БД, т.е. обратится с запросом к другому запрсу, здесь сделать нельзя.
Об авторе:
Я только в одном глубоко убеждён - не надо иметь убеждений! :)
Неизвестный
28.10.2008, 13:37
общий
Спасибо, sir Henry, за помошь. Я понял, что Access практически ничего не может, по сравнению с Oracle, но пришлось работать именно с Access. Но выход я все таки нашел, может и не очень правильный. Мне нужно было менять дату в трижды вложеном запросе, через параметры. Но я сделал отдельную таблицу, в которую и помещал нужную дату, а в запросе выбирал дату с этой таблицы. . Одним словом - главное что-бы работало.
давно
Мастер-Эксперт
425
4118
28.10.2008, 19:05
общий
Пустовойтенко Виктор Григорьев
Акцесс не то чтобы ничего не может, просто при доступе к базе извне, а не из самой программы Акцесс, все его преимущества перед аналогичными (например DBF или DB) форматами полностью теряются, т.к. доступ извне возможен только к данным таблиц и нельзя, к примеру, использовать запрос как виртуальную таблицу. С БД Акцесс лучше всего работать внутри самого Акцесса.
С моей точки зрения, если нужна персональная БД с полнофункциональным SQL доступом, то лучше взять какую-нибудь Embeded версию SQL сервера. Такие верси есть для FireBird, MySQL, у которых наряду с полнофункциональным SQL есть ещё и громадный набор встроенных функций, которые позволяют получать из множества связанных таблиц готовый набор данных, например для отчёта, без необходимости обработки полученного набора в самой программе. Если покопаться в Интернете, то можно найти кучу подобных персональных SQL серверов, которые не требуют установки, но обеспечивают полноценную работу через SQL, т. к. SQL это самый удобный способ получения данных.
Об авторе:
Я только в одном глубоко убеждён - не надо иметь убеждений! :)
Форма ответа