1 / 1 / 0
Регистрация: 11.06.2012
Сообщений: 14
1

Обращение в ADOquery к ADOquery

18.01.2014, 18:27. Показов 2809. Ответов 8
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Доброго времени суток.
Вопрос заключается в следующем:
Имеется подключенная бд *.mdb к delphi
В delphi есть запрос на основе одной из таблиц *.mdb сделанный по средствам компонента ADOQuery.
Необходимо сделать новый запрос на основе уже выполненного запроса (см. предыдущий пункт).
По средствам каких компонентов я могу это сделать?
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
18.01.2014, 18:27
Ответы с готовыми решениями:

Adoquery
Ребята подскажите пожалуйста! procedure TForm5.FormCreate(Sender: TObject); var s,s2:string;...

ADOQuery
Скажите есть такой метод у ADOQuery который бы возвращал индекс активной записи?

ADOQuery
Делаю запрос на добавление данных в таблицу вот код:begin DataModule1.ADOQuery1.SQL.Clear;...

БД + ADOQuery
Ребят подскажите как реализовать: Есть таблица "Зарплатные ведомости" и "Отдел продаж". В этих...

8
498 / 251 / 56
Регистрация: 16.06.2011
Сообщений: 904
18.01.2014, 19:24 2
Вы имеете ввиду осуществить выборку из полученных данных от первого запроса?
0
1 / 1 / 0
Регистрация: 11.06.2012
Сообщений: 14
18.01.2014, 19:30  [ТС] 3
Да)
0
498 / 251 / 56
Регистрация: 16.06.2011
Сообщений: 904
18.01.2014, 19:34 4
Сделайте запрос в запросе.
0
1 / 1 / 0
Регистрация: 11.06.2012
Сообщений: 14
18.01.2014, 19:36  [ТС] 5
т.е?
0
498 / 251 / 56
Регистрация: 16.06.2011
Сообщений: 904
18.01.2014, 19:36 6
Пример:
SQL
1
SELECT * FROM (SELECT * FROM table1)
0
1 / 1 / 0
Регистрация: 11.06.2012
Сообщений: 14
18.01.2014, 20:42  [ТС] 7
В общем у меня есть таблица расходы (фио\категория расхода\наименование\дата\сумма)
Я делаю запрос на выборку по параметрам выбираемым в комбобоксах и отображаю его в дбгриде.
Далее мне необходимо построить график на основе нового запроса с группировкой записей по дате и суммированием сумм предыдущего запроса.

Добавлено через 33 минуты
Предложенный способ с запросом в запросе не выходит, т.к. сильно много символов и delphi переводит их на другую строку.
Проба запроса типа с указанием ссылки на предыдущий запрос не увенчалась успехом (ошибка синтаксиса)
Delphi
1
2
3
  Form1.qry12.SQL.Text := 'SELECT (' + qry11.SQL.Text + ').Дата, Sum((' +
    qry11.SQL.Text + ').Сумма) AS [Sum-Сумма] FROM ((' + qry11.SQL.Text +
    ')) GROUP BY (' + qry11.SQL.Text + ').Дата;';
Добавлено через 7 минут
Вот код рабочего запроса qry11:
Delphi
1
2
3
4
5
6
  'SELECT ' + edt8.Text + '.Ôèî, ' + edt8.Text + '.[' + lbl6.caption + '], ' +
    edt19.Text + ' ' + edt8.Text + '.Äàòà, ' + edt8.Text + '.Ñóììà FROM ' +
    edt8.Text + ' WHERE (((' + edt8.Text + '.Ôèî) like "' + edt4.Text +
    '") AND ((' + edt8.Text + '.[' + lbl6.caption + ']) like "' + edt18.Text +
    '") ' + edt17.Text + ' AND ((' + edt8.Text + '.Äàòà) Between #' + edt10.Text
    + '# And #' + edt12.Text + '#));
Т.е. длинна требуемого мне запроса просто запредельна получается, если 4 раза вставить текст qry11

Добавлено через 21 минуту
Как мне сохранить мой запрос на выборку, что бы потом можно было к нему обратиться для группировки?
0
498 / 251 / 56
Регистрация: 16.06.2011
Сообщений: 904
18.01.2014, 22:11 8
Тогда читайте мануал про TStoredProc

Добавлено через 6 минут
Вот цитата с другого форума:
к огромному сожалению, в Delphi не реализован механизм, когда можно в качестве источника данных для запроса указывать набор, полученный ранее (в результате предыдущего запроса)

в отличие от того же .NET - там это просто сказка! (я уже молчу про LINQ)

поэтому, Вам нужно:
или объединять Ваши последовательные запросы так, чтобы это был ОДИН запрос к БД
(например: SELECT * FROM (SELECT * from from export where [Number application]= .... ) Z1 where Z1.ScanDate= .... )
или писать ХП на сервере, где в MS SQL можно делать выборки в табличные переменные (ну или временные таблицы, как кому больше нравится), потом эти выборки использовать в качестве источников данных для других выборок и т.д. и т.п...
Добавлено через 3 минуты
Можно создать в БД временную таблицу, например, назовем ее Temp_Table. Туда скидывать данные после первого запроса, затем, если необходимо, выполнять второй запрос из нашей временной таблицы.
1
1 / 1 / 0
Регистрация: 11.06.2012
Сообщений: 14
18.01.2014, 22:24  [ТС] 9
Все оказалось проще.
Delphi
1
Form1.qry12.SQL.Text:='SELECT  '+edt8.text+'.Äàòà, sum('+edt8.text+'.Ñóììà) AS [Ñóììà] FROM '+edt8.text+' WHERE ((('+edt8.text+'.Ôèî) like "'+edt4.Text+'") AND (('+edt8.text+'.['+lbl6.Caption+']) like "'+edt18.text+'") '+edt17.Text+' AND (('+edt8.text+'.Äàòà) Between #'+edt10.text+'# And #'+edt12.text+'#)) GROUP BY '+edt8.text+'.Äàòà;';
Спасибо за внимание.
1
18.01.2014, 22:24
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
18.01.2014, 22:24
Помогаю со студенческими работами здесь

ADOQuery
Добрый вечер. Подскажите пожалуйста, как из значений obp которые я получил в adoquery2 отнять...

ADOQuery
Добрый день! Интересует вопрос. Делаю программно из Delphi (моей программы) экспорт в базу...

ADOQuery
Имеется таблица в аксесе в ней три колонки при совпадении первых двух колонок таблицы с введенными...

ADOQuery
Доброго времени суток! Делаю небольшой запрос к БД с помощью ADOQuery (БД Access). Запрос...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru