Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Вычисляемые поля (помогите начинающему)
|
|||
|---|---|---|---|
|
#18+
Помогите начинающему: Мне надо сделать базу данных, у которой следующие поля: Дата, Взнос, Дивиденды, Сумма, Снято, Итого Причём, сумма и итого вычисляются, и итого пишется в другую таблицу. Как это можно сделать (база данных парадокс, дельфи 7)? И можно ли это сделать в SQL? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.10.2003, 15:57 |
|
||
|
Вычисляемые поля (помогите начинающему)
|
|||
|---|---|---|---|
|
#18+
В смысле, не получается сделать вычисление полей и запись их в таблицу. Мона сделать, чтобы эти поля вычислялись (вернее, я могу), но не хочется, чтобы каждый раз это считалось, а чтобы это было в базе данных, и только последние данные суммировались, вычитались, итд. Суммирвание можно сделать через sum, но подсчёт дивидендов и вычитание- не получается. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.10.2003, 16:52 |
|
||
|
Вычисляемые поля (помогите начинающему)
|
|||
|---|---|---|---|
|
#18+
Это можно и нужно делать на SQL-серверах, Paradox слишком ненадежная система. База должна состоять, как минимум из двух таблиц. 1. Журнал Дата КодКлинта Деньги ЭтоДивиденд - логическое поле 2. Клиенты КодКлинта АтрибутыКлиента В поле Деньги дивиденды и Взносы идут со знаком плюс, Снято - с минусом Я бы, пожалуй добавил еще и третью. 3. Остатки КодКлиента Деньги Первоначальное заполнение этой таблицы: Код: plaintext 1. 2. При выполнении любой взноса-снятия операции изменяются значения в обоих таблицах Код: plaintext 1. 2. 3. 4. Однако, парадоксовские базы не поддерживают транзакции и этот вариант чреват ошибками. Лучше всего, после ЛЮБОГО сбоя убивать таблицу Отстатки и заполнять ее заново. Начисление дивидендов тоже особых трудностей не представляет. В полноценном SQL-сервере это можно было бы сделать обним запросом, но синтаксис SQL для Paradox ограничен Я не знаю, какой алгоритм применяется у Вас, но если это процент по остатку на счету, то 1. Сканируем базу клиенты. Для каждого из клиентов выполняем запрос Код: plaintext 1. 2. Эту сумму заносим в таблицы Журнал и Остатки . Код: plaintext 1. 2. 3. 4. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.10.2003, 19:01 |
|
||
|
Вычисляемые поля (помогите начинающему)
|
|||
|---|---|---|---|
|
#18+
На всякий случай. Дивиденды для всех сразу. Вдруг прокатит Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.10.2003, 19:24 |
|
||
|
Вычисляемые поля (помогите начинающему)
|
|||
|---|---|---|---|
|
#18+
Cпасибо большое за советы, но: 1.Я не совсем ещё разбираюсь с Парадоксом, поэтому разбираться с SQL-серверами у меня нет сейчас времени. 2. Она у меня состоит из 2-х таблиц: НомерПрепода (уникальный, автоинкремент) ИмяПрепода СуммаНаСчету Адрес Телефон Должность (всеобщему просмотру доступны лишь первые 3 поля, остальные - в другой таблице, на другой форме, которая открываетя за паролем) И (вторая): Индекс(уникальный, автоинкремент, на всякий случай) НомерПрепода (не уникальный, integer) Взнос Дивиденды (начисляются со взноса (как мне сказали) - я так и не понял, почему дивиденды) Сумма (до того, как сняли) Снято Итого. Итого со втрой таблицы помещается в первую (insert я ещё не написал). Сейчас попробую сделать кое-какие запросы из тех, которые Вы мне предложили. Спасибо Вам за совет, правда, я сам ещё не до конца с этим разобрался. Сейчас буду разбираться. Ещё я пытался передать значение номера выбранной клетки в SQL-запрос через Код: plaintext Код: plaintext 1. 2. 3. Вот исходник: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. Ещё раз спасибо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.10.2003, 19:57 |
|
||
|
Вычисляемые поля (помогите начинающему)
|
|||
|---|---|---|---|
|
#18+
Ну неправильные таблицы! А по моему мнению, почти все трудности с реализацией идут именно от изначально неправильно спроектированных баз. Можно примерно так Таблица1. Преподы НомерПрепода (автоинкремент) ИмяПрепода СуммаНаСчету Адрес Телефон Должность Первичный индекс по НомерПрепода =============== Таблица 2. Движение_по_счету НомерПрепода Дата НомерОперации (автоинкремент) СуммаОперации ЭтоДивиденд (логический) Первичный индекс по НомерПрепода, Дата, НомерОперации Индекс по Дата, НомерПрепода =============== Связи Преподы - Движение_по_счету по полю НомерПрепода один-ко-многим Если бы это была система реального времени, то можно бы вместо полей Дата и НомерОперации завести поле ДатаВремя. Какая разница между взносами и снятиями? Да никакой! Только взносы приплюсовываются к остатку, а снятия - вычитаются. Зачем в таком случае заводить поле "Снятие"? Досточно поля " СуммаОперации. И хранить в ней приход со знаком плюс, а расход со знаком минус. Зачем вводить поле "Дивиденды"? Это тот же приход, только рассчитываемый по данным из таблицы Движение_по_счету. И его тоже надо ввести в поле СуммаОперации. А признак ЭтоДивидент я ввел исключительно для того, что бы: Во-первых, если дивиденд рассчитан неправильно, то так его легче найти. А, во-вторых, рано или поздно и бухгалтерии появится светлая мысль - подсчитать сумму дивидендов. ======================== Я Вам настоятельно советую, пока не поздно переделать таблицы. Все резко упростится. ======================== [ quot RaVeN] Ещё я пытался передать значение номера выбранной клетки в SQL-запрос через [/quot] Там были неправильные ответы, если нужно именно по значению из колонки то правильно - DBGrid1.Columns[1].Field.value; Но НомерПрепода вообще в гриде лучше не показывать, а получать его так, как указал JibSkeart DBGrid.DataSource.dataSet.fieldByname('НомерПрепода').AsInteger ======================== Чето я не вьехал, что там они называют "дивиденд". Не могли бы Вы описать это простыми словами. ======================== [ quot RaVeN] 1.Я не совсем ещё разбираюсь с Парадоксом, поэтому разбираться с SQL-серверами у меня нет времени [/quot] - А чего ты, соседушка, так медленно дрова пилишь? Ты бы пилу-то наточил-то. - Некогда, пилить надо ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.10.2003, 00:21 |
|
||
|
|

start [/forum/topic.php?fid=58&tid=2116598]: |
0ms |
get settings: |
10ms |
get forum list: |
21ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
84ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
51ms |
get tp. blocked users: |
2ms |
| others: | 254ms |
| total: | 444ms |

| 0 / 0 |
