![]() |
Внимание, важное сообщение: Дорогие Друзья!
В ноябре далекого 2001 года мы решили создать сайт и форум, которые смогут помочь как начинающим, так и продвинутым пользователям разобраться в операционных системах. В 2004-2006г наш проект был одним из самых крупных ИТ ресурсов в рунете, на пике нас посещало более 300 000 человек в день! Наша документация по службам Windows и автоматической установке помогла огромному количеству пользователей и сисадминов. Мы с уверенностью можем сказать, что внесли большой вклад в развитие ИТ сообщества рунета. Но... время меняются, приоритеты тоже. И, к сожалению, пришло время сказать До встречи! После долгих дискуссий было принято решение закрыть наш проект. 1 августа форум переводится в режим Только чтение, а в начале сентября мы переведем рубильник в положение Выключен Огромное спасибо за эти 24 года, это было незабываемое приключение. Сказать спасибо и поделиться своей историей можно в данной теме. С уважением, ваш призрачный админ, BigMac... |
|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » Прочие БД - Промежуточная разница??? |
|
Прочие БД - Промежуточная разница???
|
Новый участник Сообщения: 27 |
Добрый день. Есть две таблицы. В одной: №Смены, Дата, Оператор, Комментарий. Во второй: №Смены, товар1, товар2, товар3....
Понятно поля №Смены обоих таблиц связаны. Первая таблица заполняется вручную. Вторая таблица заполняется динамически(при загрузке формы выполняется запрос, и из него данные вносятся в соответствующие поля на форме). Значения в полях товар1, товар2, товар3.... постоянно увеличиваются. То-есть в каждой записи хранится общее кол-во произведённого товара, на момент внесения данных. Вопрос: Как создать запрос, вычисляющий разницу текущей и предыдущей записи? Что-бы выглядело приблизительно так: ![]() Понимаю, решается легко в exele, но не пойму как решить в Access? А нужно именно в Access.... ![]() Спасибо за помощь. |
|
Отправлено: 21:58, 27-05-2010 |
Ветеран Сообщения: 5624
|
Профиль | Отправить PM | Цитировать Интересная задачка.... А запрос необходимо создать без привлечения VBA или можно использовать макросы?
Похожая проблема обсуждалась здесь: http://www.cyberforum.ru/ms-access/thread79189.html - Посмотрите, там даже примеры есть на access. |
------- Отправлено: 01:11, 28-05-2010 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Новый участник Сообщения: 27
|
Профиль | Отправить PM | Цитировать Delirium, Спасибо!!
Думаю без VBA такое не решить ![]() Минут 10 назад просматривал эту тему. Оно приблизительно то, но не то. Там запрос, создаётся конкретный. То-есть прямо указаны поля которые должны быть в запросе. Я имею ввиду, что если у меня появится новый товар, то для него оно не будет работать. Придётся переписывать модуль. Это не есть гуд. Более конкретизированный и лаконичный вариант нашёл здесь Вот архив из той темы(там без регистрации не скачать) Но и там проблема с жёстко указанными полями. В идеале нужно сделать форму, которая при загрузке "изучала" бы, какие есть поля в таблице, соответствующие заданному критерию. И при необходимости генерировала бы новое поле(типа как на моём скрине). А содержимым этого поля являлась бы функция, переменной в которой, в свою очередь было бы обнаруженное в таблице поле товар_n, и выполнявшая расчёт разницы текущей записи относительно предыдущей. Надеюсь не очень запутано.... |
Последний раз редактировалось taravasya, 28-05-2010 в 02:05. Отправлено: 01:55, 28-05-2010 | #3 |
Новый участник Сообщения: 27
|
Профиль | Отправить 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, понять этот аргумент? То-есть что бы строка выгладела примерно так: для того что бы одной функцией, можно было бы пересчитывать все товары Как не мучился, не смог впихнуть в SQL аргумент этой функции... |
Отправлено: 22:37, 28-05-2010 | #4 |
Назгул Сообщения: 2633
|
Профиль | Отправить PM | Цитировать taravasya,
Может быть проще "Разница Товар1" и "Разница Товар2" вычислять в полях Формы отчета MS Access? В свое время, подобные вычисления (промежуточные суммы, накопительные итоги) я формировал именно так. |
|
------- Отправлено: 23:54, 29-05-2010 | #5 |
Новый участник Сообщения: 27
|
Профиль | Отправить PM | Цитировать Может быть и проще конечно. И собственно меня бы устроило. Но.... Во первых я не нашёл способа реализовать там это(тут признаюсь честно - отчеты Access для меня дебри, возможно я и упустил что-то), во-вторых всё таки отчёт это вершина айзберга, а значит шаг в лево шаг в право........ не выйдет. Ну и в конце-концов я ведь уже столько провозился решая именно так эту проблему...
![]() |
Отправлено: 00:26, 30-05-2010 | #6 |
![]() |
Участник сейчас на форуме |
![]() |
Участник вне форума |
![]() |
Автор темы |
![]() |
Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
В чем разница | 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 |
|