Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > БД в Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 05.05.2014, 19:35   #1
Дюша
Пользователь
 
Регистрация: 26.04.2012
Сообщений: 14
Печаль 3 вопроса по бд(сумма по условию,диаграмма,замена записи)

Здравствуйте,хотелось бы попросить помочь Вас с 3 моими проблемами в программе,хотя бы помочь идеей,ну а если можете и кодом помочь,то буду благодарен

1.есть таблица данных с полями (id учителя,.....,количество часов на курсах) как можно просуммировать количество часов на курсах по id учителя? т.е у нас допустим 2 учителя (id=1,id=2),первый учитель был на 2 курсах(1 курсы=24ч,2 курсы=48ч),а второй учитель на одних(1курсы=36 часов)и нужно вывести ,что у первого 72,а у второго 36



2.есть таблица1 с полями(id учителя,фио,...,квалификация) можно как то сделать,что если он получил новую квалификацию,то она заменялась в этой таблице1 новым значением,т.е была у него сначала первая,он прошел курсы по повышению и получил высшую и после этого эта категория отправится таблицу1 в поле "квалификация"

3.нужно сделать диаграмму сколько учитель и какой категории,я так понял мне нужно создать счетчик и считывать сколько первых категорий и т.д)

если,что то плохо объяснил могу еще раз
все базы в sql,соединял через адо

Последний раз редактировалось Дюша; 06.05.2014 в 16:27.
Дюша вне форума Ответить с цитированием
Старый 06.05.2014, 16:27   #2
Дюша
Пользователь
 
Регистрация: 26.04.2012
Сообщений: 14
По умолчанию

вроде все работает
Код:
procedure TForm11.Button5Click(Sender: TObject);
var
begin
dm.ADOQuery1.Active:=false;
dm.ADOQuery1.SQL.Clear;
dm.ADOQuery1.sql.Add('SELECT sum(chasov) sumfield FROM kursi where id='+dbedit5.Text) ;
 dm.ADOQuery1.Active:=true;
 Edit1.Text := dm.ADOQuery1.FieldByName('sumfield').asstring;
end;

Последний раз редактировалось Дюша; 06.05.2014 в 16:54.
Дюша вне форума Ответить с цитированием
Старый 06.05.2014, 16:42   #3
eval
Подтвердите свой е-майл
 
Регистрация: 29.08.2012
Сообщений: 4,011
По умолчанию

1.
group by + sum

2.
update set ... where ...

3.
group by + count
eval вне форума Ответить с цитированием
Старый 06.05.2014, 16:54   #4
Дюша
Пользователь
 
Регистрация: 26.04.2012
Сообщений: 14
По умолчанию

спасибо,буду пробывать
Дюша вне форума Ответить с цитированием
Старый 06.05.2014, 16:54   #5
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
Сообщение от Дюша Посмотреть сообщение
вот что сделал по 1 вопросу,но не выводит результат,точнее 0 показывает
Код:
procedure TForm11.Button5Click(Sender: TObject);
var
sql:integer  ;
begin
dm.ADOQuery1.Active:=false;
dm.ADOQuery1.SQL.Clear;
sql:=dm.ADOQuery1.sql.Add('SELECT sum(chasov) FROM kursi WHERE id=1') ;
dm.ADOQuery1.Active:=true;
edit1.text:=IntToStr(sql);
end;
ой-ей!
Кто же Вас так учил запросы выполнять?!
Очень рекомендую какой-нибудь курс/книжку по работе с БД в Delphi почитать.

попробуйте такой код, вместо вашего:
Код:
procedure TForm11.Button5Click(Sender: TObject);
var
sql:integer  ;
begin
  dm.ADOQuery1.Close; (* можно оставить и dm.ADOQuery1.Active:=false;*)
  dm.ADOQuery1.SQL.Clear;
  dm.ADOQuery1.sql.Add('SELECT sum(chasov) as sumChasov FROM kursi WHERE id=1') ;
  dm.ADOQuery1.Open;         (* можно оставить и dm.ADOQuery1.Active:=true; );
  if dm.ADOQuery1.IsEmpty then edit1.text := 'Ничегошеньки не выбралось!'
  else
    edit1.text:= IntToStr( dm.ADOQuery1.FieldByName('sumChasov').AsInteger );
  dm.ADOQuery1.Close;
end;

Updates
всё. мой пост потерял актуальность, Вы в своём сообщении уже откорретировали свой код.
Serge_Bliznykov вне форума Ответить с цитированием
Старый 06.05.2014, 17:01   #6
Дюша
Пользователь
 
Регистрация: 26.04.2012
Сообщений: 14
По умолчанию

вот в sql пока запрос сделал для второго

Код:
update uchitelya 
set kot =(select  top 1 kotegor from attest where id=4 order by data desc)
where id=4

Последний раз редактировалось Дюша; 06.05.2014 в 17:44.
Дюша вне форума Ответить с цитированием
Старый 06.05.2014, 17:42   #7
eval
Подтвердите свой е-майл
 
Регистрация: 29.08.2012
Сообщений: 4,011
По умолчанию

Цитата:
заменяет все
быть такого не может
eval вне форума Ответить с цитированием
Старый 06.05.2014, 18:04   #8
Дюша
Пользователь
 
Регистрация: 26.04.2012
Сообщений: 14
По умолчанию

написал в делфи запрос
Код:
procedure TForm9.Button1Click(Sender: TObject);
begin
dm.ADOQuery1.Active:=false;
dm.ADOQuery1.SQL.Clear;
dm.ADOQuery1.sql.Add('update uchitelya');
dm.ADOQuery1.sql.Add(' set kot =(select  top 1 kotegor from attest where id='+dbedit1.Text+' order by data desc)') ;
dm.ADOQuery1.sql.Add('where id='+dbedit1.Text);
dm.ADOQuery1.Active:=true;
end;
но при исполнении пишет что командный текст не может вернуть результат
Дюша вне форума Ответить с цитированием
Старый 06.05.2014, 18:07   #9
eval
Подтвердите свой е-майл
 
Регистрация: 29.08.2012
Сообщений: 4,011
По умолчанию

а вы чего ждали?
eval вне форума Ответить с цитированием
Старый 06.05.2014, 18:12   #10
Дюша
Пользователь
 
Регистрация: 26.04.2012
Сообщений: 14
По умолчанию

чтоб он выполнил это и в таблицу мне вернул последнюю квалификацию
Дюша вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Сумма по условию bize Microsoft Office Excel 3 08.08.2012 22:34
замена текста по условию dzaymko Microsoft Office Excel 7 19.04.2012 10:24
Общая сумма по условию Tirendus Microsoft Office Excel 1 09.11.2011 01:49
2 конкретных вопроса по access (замена данных с сохранением)) Balexa Помощь студентам 0 21.12.2009 03:06
Сумма значений таблицы условию. Drummer_SV Microsoft Office Excel 4 13.05.2009 16:24