Форум программистов, компьютерный форум, киберфорум
Delphi: Базы данных
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.84/19: Рейтинг темы: голосов - 19, средняя оценка - 4.84
0 / 0 / 0
Регистрация: 16.09.2012
Сообщений: 16

ADOQuery и SQL

21.10.2012, 16:07. Показов 3932. Ответов 6
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте помогите разобраться ?
есть Adoconnection, ADOQuery1, DataSource1- все связанно и призанно к сетке DBGrid.
есть 2 таблицы в ACCESS :

1) - tab1
структура:

---------------------------
id | name_c | count_t |
---------------------------
1 | ручки | |
---------------------------
2 | карандаши | |
---------------------------
3 | мячи | |
---------------------------

2) - tab2
структура:

----------------------------
id | name_t | count_t |
--------------------------------
1 | мыч синий | 1 |
--------------------------------
1 | мяч красный | 15 |
--------------------------------
2 | ручка зеленая | 40 |
--------------------------------
2 | ручка красная | 12 |
--------------------------------

У меня Вопрос в следующем : Необходимо составить SQL запрос так что бы товар из 2 таблицы суммировался ( соответственно для каждой группы товара) и подставлялся в DBGrid к Первой таблице.

Пробовал для вывода второй таблицы так:

Delphi
1
2
3
ADOQuery.SQL.Clear;
ADOQuery.SQL.Add('SELECT SUM(name_t) As name_t FROM tab1 GROUP BY id ');
ADOQuery.Active:=True;
Все работает, НО МНЕ НУЖНО ЧТОБЫ РЕЗУЛЬТАТ СУММИРОВАНИЯ ДЛЯ КАЖДОЙ ГРУППЫ ПОДСТАВЛЯЛСЯ К ПЕРВОЙ ТАБЛИЦЕ.

Делал так :

Delphi
1
2
3
4
5
k:=DBGrid1.DataSource.DataSet.fieldbyname('ID');
 
ADOQuery.SQL.Clear;
ADOQuery.SQL.Add('SELECT name_c, (SUM(count_t) FROM tab2 WHERE id='+inttostr(k)+' ) AS count_t FROM tab1 ');
ADOQuery.Active:=True;
пишет: ошибка синтаксиса (пропушен оператор) в выражении запроса

ПОМОГИТЕ ПОЖАЛУЙСТА
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
21.10.2012, 16:07
Ответы с готовыми решениями:

Чем метод adoquery sql.add отличается от метода sql.append этого компонента?
Чем метод adoquery sql.add отличается от метода sql.append этого компонента?

AdoQuery и SQL
Нужна помощь, ломаю голову не могу понять почему не работает. Есть код, который (еще не дописан) берет данные из полей (combo и picker) и...

ADOQuery.SQL
Доброго времени суток. Узнать бы хотел - есть запрос, к нему нужно приписать строчки условия вывода 9только определенного значения и по...

6
3530 / 2270 / 279
Регистрация: 24.12.2010
Сообщений: 13,723
21.10.2012, 22:25
Цитата Сообщение от Samuilius Посмотреть сообщение
SELECT SUM(name_t)
Цитата Сообщение от Samuilius Посмотреть сообщение
Все работает
Не может это работать.
0
0 / 0 / 0
Регистрация: 16.09.2012
Сообщений: 16
22.10.2012, 01:06  [ТС]
Все разобрался, все работает тема закрыта.
0
Эксперт Pascal/Delphi
 Аватар для xxbesoxx
1135 / 616 / 129
Регистрация: 13.02.2009
Сообщений: 3,600
22.10.2012, 12:03
Цитата Сообщение от Samuilius Посмотреть сообщение
Здравствуйте помогите разобраться ?
есть Adoconnection, ADOQuery1, DataSource1- все связанно и призанно к сетке DBGrid.
есть 2 таблицы в ACCESS :

1) - tab1
структура:

---------------------------
id | name_c | count_t |
---------------------------
1 | ручки | |
---------------------------
2 | карандаши | |
---------------------------
3 | мячи | |
---------------------------

2) - tab2
структура:

----------------------------
id | name_t | count_t |
--------------------------------
1 | мыч синий | 1 |
--------------------------------
1 | мяч красный | 15 |
--------------------------------
2 | ручка зеленая | 40 |
--------------------------------
2 | ручка красная | 12 |
--------------------------------

У меня Вопрос в следующем : Необходимо составить SQL запрос так что бы товар из 2 таблицы суммировался ( соответственно для каждой группы товара) и подставлялся в DBGrid к Первой таблице.

Пробовал для вывода второй таблицы так:

