Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.01.23;
Скачать: CL | DM;

Вниз

Пересчёт   Найти похожие ветки 

 
niko45   (2002-12-26 23:42) [0]

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


 
VAleksey ©   (2002-12-27 06:26) [1]

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


 
KSergey ©   (2002-12-27 07:45) [2]

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


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

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


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


 
Sergey13 ©   (2002-12-27 10:27) [4]

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

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


 
myor ©   (2002-12-27 10:37) [5]

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


 
KSergey ©   (2002-12-27 11:28) [6]

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


 
niko45   (2002-12-27 12:46) [7]

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

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;


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

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


 
Dona ©   (2002-12-27 13:27) [9]

а Table1.Next есть?


 
myor ©   (2002-12-27 13:33) [10]


> 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 раз считаешь одну и ту же сумму


 
gek ©   (2002-12-27 13:35) [11]


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


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


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

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


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


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



 
Val ©   (2002-12-27 16:07) [14]

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


 
Dona ©   (2002-12-27 16:18) [15]

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



Страницы: 1 вся ветка

Текущий архив: 2003.01.23;
Скачать: CL | DM;

Наверх




Память: 0.5 MB
Время: 0.015 c
1-72349
zxz
2003-01-12 13:23
2003.01.23
Не пойму в чем проблема


1-72218
Жанна
2003-01-14 12:52
2003.01.23
Помогите пожалуйста


4-72597
Cosmic
2002-12-07 23:29
2003.01.23
Процесс, который невозможно удалить


3-72113
cf
2002-12-23 18:47
2003.01.23
DBGrid


1-72198
Dmitriy_R
2003-01-14 10:35
2003.01.23
Программа без формы + Memo