Rambler's Top100
Форум: MS ACCESSVBVBA MS OfficeMS SQL server
Новые сообщения: 0000

Форум: MS ACCESS

Вопросы связанные с MS ACCESS

Обновить визитку
Участники «Online»
Все участники

 
 

Доброго времени суток, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Разница значений поля
 
 автор: Nosik   (06.05.2010 в 10:03)   личное сообщение
 
 

Существует две таблицы с полями: у 1-ой - [ИД_абонента];[ФИО]; у 2-ой [ИД_показания];[ИД_абонента];[Месяц_снятия показания];[Показание1];[Показание2]. Отношение один-ко-многим.
Как создать Запрос вычисляющий разницу показаний за месяц, выбранный в ПолеСоСписком1 в Форме[Отчет], и месяц ему предшествующий, для каждого Абонента? На базе этого запроса будет формироваться отчет.
Просьба ответить поподробнее. Заранее спасибо

  Ответить  
 
 автор: час   (06.05.2010 в 10:18)   личное сообщение
 
 

Для поподробнее,
что бы людям было удобнее
Ваши таблицы кладите сюда
Вам и запрос напишут тада
===============================
Ну а если повезёт...
Вам напишут и отчёт!!!
====================================
А в пустую балаболить
Время вряд ли нам позволит

  Ответить  
 
 автор: Nosik   (06.05.2010 в 11:42)   личное сообщение
 
 

Вот база: http://slil.ru/29089838 Очень нужен отчет как по Запросу_1 только по всем абонентам.

  Ответить  
 
 автор: Explorer   (06.05.2010 в 17:32)   личное сообщение
 
 


Request Blocked by URL Filter Database

Your request to URL http://slil.ru/29089838 has been blocked by the the web proxy URL Filter Database. The URL is listed under categories (Personal Network Storage, Media Sharing), which are not allowed by your administrator at this time. The following reputation level was assigned to it: Unverified.



прямо сюда нельзя приаттачить зип с базой?

  Ответить  
 
 автор: Nosik   (06.05.2010 в 18:15)   личное сообщение
 
 

Сюда не влезает

  Ответить  
 
 автор: Nosik   (06.05.2010 в 14:58)   личное сообщение
 
 

Аууу! Помогите разобраться.

  Ответить  
 
 автор: kot_k_k   (06.05.2010 в 18:09)   личное сообщение
 
 

как на вскидку -
делаем запрос по Фио для месяца1,
делаем запрос по Фио для месяца1+1
запрос по ФИО куда вставляем оба предъидущих запроса.
Получаем колонку ФИО, месяц1, месяц1+1 в результирующий столбец разницу.

НО

если за месяц1 не записи - он не покажет. скорее нужно брать просто последние показания.
пипа делаем групповой запрос по Фио для <месяца1+1 а выбор идет по максимальному месяцу (дате).

  Ответить  
 
 автор: Nosik   (06.05.2010 в 18:21)   личное сообщение
 
 


делаем запрос по Фио для месяца1,
делаем запрос по Фио для месяца1+1
запрос по ФИО куда вставляем оба предъидущих запроса.
Получаем колонку ФИО, месяц1, месяц1+1 в результирующий столбец разницу.


С каким сталбцом ФИО делать 3 запрос (из 1,2 запроса или из таблицы), не так не катит совсем.

  Ответить  
 
 автор: Nosik   (06.05.2010 в 18:24)   личное сообщение
 
 

Может кто подскажет как такое вычитание реализовать программно (VBA)?

  Ответить  
 
 автор: kot_k_k   (07.05.2010 в 08:41)   личное сообщение
27 Кб.
 
 

Вот запрос о котором говорил.
Но показывает только текущий и предыдущий месяцы - если не было показателей в месяце до этого не работает.
Из таблы нужно убрать Год и Месяц оставить только Дата 01.05.10 или 01.06.09.

У тебя Год не год а строковое выражение - может ты хотел год писать прописью. Убрать однозначно.

намучался пока понял что к чему. одним словом изврат полный.

тяпница!!!!!

п.с. вопрос где учимся?

п.п.с. в VBA - копируй SQL строку запроса в выражение для Recordset, мемняй ; на , и будет счастье только + пробежаться по циклу и загнать кудато.

  Ответить  
 
 автор: Nosik   (07.05.2010 в 09:32)   личное сообщение
 
 

Такой запрос я делала, но это не то что надо. Потому что нужно:
если показатели были в обоих месяцах, то разница текущего и предыдущего;
если есть только за текущий, то выводить значение за текущий;
если есть только за предыдущий, то 0.

А кокие месяц и год строковое или дата, в данном случае абсолютно не важно.
А если вам это принципиально, подскажите решение с учетом месяца как даты.

  Ответить  
 
 автор: kot_k_k   (07.05.2010 в 10:06)   личное сообщение
 
 


Такой запрос я делала, но это не то что надо. Потому что нужно:
если показатели были в обоих месяцах, то разница текущего и предыдущего;
если есть только за текущий, то выводить значение за текущий;
если есть только за предыдущий, то 0.



а это извините другая постановка задания на программирование
в запросe3
создать нужно вычисляемое поле по каждому показателю.
где пишем

Выражение2: IIf([Текущий.Счетчик_хол1]=0;0;[Текущий.Счетчик_хол1]-[До текущего.Счетчик_хол1])

и так по всем счетчикам.



А кокие месяц и год строковое или дата, в данном случае абсолютно не важно.
А если вам это принципиально, подскажите решение с учетом месяца как даты.



не знаю где и кем это будет использоваться, но:

это принцыпиально ВАМ и ТОЛЬКО ВАМ. если вы посмотрите на форму в поля которые я создал то увидите что нужно было написать чтобы из Вашей формы-структуры БД получить Год и Месяц не говоря о том что норамльно отловить декабрь 2009 от января 2010 - не можно написать что если месяц = 1 то год = год-1 а месяц =месяц-1.
но если придется расчитывать периоды временные то будет еще более.

Поле имеет тип Дата из нее всегда можно получить Год, Месяц, День - день недели и прочее.
Если вам зададут интервал в 2,3 месяца то ловить придется не только январь а февраль и март тоже
мало того что вносить данные если нет показаний 0 0 0 0 не имеет смысла т.к. показания записывают когда их дают и кто их дает (абонент)!!!! а не садится чел и вносит всё подряд - тоже вариант но какое количество лишних движений.
Можноконечно написать функцию - типа внести данные с нулями для тех у кого нет записи за этот месяц,
а что будет если внесли в следующем
март 50
апрель 0
май 100
показания к оплате 100

поэтому если конечно это реальный проект а не курсовая - зачем она такая нужна.
вычислять правильнее паказания между последней и предпоследней записью - текущей и предшествующей ей.

п.с. теперь я начинаю понимать почему данные водотреста не сходтся с показаниями счетчика.

  Ответить  
 
 автор: kot_k_k   (07.05.2010 в 10:10)   личное сообщение
 
 

в догон

мало того табла Годы - кем они буду вностится 2013-й например - если дать доступ юзерам то 1000% вероятность пояления 2-х и более 2013-х годов в Вашей табле Год и вся статистика по 2012 летит к чертям.
Это равносильно созданию таблицы для цифр где поля код_цифры и цифра "1", "2" ...."0"

  Ответить  
 
 автор: Nosik   (07.05.2010 в 11:04)   личное сообщение
 
 

Спасибо за наставления. Все поняла и осознала :) Все гениальное просто, и не надо было в дебри лесть.

  Ответить  
HiProg.com - Технологии программирования
Rambler's Top100 TopList