Форум программистов
 
Расширенный поиск
Контакты: о проблемах с регистрацией, почтой и по другим вопросам пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail.

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

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

Excel VBA, CAD, Софт, ОС, Windows, Ubuntu, Android, VPS
Win Api, Assembler, C++, Java, Pascal, Lazarus, Delphi, OpenGL, DirectX
C#, Qt, .NET, ASP.NET, Windows Forms, ADO.NET, Framework, WPF, UWP, WinRT, XAML
HTML, CSS, JavaScript, Ajax, PHP, Perl, Python, Ruby, SQL, WordPress, API, XML, JSON, ActionScript, Flash

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

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

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

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

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

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

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

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

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

Цитата:
Сообщение от ИвановБ Посмотреть сообщение
Эх с циклами у меня беда, может хотя бы пример какой-нибудь есть?
Без проблем можно и без 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 Кб, 8 просмотров)
Тип файла: jpg 2.jpg (119.5 Кб, 0 просмотров)
Тип файла: jpg 3.jpg (50.2 Кб, 8 просмотров)
__________________
E_MAIL: rijgvina7@yahoo.com

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

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

Цитата:
Сообщение от ИвановБ Посмотреть сообщение
Как мне складывать сумму всех строк одного столбца не подскажите?
если будеть попитка от вас ! то будет решение. Но к сожалению это не видно
__________________
E_MAIL: rijgvina7@yahoo.com
xxbesoxx на форуме   Ответить с цитированием
Старый 26.12.2016, 00:25   #17
ИвановБ
Пользователь
 
Регистрация: 19.12.2016
Сообщений: 47
Репутация: 10
По умолчанию

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

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

Вот кажется нашел как суммировать строки столбца в 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;
ИвановБ вне форума   Ответить с цитированием
Старый 26.12.2016, 00:52   #19
xxbesoxx
Профессионал
 
Аватар для xxbesoxx
 
Регистрация: 10.08.2010
Адрес: Грузия Рустави
Сообщений: 1,213
Репутация: 628
Отправить сообщение для xxbesoxx с помощью Yahoo
По умолчанию

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;

__________________
E_MAIL: rijgvina7@yahoo.com
xxbesoxx на форуме   Ответить с цитированием
Старый 26.12.2016, 00:53   #20
ИвановБ
Пользователь
 
Регистрация: 19.12.2016
Сообщений: 47
Репутация: 10
По умолчанию

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



Опции темы

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

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Дан текст. Найти множество всех слов, которые встречаются во всех предло-жениях текста. 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




10:57.


Powered by vBulletin® Version 3.8.8 Beta 2
Copyright ©2000 - 2017, Jelsoft Enterprises Ltd.

купить трафик


как улучшить посещаемость, а также решения по монетизации сайтов, видео и приложений

RusProfile.ru


Справочник российских юридических лиц и организаций.
Проекты отопления, пеллетные котлы, бойлеры, радиаторы
интернет магазин respective.ru