|
#1
|
|||
|
|||
сложение строк
Здравствуйте!
хочу сложить 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
|
||||
|
||||
Вроде можно и сложением, но только не поперек, а вдоль
Код:
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
|
|||
|
|||
всё отлично работает, откуда Вы вот берёте эти коды? если есть книжка дайте пожалуйста, спасибо!
вот две проблемки, теперь нет таблицы со ставками, а только одна колонка "EXPR1000" к которой сумма всех использованных ставок(может её в LAbel2.caption вынести?) я же их должен видеть, у кого сколько и к чему относятся, например Петров 1 основная + 0,5 совмещение. и в последней колонке "ObH" общее должно быть, чтоб я видел сколько у кого("ObH" колонка есть, самая последняя). А вторая если изменить Edit1 (общее кол-во ставок) , то остаток почему-то не меняется, блин пока писал сам догадался, повторить код в событии Edit1Change, работает. Ну блин начинается что-то получатся! СПАСИБО! |
#4
|
||||
|
||||
Цитата:
— Как тебя понимать? — Понимать меня не обязательно. Обязательно меня любить и кормить вовремя. На Delphi, увы, больше не программирую. Рекомендуемая литература по программированию |
#5
|
|||
|
|||
может и обычная, но вот правила писанины(синтаксис) не понятны
'SELECT SUM(Glav) + SUM(SM) + SUM(SSH) + SUM(RZO) FROM Clear' в интернете другие способы, но не работают. как появилась новая колонка колонка "EXPR1000", не понимаю IntToStr(StrToInt(Edit1.Text) - Fields[0].AsInteger) о таком я вообще не знал, а Вы говорите обычная, я сначала на одном компе Ваши код пробую как заработает, потом иду по памяти на другом делаю, чтоб понять и выучить! ну типа стараюсь что ли. |
#6
|
|||
|
|||
короче с синтаксисом у меня проблемы, и не всегда понимаю как работает код delphi.
|
#7
|
||||
|
||||
Гугли SQL-92
— Как тебя понимать? — Понимать меня не обязательно. Обязательно меня любить и кормить вовремя. На Delphi, увы, больше не программирую. Рекомендуемая литература по программированию |
#8
|
|||
|
|||
Этим заниматься очень интересно, но нервы начинают шалить когда не получается, хотя по идее должно работать
Код:
SQL.Text:='SELECT Fio, Glav , SM , SSH , RZO, Glav + SM + SSH + RZO as summa FROM Clear'; |
#9
|
|||
|
|||
и ещё проблема выявилась, вот в edit1 ввёл цифру "9", потом изменил на 7 (например), закрыл программу, на следующий день открыл и по идее должно быть "7", как сделать чтоб эта цифра оставалась всегда в памяти где-то?
|
#10
|
||||
|
||||
Цитата:
Ну так уж и быть, в порядке последнего исключения приведу пример схорона содержимого едита на диске Код:
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
|
|||
|
|||
блин всё работает, аж настроение поднимается, после уже 5-часового поиска в инете
про Код:
SQL.Text:='SELECT Fio, Glav , SM , SSH , RZO, Glav + SM + SSH + RZO as summa FROM Clear'; |
#12
|
|||
|
|||
сумма строк
есть 6 колонок, 4 из них надо сложить и вывести в последнюю
можно убрать последнюю колонку и использовать "as summa" но почему то у меня не считает и в последней колонке пусто Код:
SQL.Text:='SELECT Fio, Glav , SM , SSH , RZO, Glav + SM + SSH + RZO as summa FROM Clear'; |
#13
|
||||
|
||||
Наводящий вопрос, а что вы собсно от этой строчки хотите получить?
В ней сейчас записано: Выбрать значения полей Fio, Glav , SM , SSH , RZO, дальше идёт рабочая галиматья (Glav + SM + SSH + RZO), результат считать как поле с титулом summa из таблицы Clear, это сработает - в summa будет всегда один и тот же результат сложения первых записей из выбранных полей... Я не понял Вашего вопроса, но всё же Вам на него отвечу! |
#14
|
|||
|
|||
так и надо посчитать сумму 2,3,4,5 полей и значение занести в 6 колонку
|
#15
|
||||
|
||||
В 6й колонке всегда будет одно и тоже - выполнить сложение значений средствами SQL я такого не знаю, здесь без опроса всех записей не обойтись
Я не понял Вашего вопроса, но всё же Вам на него отвечу! |