Delphi
1
2
3
ADOQuery.SQL.Clear;
ADOQuery.SQL.Add('SELECT SUM(name_t) As name_t FROM tab1 GROUP BY id ');
ADOQuery.Active:=True;
Все работает, НО МНЕ НУЖНО ЧТОБЫ РЕЗУЛЬТАТ СУММИРОВАНИЯ ДЛЯ КАЖДОЙ ГРУППЫ ПОДСТАВЛЯЛСЯ К ПЕРВОЙ ТАБЛИЦЕ.

Делал так :

Delphi
1
2
3
4
5
k:=DBGrid1.DataSource.DataSet.fieldbyname('ID');
 
ADOQuery.SQL.Clear;
ADOQuery.SQL.Add('SELECT name_c, (SUM(count_t) FROM tab2 WHERE id='+inttostr(k)+' ) AS count_t FROM tab1 ');
ADOQuery.Active:=True;
пишет: ошибка синтаксиса (пропушен оператор) в выражении запроса

ПОМОГИТЕ ПОЖАЛУЙСТА
Пожалуйста помогу....

Delphi
1
2
3
4
5
6
7
8
9
10
11
procedure TForm1.BitBtn2Click(Sender: TObject);
begin
 ADOQuery1.Active := false;
  ADOQuery1.SQL.Clear;
  ADOQuery1.SQL.Add('SELECT SUM([Чистая прибыль]) FROM Remont ');
  ADOQuery1.Active := True;
  Label2.Caption := ADOQuery1.Fields.[0].AsString; //- результат   
//---------------------------------------------------------
  ADOQuery1.SQL.Clear;
  ADOQuery1.SQL.Add('SELECT* FROM Remont ');
  ADOQuery1.Active := True;
Добавлено через 5 минут
Цитата Сообщение от mss Посмотреть сообщение
Не может это работать.
mss А почему нет ? все работает нормально, Он правильно начинал писать, потом на группировку делает зря.... И почему вы говорите что не будет работать я не понял ?
0
3530 / 2270 / 279
Регистрация: 24.12.2010
Сообщений: 13,723
22.10.2012, 12:15
Цитата Сообщение от xxbesoxx Посмотреть сообщение
почему .. не будет работать .. ?
Потому что:

1. В таблице tab1 нет поля name_t
2. Даже если бы оно там было суммировать текстовое поле, хранящее атрибут "Наименование чего-то там" попросту бессмысленно.
0
Эксперт Pascal/Delphi
 Аватар для xxbesoxx
1135 / 616 / 129
Регистрация: 13.02.2009
Сообщений: 3,600
22.10.2012, 12:52
Цитата Сообщение от mss Посмотреть сообщение
Потому что:

1. В таблице tab1 нет поля name_t
2. Даже если бы оно там было суммировать текстовое поле, хранящее атрибут "Наименование чего-то там" попросту бессмысленно.
Но если ноля нету то да..... но у думаю что после это разговоре он поймет свои ошибку и исправит
0
3530 / 2270 / 279
Регистрация: 24.12.2010
Сообщений: 13,723
22.10.2012, 12:55
Цитата Сообщение от xxbesoxx Посмотреть сообщение
он поймет свои ошибку
Какую ошибку-то ?)
ТС без тени сомнения заявляет что "все работает", хотя работать это не может в принципе.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
22.10.2012, 12:55
Помогаю со студенческими работами здесь

ADOQuery и Sql Server2005
как из edit или combobox сохранить введенный текст в таблице sql server через adoQuery ну или ADOTable. связь с базой на SQL server...

SQL запрос в ADOQuery
Извиняюсь, если пишу не в ту тему, так как по сути мне нужна помощь по SQL, просто используется он в ADOQuery. Вообщем есть код (фрагмент...

ADOQuery.SQL. Access
ADOQuery1.SQL.Add('SELECT FAM, COUNT(FAM) FROM Klient GROUP BY FAM HAVING COUNT(FAM)>3'); как сделать чтобы он изменял значение поля...

SQL Запрос в ADOQuery
Проблема заключается в том что простой запрос типа Select * from SKLAD работает. А запрос чуть по крупнее который рабочий...

Запросы на SQL в ADOQuery
Здравствуйте, в очередной раз прошу Вашей мудрой помощи. Пытаюсь написать запрос на Sql для компонента ADOQuery. Смысл такой,...


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

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Новые блоги и статьи
Первый деплой
lagorue 16.01.2026
Не спеша развернул своё 1ое приложение в kubernetes. А дальше мне интересно создать 1фронтэнд приложения и 2 бэкэнд приложения развернуть 2 деплоя в кубере получится 2 сервиса и что-бы они. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь постоянного тока с R, L, C, k(ключ), U, E, J. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа, решает её и находит токи на L и напряжения на C в установ. режимах до и. . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Изучаю kubernetes
lagorue 13.01.2026
А пригодятся-ли мне знания kubernetes в России?
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru