Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » Прочие БД - Промежуточная разница???

Ответить
Настройки темы
Прочие БД - Промежуточная разница???

Новый участник


Сообщения: 27
Благодарности: 0

Профиль | Отправить PM | Цитировать


Добрый день. Есть две таблицы. В одной: №Смены, Дата, Оператор, Комментарий. Во второй: №Смены, товар1, товар2, товар3....
Понятно поля №Смены обоих таблиц связаны.
Первая таблица заполняется вручную.
Вторая таблица заполняется динамически(при загрузке формы выполняется запрос, и из него данные вносятся в соответствующие поля на форме). Значения в полях товар1, товар2, товар3.... постоянно увеличиваются. То-есть в каждой записи хранится общее кол-во произведённого товара, на момент внесения данных.
Вопрос:
Как создать запрос, вычисляющий разницу текущей и предыдущей записи? Что-бы выглядело приблизительно так:

Понимаю, решается легко в exele, но не пойму как решить в Access? А нужно именно в Access....
Спасибо за помощь.

Отправлено: 21:58, 27-05-2010

 

Аватара для Delirium

Ветеран


Сообщения: 5624
Благодарности: 936

Профиль | Отправить PM | Цитировать


Интересная задачка.... А запрос необходимо создать без привлечения VBA или можно использовать макросы?
Похожая проблема обсуждалась здесь: http://www.cyberforum.ru/ms-access/thread79189.html - Посмотрите, там даже примеры есть на access.

-------

Пройденные курсы:
[Microsoft №10174 Sharepoint], [SharePoint]
Мои проекты:[CheckAdmins], [NetSend7], [System Uptime], [Remote RAdmin LogViewer],[Netdom GDI], [Holidays - напоминалка о днях рождения]

А я офис-гуру :)

Это сообщение посчитали полезным следующие участники:

Отправлено: 01:11, 28-05-2010 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Новый участник


Сообщения: 27
Благодарности: 0

Профиль | Отправить PM | Цитировать


Delirium, Спасибо!!
Думаю без VBA такое не решить
Минут 10 назад просматривал эту тему. Оно приблизительно то, но не то. Там запрос, создаётся конкретный. То-есть прямо указаны поля которые должны быть в запросе. Я имею ввиду, что если у меня появится новый товар, то для него оно не будет работать. Придётся переписывать модуль. Это не есть гуд. Более конкретизированный и лаконичный вариант нашёл здесь
Вот архив из той темы(там без регистрации не скачать) Но и там проблема с жёстко указанными полями. В идеале нужно сделать форму, которая при загрузке "изучала" бы, какие есть поля в таблице, соответствующие заданному критерию. И при необходимости генерировала бы новое поле(типа как на моём скрине). А содержимым этого поля являлась бы функция, переменной в которой, в свою очередь было бы обнаруженное в таблице поле товар_n, и выполнявшая расчёт разницы текущей записи относительно предыдущей. Надеюсь не очень запутано....

Последний раз редактировалось taravasya, 28-05-2010 в 02:05.


Отправлено: 01:55, 28-05-2010 | #3


Новый участник


Сообщения: 27
Благодарности: 0

Профиль | Отправить PM | Цитировать


Основываясь на раздобытом примере, сделал вот такую функцию:
Код: Выделить весь код
Public Function counter(countcell As Double)
Const sQ1 = "SELECT TOP 1 товар1 FROM Отчет"
Dim db As Database
Dim rs As Recordset
s = sQ1
Set db = CurrentDb
Debug.Print s
Set rs = db.OpenRecordset(s)
If Not rs.EOF Then
    counter = countcell - rs(0)
End If
rs.Close
Set rs = Nothing

End Function
Для начала, эту функцию в дизайнере ставлю в новые поля запроса(для каждого товара своё поле)
Есть две проблемы.
1)Переменная rs(0), всегда имеет значение самой первой записи, в отличие от countcell, значение которой увеличивается в цикле перемещения по записям. В итоге результатом функции является текущая запись - первая запись, что не верно, так как нужно текущая - предыдущая
2)В sQ1 явно указано поле товар1. Хотя оно же, как бы является аргументом для функции. Ума не приложу как заставить SQL, понять этот аргумент? То-есть что бы строка выгладела примерно так:
Код: Выделить весь код
Const sQ1 = "SELECT TOP 1 (countcell) FROM Отчет"
для того что бы одной функцией, можно было бы пересчитывать все товары
Как не мучился, не смог впихнуть в SQL аргумент этой функции...

Отправлено: 22:37, 28-05-2010 | #4


Аватара для kim-aa

Назгул


Сообщения: 2633
Благодарности: 345

Профиль | Отправить PM | Цитировать


taravasya,

Может быть проще "Разница Товар1" и "Разница Товар2" вычислять в полях Формы отчета MS Access?

В свое время, подобные вычисления (промежуточные суммы, накопительные итоги) я формировал именно так.

-------
Мы овладеваем более высоким стилем спора. Спор без фактов. Спор на темпераменте. Спор, переходящий от голословного утверждения на личность партнера. (c)Жванецкий


Отправлено: 23:54, 29-05-2010 | #5


Новый участник


Сообщения: 27
Благодарности: 0

Профиль | Отправить PM | Цитировать


Может быть и проще конечно. И собственно меня бы устроило. Но.... Во первых я не нашёл способа реализовать там это(тут признаюсь честно - отчеты Access для меня дебри, возможно я и упустил что-то), во-вторых всё таки отчёт это вершина айзберга, а значит шаг в лево шаг в право........ не выйдет. Ну и в конце-концов я ведь уже столько провозился решая именно так эту проблему...

Отправлено: 00:26, 30-05-2010 | #6



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » Прочие БД - Промежуточная разница???

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
В чем разница New DiploBoy Хочу все знать 3 01-01-2009 18:40
В чём разница 4x/8x tolbol Видеокарты 3 15-05-2008 15:32
Разница настроек Ме и 98 Evita Microsoft Windows 95/98/Me (архив) 2 29-12-2003 20:26
Разница между 'To' и 'Cc' ankerok Хочу все знать 9 29-04-2003 10:11
А какая разница? Octagon О сайте и форуме 33 28-06-2002 12:14




 
Переход