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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 25.12.2016, 19:02   #11
Alar
Александр
Администратор
 
Аватар для Alar
 
Регистрация: 28.10.2006
Сообщений: 17,758
По умолчанию

ИвановБ, вам на 0.9 нужно умножать стоимость товаров в цикле пока средняя цена не будет меньше 0.9.

т.е. как только средняя цена станет меньше 100 действие умножения на 0.9 прекратиться. чего сложного? можно цикл юнтил сделать или репиат. и когда дойдет до последнего поля будет возращаться к первому.

формально можно отойти от задания и вычислить коэффициент на которой нужно умножить все товары пройдясь один раз по циклу, что было бы и сделано SQL запросом.

НО задание было дано как

Цитата:
как только средняя цена станет меньше 100 действие умножения на 0.9 прекратиться
Это же задачка, а не жизненное что-то так что делайте цикл, с выводом после каждого действия средней цены и выделяйте строку чем-то где происходит дейтсвие. делайте задердку после каждой операции. все будет красиво и как по заданию. и где-то на середине таблицы остановится.

Естественно это к жизни не применимо, а так задачка на логику.
Alar вне форума Ответить с цитированием
Старый 25.12.2016, 22:13   #12
ИвановБ
Пользователь
 
Регистрация: 19.12.2016
Сообщений: 70
По умолчанию

Эх с циклами у меня беда, может хотя бы пример какой-нибудь есть? Вроде цикл то простой должен быть, а в голову не лезет.
ИвановБ вне форума Ответить с цитированием
Старый 25.12.2016, 22:51   #13
ИвановБ
Пользователь
 
Регистрация: 19.12.2016
Сообщений: 70
По умолчанию

не пойму как в переменной объявить цену взятую из таблицы компонента ADOTable?
ИвановБ вне форума Ответить с цитированием
Старый 25.12.2016, 22:53   #14
xxbesoxx
Участник клуба
 
Регистрация: 10.08.2010
Сообщений: 1,389
По умолчанию

Цитата:
Сообщение от ИвановБ Посмотреть сообщение
Эх с циклами у меня беда, может хотя бы пример какой-нибудь есть?
Без проблем можно и без SQL-ов ! если задача так

1) помню что есть на Delphi (вычисляемые поля) примеров много
2) на пример можно посмотрет Книге или нагуглит так (delphi вычисляемые поля)
3) приступаем
Код:
create database DB_1;
---
use DB_1;
----
create table MyTab(id int identity(1,1),
                   name nvarchar(35),
                   price money
                   )
Код:
procedure TForm1.ADOTable1CalcFields(DataSet: TDataSet);
begin
  // Skidka = это вычисляемые поля
  ADOTable1.FieldByName('Skidka').AsCurrency :=
  // Получаю цена со скидкой на 10%
  (ADOTable1.FieldByName('price').AsCurrency -
   ADOTable1.FieldByName('price').AsCurrency /100*10);
end;
Изображения
Тип файла: jpg 1.jpg (84.8 Кб, 53 просмотров)
Тип файла: jpg 2.jpg (119.5 Кб, 149 просмотров)
Тип файла: jpg 3.jpg (50.2 Кб, 56 просмотров)

Последний раз редактировалось xxbesoxx; 25.12.2016 в 22:58.
xxbesoxx вне форума Ответить с цитированием
Старый 25.12.2016, 23:09   #15
ИвановБ
Пользователь
 
Регистрация: 19.12.2016
Сообщений: 70
По умолчанию

Вроде бы начинаю соображать с циклами, только вот загвоздка, как я понял нужно что бы каждая цена умножалась на 0.9 считалась средняя цена и так далее пока средняя цена не станет меньше 100. Только не соображу как же мне высчитывать эту среднюю цену программно? Как мне складывать сумму всех строк одного столбца не подскажите?
ИвановБ вне форума Ответить с цитированием
Старый 25.12.2016, 23:22   #16
xxbesoxx
Участник клуба
 
Регистрация: 10.08.2010
Сообщений: 1,389
По умолчанию

Цитата:
Сообщение от ИвановБ Посмотреть сообщение
Как мне складывать сумму всех строк одного столбца не подскажите?
если будеть попитка от вас ! то будет решение. Но к сожалению это не видно
xxbesoxx вне форума Ответить с цитированием
Старый 25.12.2016, 23:25   #17
ИвановБ
Пользователь
 
Регистрация: 19.12.2016
Сообщений: 70
По умолчанию

Цитата:
var
itog: Currency;
cen: Integer;
srcen: Integer;
begin
cen:=DM.ADOTableBD.FieldByName('Цен аТовара').AsInteger;

repeat
itog:= ;
until itog<100;
end;
Вот что я навоял из того что понял понял. Скажем огрызок пока что.
ИвановБ вне форума Ответить с цитированием
Старый 25.12.2016, 23:48   #18
ИвановБ
Пользователь
 
Регистрация: 19.12.2016
Сообщений: 70
По умолчанию

Вот кажется нашел как суммировать строки столбца в ADOTable
Цитата:
var Sum, i: integer;
begin
Sum:=0;
i:=AdoTable1.RecNo;
AdoTable1.DisableControls;
AdoTable1.First;
while not(AdoTable1.Eof) do
begin
Sum:=Sum+AdoTable1.FieldByName('Fil e').AsInteger;
AdoTable1.Next;
end;
AdoTable1.RecNo:=i;
AdoTable1.EnableControls;
ShowMessage(IntToStr(Sum));
end;
ИвановБ вне форума Ответить с цитированием
Старый 25.12.2016, 23:52   #19
xxbesoxx
Участник клуба
 
Регистрация: 10.08.2010
Сообщений: 1,389
По умолчанию

1)
Код:
procedure TForm1.Button1Click(Sender: TObject);
// итоговое сумма БЕЗ скидков
var cen: Currency;
    n: integer;
begin
  cen:=0;
  ADOTable1.First;
  for n:=1 to ADOTable1.RecordCount do
    begin
      cen := cen + ADOTable1.FieldByName('price').AsCurrency;
      ADOTable1.Next;
      Label1.Caption :=CurrToStr(cen);
    end;
end;
2)
Код:
procedure TForm1.Button2Click(Sender: TObject);
// итоговое сумма  со-скидкой 10%
var cen: Currency;
    n: integer;
    skidk : Currency;
begin
  cen:=0;
  ADOTable1.First;
  for n:=1 to ADOTable1.RecordCount do
    begin
      skidk :=  ADOTable1.FieldByName('price').AsCurrency /100*10;
      cen := cen + ADOTable1.FieldByName('price').AsCurrency-skidk;
      ADOTable1.Next;
      Label2.Caption :=CurrToStr(cen);
    end;

end;
xxbesoxx вне форума Ответить с цитированием
Старый 25.12.2016, 23:53   #20
ИвановБ
Пользователь
 
Регистрация: 19.12.2016
Сообщений: 70
По умолчанию

Если я на верном пути то осталось это все как -то зациклить.
ИвановБ вне форума Ответить с цитированием
Ответ


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

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

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Дан текст. Найти множество всех слов, которые встречаются во всех предло-жениях текста. Anton94.by Помощь студентам 1 31.03.2014 15:30
Уменьшать размер букв Label6 в зависимости от width Алексей_2012 Общие вопросы Delphi 6 24.03.2013 20:27
цикл for i:=0 to count -1 do. Уменьшать счётчик i внутри цикла... Человек_Борща Общие вопросы Delphi 10 01.07.2011 21:11
Имена всех секций всех ini-файлов (DELPHI) Dj_SheLL Помощь студентам 7 10.10.2010 17:44