Форум: "Базы";
Текущий архив: 2003.05.19;
Скачать: [xml.tar.bz2];
ВнизСложные запросы (Delphi+Access) Найти похожие ветки
← →
AlexBut (2003-04-28 09:43) [0]Delphi я начал ковырять недавно, так что извините если вопрос будет глупый. Я работаю в области автоматизации бухучета и мне часто приходится иметь дело со "сложными запросами". Под ними я понимаю запросы, которые основаны на куче других запросов, которые в свою очередь основаны на куче других запросов и т.д. Т.е. получается что-то наподобие "снежного кома". Если использовать ACCESS, то эти запросы строятся очень легко. Опять же если использовать ACCESS-скую базу в которой эти запросы реализованы (без параметров), то тоже сложностей не возникает, НО как мне передать параметры для формирования запроса из формы-DELPHI в ACCESS(Параметры требуются не для конечного запроса, а допустим для начального или промежуточного)? Или есть другой способ создания таких запросов? Через создание промежуточных таблиц это довольно трудоемко.
← →
Sergey13 (2003-04-28 09:51) [1]2AlexBut (28.04.03 09:43)
>часто приходится иметь дело со "сложными запросами". Под ними я понимаю запросы, которые основаны на куче других запросов, которые в свою очередь основаны на куче других запросов и т.д. Т.е. получается что-то наподобие "снежного кома".
Что то очень уж страшно становится. Хоть бы примерчик для начала, а то и вообразить такое не под силу. 8-)
← →
Dona (2003-04-28 10:00) [2]> НО как мне передать параметры для формирования запроса из формы-DELPHI в ACCESS
Посмотрите запросы с параметрами - компонент TQuery, например.
← →
Digitman (2003-04-28 10:42) [3]Если перед запуском запрос строится динамически, то используй TQuery
Если используется ранее построенный и сохраненный (средствами Access) объект-запрос, то для запуска его нужен TStoredProc
Оба класса имеют списочное св-во Params, установив которое должным образом (переж запуском запроса) можно выполнить запрос с параметрами
← →
KoluChi (2003-04-28 11:18) [4]with Query do
begin
Close();
Parameters.ParamByName("PARAM1").Value := Value1;
Parameters.ParamByName("PARAM2").Value := Value2;
Open();
end;
with StoredProc do
begin
Close();
Parameters.ParamByName("PARAM1").Value := Value1;
Parameters.ParamByName("PARAM2").Value := Value2;
ExecSQL();
end;
← →
AlexBut (2003-04-28 11:21) [5]По поводу примера (Привожу самый элементарный для понимания сути):
Начальные остатки по складу хранятся в одной таблице(Код склада,Группа,Ном.номер,Колво,Цена и т.д.)
Шапки документов в другой (Номер документа, Дата, Контрагент,Склад и т.д.)
Строки документов в третьей (Номер документа, Группа, Ном.номер, Цена,Колво и т.д.)
Необходимо построить элементарную оборотку:(Остаток на начало, Приход, Расход, Остаток на конец) в суммовом и количественном измерении, сгруппированную по складам,группам,ном.номерам.
Причем отчет должен формироваться за различные интервалы времени. Т.е. в качестве параметров:(ДатаНачала, ДатаОкончания,Склад,Группа-если не указаны, то по всем)
Насчет TQuery: Его результаты можно использовать для другого TQuery?(Это вопрос, а не удивление т.к. может я просто этого не нашел). Если нет, то это мне не подходит в силу описанных выше причин.
Можно поподробнее немного узнать о том, что такое TStoredProc?
(Имеется ввиду возможности).
Потому что для получения информации из ACCESS-ского запроса (без параметров) достаточно использовать TTable или TQuery.
← →
KoluChi (2003-04-28 13:01) [6]TStoredProc - это компонент для вызова хранимой процедуры в базе данных. Для Access - это просто запрос, описанный в базе. Т.е. в базе создаем запрос с параметрами на выборку нужных нам данных. А в программе используем TStoredProc или TQuery для вызова запроса. Как присваивать параметры - я указал.
> Насчет TQuery: Его результаты можно использовать для другого
> TQuery?(Это вопрос, а не удивление т.к. может я просто этого
> не нашел). Если нет, то это мне не подходит в силу описанных
> выше причин.
Есть такие компоненты, но это совсем не нужно. Делаем в базе запрос/процедуру и можем вызывать ее из другого запроса - и всЁ.
Страницы: 1 вся ветка
Форум: "Базы";
Текущий архив: 2003.05.19;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.007 c