|
|
|
Помогите с вариантом решения задачи
|
|||
|---|---|---|---|
|
#18+
Смысл такой: есть таблица с тремя полями (дата, показания начальные, показания конечные). Это показания спидометра автомобиля за каждый день для составления плана расхода бензина. Вводится должно только конечное показание, а в начальное показание за этот день должно копироваться конечное показание предыдущего дня автоматически. Как можно эффектно решить эту задачу ? Какие варианты предложите. Сразу оговорюсь, что таблица довольно большая и использование DLoockUp тормозит. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.10.2004, 09:54:55 |
|
||
|
Помогите с вариантом решения задачи
|
|||
|---|---|---|---|
|
#18+
заджойнить саму с собой по условию, данная строока = предыдущая строка [- 1] ( это условия поиска пред. строки ) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.10.2004, 10:49:56 |
|
||
|
Помогите с вариантом решения задачи
|
|||
|---|---|---|---|
|
#18+
Проиндексировать поля, и в зависимости от задачи и платформы, использовать поиск по индексу из VB (VBA) или запрос для отбора записи с максимальными "показаниями конечными" (или максимальной датой). ИМХО: 1.) Если у вас в задаче больше одного автомобиля, то желательно добавить в таблицу и идентификатор автомобиля и искать уже с учетом этого идетификатора. 2.) Автомобиль расходует бензин не только во время пробега и норма может меняться в зависимости от загрузки автомобиля 3.) В некоторых случаях счетчик одометра может сбрасываться 4.) и много еще чего, т.е. "задача (план расхода бензина) в чистом виде одной таблицей решается сложно", есть смысл пересмотреть структуру проекта. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.10.2004, 11:05:28 |
|
||
|
Помогите с вариантом решения задачи
|
|||
|---|---|---|---|
|
#18+
Вообще-то не рекомендуется иметь в одной таблице зависящие друг от друга данные. Я бы сделал вместо трех полей два: дата и то, что нужно вводить. Потом сделал бы запрос с нарастающим итогом и на его основе форму. Про нарастающий итог в форуме можно много нарыть. -- Regards Alexander Artamonov "Alexa12" <nospam@sql.ru> сообщил/сообщила в новостях следующее: news:1022211@sql.ru... Смысл такой: есть таблица с тремя полями (дата, показания начальные, показания конечные). Это показания спидометра автомобиля за каждый день для составления плана расхода бензина. Вводится должно только конечное показание, а в начальное показание за этот день должно копироваться конечное показание предыдущего дня автоматически. Как можно эффектно решить эту задачу ? Какие варианты предложите. Сразу оговорюсь, что таблица довольно большая и использование DLoockUp тормозит. Тема Ответить Posted via ActualForum NNTP Server 1.0 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.10.2004, 11:07:14 |
|
||
|
Помогите с вариантом решения задачи
|
|||
|---|---|---|---|
|
#18+
У меня подобная задача. можно посоветовать в таблице где хранятся данные машин добавить поле с последним показанием одометра и при очередном заполнении основной таблицы брать это данное из относительно небольшой таблицы посредством dlookup ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.10.2004, 11:13:42 |
|
||
|
Помогите с вариантом решения задачи
|
|||
|---|---|---|---|
|
#18+
В общем-то Iskander68 прав, но с учетом того о чем упомянул GuestT, задача далеко не тривиальная и требует много логики ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.10.2004, 11:16:32 |
|
||
|
Помогите с вариантом решения задачи
|
|||
|---|---|---|---|
|
#18+
Эффектно решить эту задачу можно так - заводите таблицу "Остатки топлива по автомобилю", где будет жить и обновляться начальный остаток топлива на день. Проверено - так будет работать быстрее чем все время этот остаток вычислять из предыдущих расходов ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.10.2004, 11:18:15 |
|
||
|
Помогите с вариантом решения задачи
|
|||
|---|---|---|---|
|
#18+
Заводить таблицу для хранения конечных показаний предыдущего дня не удобно, поскольку не получится изменить скажем показания за более ранний период. К тому же как быть если за один день нет вообще показаний, точнее они не менялись. Вбивать одно и тоже не логично. Какие еще варианты подскажите. Только усложнять задачу типа нормы, нагрузки не надо. Надо просто что-то на подобие екселя с копированием предыдущих значений только на аксесе. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.10.2004, 13:04:47 |
|
||
|
Помогите с вариантом решения задачи
|
|||
|---|---|---|---|
|
#18+
Гм интересно, а если вы в середине таблицы измените показания, последующие значения разве не должны измениться? Такая цепочка предполагает либо запрет изменения всех кроме последнего либо изменение всех последующих при изменении предыдущего? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.10.2004, 13:11:28 |
|
||
|
Помогите с вариантом решения задачи
|
|||
|---|---|---|---|
|
#18+
Совершенно верно, вся цепочка должна измениться при изменение раннего показания. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.10.2004, 13:32:46 |
|
||
|
Помогите с вариантом решения задачи
|
|||
|---|---|---|---|
|
#18+
ну вот например Таблица1 Уид,Дата,показания_начала,оказания_окончания Таблица2(вспомогательная) Уид,показания_текущие если уж все равно по объектам уид менять показания, то занести одну цифру в поле показания_текущие - ерунда, зато всегда под рукой ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.10.2004, 13:44:56 |
|
||
|
Помогите с вариантом решения задачи
|
|||
|---|---|---|---|
|
#18+
Смысл я просек, только с обновлением последних показаний во вспомогательной таблице возникнут временные проблемы, так как данные, как я понимаю, подразумевается брать запросом по первоначальной таблице со смещением строки на -1. Или как-то по другому ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.10.2004, 13:50:17 |
|
||
|
Помогите с вариантом решения задачи
|
|||
|---|---|---|---|
|
#18+
Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.10.2004, 14:21:42 |
|
||
|
Помогите с вариантом решения задачи
|
|||
|---|---|---|---|
|
#18+
Alexa12Совершенно верно, вся цепочка должна измениться при изменение раннего показания. Эх - вот тут бы и пригодились триггеры :) Быстренько переходим на MSSQL По сути: - Допущения: 1. Есть таблица транспортных средств (ТС) 2. Значение спидометра только возрастает (не сбрасывается) 3. Тоже самое с датой 4. Вводится не более одной записи в день (на одно ТС) - Таблы: 1. Авто (Код*, Название, Последнее значение спидорметра) 2. Спидометр (Код авто*, Дата*, Начало дня, Конец дня) * = PK - Идея: 1. Вводим новое значение спидометра (X) для авто с кодом (N) 2. Добавляем запись в таблу "Спидометр" (Код Авто = N, Дата = Date(), Начало дня= DLookUp("Последнее значение спидорметра", "Авто", "Код = " & N), Конец дня = X) 3. Обновляем таблу "Авто" (Последнее значение спидорметра = X) - ЗЫ: 1. Не забыть предусмотреть крайние случаи (Первая запись в "Спидометр" для нового ТС) 2. Предусмотреть триггер (или псевдо-триггер) для изменения записи в таблице "Спидометр" ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.10.2004, 14:39:24 |
|
||
|
|

start [/forum/topic.php?fid=45&msg=32732348&tid=1671195]: |
0ms |
get settings: |
8ms |
get forum list: |
18ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
42ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
67ms |
get tp. blocked users: |
1ms |
| others: | 206ms |
| total: | 362ms |

| 0 / 0 |
