Форум по Delphi программированию



Вернуться   Форум по Delphi программированию > Все о Delphi > Базы данных
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Закрытая тема
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 28.06.2015, 01:14
nikotan nikotan вне форума
Новичок
 
Регистрация: 21.06.2015
Сообщения: 58
Версия Delphi: Delphi 7
Репутация: 10
По умолчанию сложение строк

Здравствуйте!
хочу сложить 4 столбца и в пятом вывести сумму
т.е. в строчках данные складывать
в formcreate запихнул
Код:
procedure TForm1.FormCreate(Sender: TObject);
begin
 PageControl1.Brush.Color := clGradientInactiveCaption;
TabSheet1.Brush.Color := clGradientInactiveCaption;
TabSheet2.Brush.Color := clGradientInactiveCaption;
TabSheet3.Brush.Color := clGradientInactiveCaption;
TabSheet4.Brush.Color := clGradientInactiveCaption;
TabSheet5.Brush.Color := clGradientInactiveCaption;
//подсчёт ставок
 ADOQuery2.Close;
ADOQuery2.SQL.Clear;
AdoQuery2.Sql.Text :='select Glav+SM+SSH+RZO as ObH from Clear';
    AdoQuery2.Open;
end;
не работает.
в adoquery - sql - string "select * from clear" прописал
и табличку выдаёт.
вот что хочу сделать, сложить строчки, в последней сумма, потом надо сложить весь столбец , получится "всего", из edit (там будет цифра) вычесть "всего" и получим "остаток" запихнуть "остаток" в label.caption.
интернет не помог. 2 дня, даже на интуите искал, в SQL-EX.ru решения ну нет ни одного примера. есть с переборками ,но уж начал с sql запросами, то надо весь проект так сделать, спасибо за понимание!
  #2  
Старый 28.06.2015, 09:00
Аватар для Alegun
Alegun Alegun вне форума
LMD-DML
 
Регистрация: 12.07.2009
Адрес: Богородское
Сообщения: 3,025
Версия Delphi: D7E
Репутация: 1834
По умолчанию

Вроде можно и сложением, но только не поперек, а вдоль
Код:
with ADOQuery2 do
  begin
   Close;
   SQL.Clear;
   SQL.Text:='SELECT SUM(Glav) + SUM(SM) + SUM(SSH) + SUM(RZO) FROM Clear';
   Open;
   Label1.Caption:= IntToStr(StrToInt(Edit1.Text) - Fields[0].AsInteger);
  end;
Этот пользователь сказал Спасибо Alegun за это полезное сообщение:
nikotan (28.06.2015)
  #3  
Старый 28.06.2015, 09:39
nikotan nikotan вне форума
Новичок
 
Регистрация: 21.06.2015
Сообщения: 58
Версия Delphi: Delphi 7
Репутация: 10
По умолчанию

всё отлично работает, откуда Вы вот берёте эти коды? если есть книжка дайте пожалуйста, спасибо!
вот две проблемки, теперь нет таблицы со ставками, а только одна колонка "EXPR1000" к которой сумма всех использованных ставок(может её в LAbel2.caption вынести?) я же их должен видеть, у кого сколько и к чему относятся, например Петров 1 основная + 0,5 совмещение. и в последней колонке "ObH" общее должно быть, чтоб я видел сколько у кого("ObH" колонка есть, самая последняя). А вторая если изменить Edit1 (общее кол-во ставок) , то остаток почему-то не меняется, блин пока писал сам догадался, повторить код в событии Edit1Change, работает. Ну блин начинается что-то получатся! СПАСИБО!
  #4  
Старый 28.06.2015, 09:42
Аватар для M.A.D.M.A.N.
M.A.D.M.A.N. M.A.D.M.A.N. вне форума
Sir Richard Abramson
 
Регистрация: 05.04.2008
Сообщения: 5,503
Версия Delphi: XE10
Репутация: выкл
По умолчанию

Цитата:
Сообщение от nikotan
всё отлично работает, откуда Вы вот берёте эти коды? если есть книжка дайте пожалуйста, спасибо!
Дак это основы SQL. Обычная ф-я редуцирования.
__________________
— Как тебя понимать?
— Понимать меня не обязательно. Обязательно меня любить и кормить вовремя.


На Delphi, увы, больше не программирую.
Рекомендуемая литература по программированию
  #5  
Старый 28.06.2015, 10:05
nikotan nikotan вне форума
Новичок
 
Регистрация: 21.06.2015
Сообщения: 58
Версия Delphi: Delphi 7
Репутация: 10
По умолчанию

может и обычная, но вот правила писанины(синтаксис) не понятны
'SELECT SUM(Glav) + SUM(SM) + SUM(SSH) + SUM(RZO) FROM Clear'
в интернете другие способы, но не работают.
как появилась новая колонка колонка "EXPR1000", не понимаю

IntToStr(StrToInt(Edit1.Text) - Fields[0].AsInteger)
о таком я вообще не знал,

а Вы говорите обычная, я сначала на одном компе Ваши код пробую как заработает, потом иду по памяти на другом делаю, чтоб понять и выучить! ну типа стараюсь что ли.
  #6  
Старый 28.06.2015, 10:07
nikotan nikotan вне форума
Новичок
 
Регистрация: 21.06.2015
Сообщения: 58
Версия Delphi: Delphi 7
Репутация: 10
По умолчанию

короче с синтаксисом у меня проблемы, и не всегда понимаю как работает код delphi.
  #7  
Старый 28.06.2015, 10:10
Аватар для M.A.D.M.A.N.
M.A.D.M.A.N. M.A.D.M.A.N. вне форума
Sir Richard Abramson
 
Регистрация: 05.04.2008
Сообщения: 5,503
Версия Delphi: XE10
Репутация: выкл
По умолчанию

