![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Пересчёт [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]Недостаточно данных для ответа