![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Правильно посчитать отчет
Юля П © (2003-08-28 10:14:00)
У меня неправильно считается итоговая сумма долгов.
Скорее всего это потому, что у меня в одном поле содержаться и рублевая и долларовая суммы. И как-то неправильно суммируется рублевая сумма. Помогите, пожалуйста.
MsGuns (2003-08-28 14:10:00) [1]
Я так понял, что ребеночек все же того... родненький ;)))
Тогда совет.
Для начала комп не нужен. Нужен только карандаш и бумага (листиков 5-6 для задачи такого плана)
1. Определить объектыБД:
- Приходная накладная
- Расходная накладная
- Поставщик (контрагент)
- Получатель (склад)
- Материал
- Группа материалов
...
2. Для каждого объекта определить его характеристика (свойства). Например, для накладной приходной это №, Дата, Поставщик, Сумма по накладной, Сумма НДС, Валюта, Инф-ция о доставке (№ авто, инфа путевого листа, № и дата доверенности и т.д.)
3. Установить общие для двух или более объектов характеристики и "вынести их за скобки", т.е. сделать справочники, а в самих документах характеристику заменить на ссылку к этому справочнику.
4. Установить межтабличные связи "один-ко-многим". Т.е. к примеру все приходы имеют 2 "этажа". На первом это т.н. заголовки, т.е. №, Дата и т.д., а на 2-м фактура, т.е. Материал, кол-во, цена и т.д.
Ну и в том же духе дальше. Очень рекомендую последовать совету Hawk2 © (28.08.03 13:36) [22], поверьте, этот человек знает, что говорит.
Hawk2 (2003-08-28 13:36:00) [2]
Так то оно так, но прежде чем за что-то браться нужно хоть какие-то книги почитать. Кроме Делфи нужно и о БД коечто знать. Код программы написан, но от правильно организованной структуры БД тоже многое завист.
Юля П (2003-08-28 13:33:00) [3]
> HSolo
В таблице Material.db содержится информация по поступающему материалу: когда пришел (NakladD), от какой организации (Contra), по какой цене (MatDogov), вес (MatMass), сумма за материал (МатТотPrice (цена*вес)), NN - код записи (вводится вручную). Это основные поля в этой таблице.
Course.Db содержит число и значение курса на это число.
MoneyToPay.db
NN(код записи из Material.db), MoneyDate(дата, когда было оплачено за материал), Price_rus1 (сумма в рублях), Price_Dollar(сумма в долларах), NPoruc(номер платежного поручения).
Dummy.db временная таблица, используется, чтобы вывести материалы за месяц, за декаду. В ней сравниваются даты между собой.
MsGuns (2003-08-28 13:28:00) [4]
>Hawk2 © (28.08.03 13:24) [19]
>Юля без обид, но если это вы написали, то думаю Вам еще рановато заниматься такими вещами, а если это ктото другой, то я б ему морду набил
Малевичу при жизни тоже морду били. Да и Ван Гога не очень почитали ;)))
Hawk2 (2003-08-28 13:24:00) [5]
Юля без обид, но если это вы написали, то думаю Вам еще рановато заниматься такими вещами, а если это ктото другой, то я б ему морду набил.
HSolo (2003-08-28 13:15:00) [6]
> MsGuns © (28.08.03 13:01) [15]
Вот к Вашему резюме я и пытаюсь подвести человека. Следующим был бы вопрос "а почто в одной таблице-то?"
"Дедушка бабушку опередил" (с) :))
DenK_vrtz (2003-08-28 13:12:00) [7]
Конкурс "Мать моя - женщина" или "Телепат года" продолжается! :-)
MsGuns (2003-08-28 13:10:00) [8]
>HSolo © (28.08.03 12:56) [14]
>А уж что есть NN / DNN - тут без телепатического модуля никак, а он у меня в ремонте :)
Это-то как раз самое несложное.
Все эти многочисленные, как тараканы, <чего-там>.N|D не что иное как № и дата этого самого <чего-то там> - видно из текста. Зачем таблица движения хранит эту инфу в каждой строке спецификации каждого документа - одному Господу (вкупе с разработчиком) известно. Причем, похоже, что даже отметки об оплате живут в "свальном грехе" с кол-вом, ценой, номером сертификата, даверенностью и т.д. И при этом все - даже суммы - в символах !!!! (Может, это импортированная из откуда-то инфа. И что-то мне шепчет на ухо, что без 1ц тут дело не обошлось,- согрешила бабушка с лабрадором-то ;)))
Короче, крутизнааааааа !!!
MsGuns (2003-08-28 13:01:00) [9]
>Юля П (28.08.03 12:45) [12]
Мдя... Я надеюсь, что это не ваше дитятко, Юля ? А Вам просто его нянчить ? Похоже, весь движняк по материалам всунут в одну таблу, зато для курса суперразработчик предусмотрел целых две.
"... это смутно мне напоминает индо-пакистанский инцидент" (ВВС (с)) А именно ДОСовские клипперно-дэбэфные базы, писанные студентами-недоучками.
Самое интереснон, что нет даже справочника материалов. "Бензопила Дружба" будет шлепаться на клаве столько раз, сколько встречалась в приходно-расходных документах и, естественно, каждый раз разными буквами (если, конечно, программер не исправил глюк горе-разработчика и не придумал перед добавлением предлагать выбор из списка существующего)
Резюме. ИМХО, 1.Существующую прогу вместе с БД - в печку, 2.разработать нормальную структуру "от документа", 3.Перекачать инфу из старой БД в новую (придется написать еще и конвертялку)
Кстати, заодно и распрощаться с Парадоксом как с примусом и патефоном.
HSolo (2003-08-28 12:56:00) [10]
> Юля П (28.08.03 12:45) [12]
ОК, начало положено :)
Следующий этап. Что за информация в какой таблице находится? Как они друг с другом связаны? Я понимаю, для Вас это давно очевидно, но мне, например, название MoneyToPay позволяет лишь догадываться, что речь идет о деньгах, а Price_Dollar - робко предположить, что это и есть та самая долларовая сумма. А уж что есть NN / DNN - тут без телепатического модуля никак, а он у меня в ремонте :)
Юля П (2003-08-28 12:45:00) [11]
Это структура главной таблицы Material.db:
ID AutoInc 0
NN String 5
Contra String 30
MatName String 30
MatMass String 10
SchetD Date 0
MatNVag String 20
MatOtpr Date 0
MatTrans String 5
MatPost Date 0
MatDogov String 7
MatRusPr String 15
MatTotPrice String 15
DogovorN String 15
DogovorD Date 0
GarantN String 15
GarantD Date 0
NakladN String 15
NakladD Date 0
SchetFakN String 15
SchetFakD Date 0
CertificatN String 15
CertificatD Date 0
PrihOrdN String 15
PrihOrdD Date 0
DeadLine Date 0
MatComment String 100
HTP String 11
SchetN String 15
DebitYN Boolean 0
NShop String 3
FinN String 7
PrihRBN String 15
PrihRBD Date 0
Table: Course
Data Date 0
Course String 7
Таблица Debit.db
DNN String 5
DContra String 30
DMatName String 30
DNetto String 10
DDebit_dol String 15
DDebit_rus String 15
Таблица Dummy.db (временная):
DummyDate Date 0
DummyDate2 Date 0
DummyContra String 30
Table: MoneyToPay
NN String 5
MoneyDate Date 0
Price_rus1 String 15
Price_Dollar String 15
NPoruch String 5
DummyMatName String 30
Danilka (2003-08-28 12:45:00) [12]
MsGuns © (28.08.03 12:40)
камментариев есть немножко, но они, похоже, на греческом. :))
MsGuns (2003-08-28 12:40:00) [13]
>Юля П (28.08.03 12:14) [9]
Ух, круто !!! Ни одного комментария, ни отступов, ни внятнообозванных сущностей БД. И все без единого запроса.
А что, на SQL у вас в конторе лежит вето ?
HSolo (2003-08-28 12:26:00) [14]
"Что-нибудь" сделать всегда можно :))
Приведите структуру таблиц.
Юля П (2003-08-28 12:14:00) [15]
Можно хоть что-нибудь сделать?
Код вот такой ужасный:
procedure TMainForm.Debit1Click(Sender: TObject);
var i,j : Integer;
var RDate : TDate;
var Currdebit, Tot_dol, Tot_rus, CurrdebitR: Real;
begin
//
MsGuns (2003-08-28 11:56:00) [16]
Ну да, щас Кашпировский, Чумак и баба Соня соберутся и по фотографии вылечат у девочки флюс ;)))
Anatoly Podgoretsky (2003-08-28 11:40:00) [17]
Она и не получится, поскольку в результате деления могут получаться неправильные дроби
Hawk2 (2003-08-28 11:31:00) [18]
Юля П (28.08.03 11:17) [3]>
Там где рубли я умножаю на курс, а где доллары делю, т.к. мне нужены долги и долларах и в рублях в одном отчете.
Это в два этапа или одновременно? Получается там где была сумма в рублях станут доллары, а где была сумма в долларах станут рубли. И для чего эти манипуляции.
Сумма за каждый отдельный материал и в рублях и в долларах выводится правильно. Но итоговая сумма долгов складывается не правильно.
Не понимаю почему.
А Вы при подсчете отличаете Дебет от Кредита?
MsGuns (2003-08-28 11:29:00) [19]
Запрос на итоговую сумму в студию !
DenK_vrtz (2003-08-28 11:20:00) [20]
В чем выводится(считается) сумма?
Код?