|
| Форумы/
Сообщений: всего:53643, сегодня:0, за неделю:31, за месяц:46, за год:1617
|
|
Использование СУБД Ms Access, программирование на VB, VBA
Данный форум посвящен различным вопросам создания приложений баз данных на платформах - Microsoft Access, Microsoft Visual Basic.
|
|
|
|
Эта тема располагается на нескольких страницах: [1] 2 3 » все
|
|
В форме каждый день заносятся в поля числовые данные. В некоторых полях информация заносится с нарастающим итогом. Например: Дата Поле 1 01.01.2010 10000 02.01.2010 11000 и.т.д. Как в форме организовать поле, которое бы показывало прирост (разницу с предыдущей записью этого поля за прошлый день) Для примера, возле поля 1 вставить поле 2 Дата Поле 1 Поле 2 01.01.2010 10000 02.01.2010 11000 1000 |
| 31.01.2010 13:35 |
|
|
Вас устроит вариант, если для расчета вам нужно будет нажимать кнопку на форме,чтобы посмотреть разницу по выделенной и предыдущей записи ? Или вам статистику с этими значениями разницы надо вести в таблице тоже. Данные должны только на форме отображаться,или же в таблицу тоже заноситься другим словом? Скажите, соберем вам образец и приложим. |
| 31.01.2010 15:09 |
|
|
| Да, должны заносится в таблицу. |
| 31.01.2010 15:38 |
|
|
Какая-то обратная у Вас задача. Обычно в таблицу записываются данные, просто данные. Например, приход чего-то столько-то, дата такая-то. Потом возникает необходимость просмотреть историю нарастающим итогом. А у Вас нарастающим итогом данные заносятся... точно на каждый день одна запись? Можно составить запрос, в котором объединить таблицу саму с собой по условию, что даты отличаются на один день и расчитать разницу. |
| 31.01.2010 21:01 |
|
|
Каждый день заносятся показатели оборудования, они идут с нарастанием. Необходимо на форме видеть величину прироста, потом от него будут производится некоторые вычисления.
Как объединить таблицу саму с собой |
| 31.01.2010 21:28 |
|
|
Доброй ночи, я подумал тут пару минут, решение получилось немного сумбурным, но работает. Примерно как сказал Денис, только я разложил все на составляющие. В качестве объединенных таблиц наглядно на форме в главной вставил таблицу1,и в подчиненной ее же, только условием для связи/отбора сделал не чистое поле, а значение дата-1, для этого создал отдельное поле на форме,назвал его poledata. и привязал подчиненную именно на это поле. Создал второе поле,назвал его poleznachenie, источником данных у которого является поле значение из подчиненной формы(которое предварительно уже отфильтровано по предыдущей дате). Итак, значение предыдущей даты известно, осталось отнять текущее от предыдущего. Код простенький, повесил на кнопку:
Private Sub Кнопка37_Click() Dim P As Integer Dim D As Integer P = Me.predznachenie D = Me.значение Me.разница = D - P End Sub
Все, процесс пошел...образец приложил. Можно вместо подчиненной формы написать выборку SQL прямо в коде, по этому же принципу, присвоить переменную этому выбранному значению,и провернуть то же самое чисто в коде, но пора спать уже)). Образец БД прилагаю. |
| Присоединенный файл:Опыты.rar (Размер: 23478 байт, Скачиваний:51) |
| 01.02.2010 02:18 |
|
|
С Уважением, ЛАлов Сергей |
| 01.02.2010 02:19 |
|
|
Сергей думаю что решение немного не доработано. Что если в какой-то из дней поле не будет заполнено, например в субботу или воскресенье сотрудники наверняка отдыхают. Скорее надо ввести нумерацию записей в запросе (см. примеры на сайте) и создать запрос с двумя копиями полученной автонумерации, связав копии уже по значению этого поля автонумерации - 1. Соответственно в этом последнем запросе и вычислять разницу. |
| 03.02.2010 12:28 |
|
|
Да,согласен, решение недоработано по следующим моментам: во первых обработчик нулевых значений поля надо включить. Добавить условие if которое в случае выходных дней обращается например к пятнице. Вообще предварительно проверяет день недели. Организуется просто ,при помощи функции WeekDay(тра та та)если к примеру функция выдает значение тиекущего дня =1 понедельнику, то обращение идет к пятнице прошлой недели. В принципе задача несложная. Если актуально еще вопрос,доработаю в коде и пришлю.. |
| 03.02.2010 13:19 |
|
|
| актуально |
| 03.02.2010 21:49 |
Эта тема располагается на нескольких страницах: [1] 2 3 » все
|