Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Пересчёт [D6]


niko45 ©   (2002-12-26 23:42:00) 

Привет всем.
Надо составить базу данных проката компакт дисков,
Почти всё сделал только одна проблемма при подсчёте
денег за прокат дисков. У меня не получается пересчитать в базе каждого клиента
сумму денег вписывается всем одинаковая.Не подскажите как пересчитать правильно
базу данных.
Заранее всем спасибо.


Dona   (2002-12-27 16:18:00) [1]

>Val ©
И то верно... :)


Val   (2002-12-27 16:07:00) [2]

>Dona © (27.12.02 13:38)
А лучше, конечно, как предлагал..
лучшее предложение от Anatoly Podgoretsky © (27.12.02 13:36) :)


Dona   (2002-12-27 13:38:00) [3]


se:=strtoint(edit7.Text); //здесь находится чИсло когда принЕсли диски в прокат сдавать
aser:=Table1.FieldByName("Data").AsInteger; //сЮда вписывается дата когда человек взял диск
- операции не в цикле, поэтому их значения одни и те же для каждой записи => получаем одинаковую сумму kol.
Вообще интересно, с датой работаете как с целым числом (а если взяли кассету в одном месяце, а приннесли в другом)?! И отнимаете от предыдущей даты следующую...
А лучше, конечно, как предлагал
>Sergey13 © (27.12.02 10:27)
>А что значит "пересчитывает базу"? Я то думал, что сдал человек >диск - поставили дату сдачи. Разница между датами выдачи и >сдачи - и есть искомое число дней. Чего там "пересчитывать"?


Anatoly Podgoretsky   (2002-12-27 13:36:00) [4]

Ничего переаисывать не надо, марш за учебники


gek   (2002-12-27 13:35:00) [5]


Table1.FieldByName("Data").AsInteger; //суда вписывается дата когда человек взял диск


Это что, просто число, что ли?
В Delphi тип Tdate хранится как double


myor   (2002-12-27 13:33:00) [6]


> Table1.First;


ну, допустим, начал- вижу.



> for n:=1 to Table1.RecordCount do begin


??????

а, может, лучше
while not eof
...
next


> kol:=(aser-se) * 30



> Table1.Edit;
> Table1.FieldByName("Сумма к выплоте").AsInteger:=kol;
> // вот суда вписывается сумма к выплоте
> Table1.Post;


посчитал и ввел, а где переход на следующую строку?
дописывай код

ты ж стоишь на first записи и RecordCount раз считаешь одну и ту же сумму


Dona   (2002-12-27 13:27:00) [7]

а Table1.Next есть?


vopros   (2002-12-27 13:12:00) [8]

Не судьба сделать вычесляемое поле где бы ето производилось для всех записей таблицы?
см. OnCalcFields


niko45   (2002-12-27 12:46:00) [9]

НЕ пацаны я не жду готового решения просто не догадался показать код. Прошу прощения.

var
aser,kol:integer;
n,se:integer;
begin
se:=strtoint(edit7.Text); //здесь находится чесло когда принисли диски в прокат сдавать
aser:=Table1.FieldByName("Data").AsInteger; //суда вписывается дата когда человек взял диск
Table1.First; // начинаем пересчёт с первоё записи
for n:=1 to Table1.RecordCount do begin //начать с первой записи и до конца
begin
kol:=(aser-se) * 30; //здесь производися расчёт суммы типа сегодняшную дату отнимаем от той когда взял и умножаем на стоимость проката
Table1.Edit;
Table1.FieldByName("Сумма к выплоте").AsInteger:=kol; // вот суда вписывается сумма к выплоте
Table1.Post;


KSergey   (2002-12-27 11:28:00) [10]

Хуже даже не то, что ждет готового решения, а что описал общую задачу, а вопрос ставит "где в программе ошибка"! А она, к стати, как обычно в 17 строке. Она всегда там в таких случаях.


myor   (2002-12-27 10:37:00) [11]

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


Sergey13   (2002-12-27 10:27:00) [12]

2niko45 (27.12.02 10:14)
>У меня же проблема в том что когда прога пересчитывает базу она или подвисает ...
А что значит "пересчитывает базу"? Я то думал, что сдал человек диск - поставили дату сдачи. Разница между датами выдачи и сдачи - и есть искомое число дней. Чего там "пересчитывать"?

ИМХО, что ту тут в консерватории не так.


niko45   (2002-12-27 10:14:00) [13]

>>VAleksey
Вообщем так.
Есть база данных проката дисков.Приходит человек берёт диск в базу вводится информация о диске и когда он его взял
(тобишь чесло и месяц), потом когда человек приносит через какоето время диск
прога должна пересчитать сколько человек должен за прокат(тоесть умножается количество дней
(сколько диск был на руках)на стоимость проката данного диска).
А если в базе 100 человек то как сделать что бы прога пересчитала правельно каждому человеку сумму к оплате.У меня же проблема
в том что когда прога пересчитывает базу она или подвисает или берёт первую запись и сумму которую она просчитала вписывает
всем людям которые записаны в базе.


>>!KSergey
Вот именно алгоритм реализации у меня и неполучается.


KSergey   (2002-12-27 07:45:00) [14]

Это делается в 2 этапа.
1. Разработать методику (алгоритм), позволяющую безошибочно рассчитывать суммы.
2. Безошибочно реализовать данный алгоритм в программе.


VAleksey   (2002-12-27 06:26:00) [15]

Недостаточно данных для ответа


Наверх

Титульная страница Поиск, карта сайта Написать письмо