Гугли SQL-92
__________________
— Как тебя понимать?
— Понимать меня не обязательно. Обязательно меня любить и кормить вовремя.


На Delphi, увы, больше не программирую.
Рекомендуемая литература по программированию
  #8  
Старый 28.06.2015, 17:02
nikotan nikotan вне форума
Новичок
 
Регистрация: 21.06.2015
Сообщения: 58
Версия Delphi: Delphi 7
Репутация: 10
По умолчанию

Этим заниматься очень интересно, но нервы начинают шалить когда не получается, хотя по идее должно работать
Код:
SQL.Text:='SELECT Fio, Glav , SM , SSH , RZO, Glav + SM + SSH + RZO as summa FROM Clear';
почему последняя колонка пустая?
  #9  
Старый 28.06.2015, 18:02
nikotan nikotan вне форума
Новичок
 
Регистрация: 21.06.2015
Сообщения: 58
Версия Delphi: Delphi 7
Репутация: 10
По умолчанию

и ещё проблема выявилась, вот в edit1 ввёл цифру "9", потом изменил на 7 (например), закрыл программу, на следующий день открыл и по идее должно быть "7", как сделать чтоб эта цифра оставалась всегда в памяти где-то?
  #10  
Старый 28.06.2015, 20:03
Аватар для Alegun
Alegun Alegun вне форума
LMD-DML
 
Регистрация: 12.07.2009
Адрес: Богородское
Сообщения: 3,025
Версия Delphi: D7E
Репутация: 1834
По умолчанию

Цитата:
Сообщение от nikotan
и ещё проблема выявилась, вот в edit1 ввёл цифру "9", потом изменил на 7 (например), закрыл программу, на следующий день открыл и по идее должно быть "7", как сделать чтоб эта цифра оставалась всегда в памяти где-то?
Это как раз не проблема, трабла в том, что вы, увж. топикстартер ни фига не читали ПФ, а там есть такое правило "вылитое в граните": один вопрос - одна тема, пжлст, прочитайте.

Ну так уж и быть, в порядке последнего исключения приведу пример схорона содержимого едита на диске
Код:
const fn: string = 'Edit1.wrc';
...

procedure TForm1.FormCreate(Sender: TObject);
var
  FStr: TFileStream;
  MemStr: TMemoryStream;
begin
 if FileExists(fn) then
   begin
    FStr:= TFileStream.Create(fn, fmOpenRead);
    MemStr:= TMemoryStream.Create;
    ObjectTextToBinary(FStr, MemStr);
    MemStr.Position:= 0;
    MemStr.ReadComponent(Edit1);
    MemStr.Free;
    FStr.Free;
   end;
end;

procedure TForm1.FormDestroy(Sender: TObject);
var
  FStr: TFileStream;
  MemStr: TMemoryStream;
  begin
  FStr:= TFileStream.Create(fn, fmCreate);
  MemStr:= TMemoryStream.Create;
  MemStr.WriteComponent(Edit1);
  MemStr.Position:= 0;
  ObjectBinaryToText(MemStr, FStr);
  MemStr.Free;
  FStr.Free;
end;
Этот пользователь сказал Спасибо Alegun за это полезное сообщение:
nikotan (28.06.2015)
  #11  
Старый 28.06.2015, 20:17
nikotan nikotan вне форума
Новичок
 
Регистрация: 21.06.2015
Сообщения: 58
Версия Delphi: Delphi 7
Репутация: 10
По умолчанию

блин всё работает, аж настроение поднимается, после уже 5-часового поиска в инете
про
Код:
SQL.Text:='SELECT Fio, Glav , SM , SSH , RZO, Glav + SM + SSH + RZO as summa FROM Clear';
в новой теме задать?
  #12  
Старый 28.06.2015, 20:24
nikotan nikotan вне форума
Новичок
 
Регистрация: 21.06.2015
Сообщения: 58
Версия Delphi: Delphi 7
Репутация: 10
По умолчанию сумма строк

есть 6 колонок, 4 из них надо сложить и вывести в последнюю
можно убрать последнюю колонку и использовать "as summa"
но почему то у меня не считает и в последней колонке пусто
Код:
SQL.Text:='SELECT Fio, Glav , SM , SSH , RZO, Glav + SM + SSH + RZO as summa FROM Clear';
  #13  
Старый 28.06.2015, 20:25
Аватар для Alegun
Alegun Alegun вне форума
LMD-DML
 
Регистрация: 12.07.2009
Адрес: Богородское
Сообщения: 3,025
Версия Delphi: D7E
Репутация: 1834
По умолчанию

Наводящий вопрос, а что вы собсно от этой строчки хотите получить?

В ней сейчас записано:

Выбрать значения полей Fio, Glav , SM , SSH , RZO, дальше идёт рабочая галиматья (Glav + SM + SSH + RZO), результат считать как поле с титулом summa из таблицы Clear, это сработает - в summa будет всегда один и тот же результат сложения первых записей из выбранных полей...
  #14  
Старый 28.06.2015, 20:30
nikotan nikotan вне форума
Новичок
 
Регистрация: 21.06.2015
Сообщения: 58
Версия Delphi: Delphi 7
Репутация: 10
По умолчанию

так и надо посчитать сумму 2,3,4,5 полей и значение занести в 6 колонку
  #15  
Старый 28.06.2015, 20:49
Аватар для Alegun
Alegun Alegun вне форума
LMD-DML
 
Регистрация: 12.07.2009
Адрес: Богородское
Сообщения: 3,025
Версия Delphi: D7E
Репутация: 1834
По умолчанию

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



Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 06:54.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2021

ВКонтакте   Facebook   Twitter   Ссылка на Telegram