powered by simpleCommunicator - 2.0.56     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Период в базе учета эл.энергии
57 сообщений из 57, показаны все 3 страниц
Период в базе учета эл.энергии
    #34011411
rus_75
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Проблема состоит в следующем:
Есть таблица Место_Установки.
Поля: КодМУ, НазваниеМУ
Есть таблица Показания
Поля: КодМУ, Дата_Показания, Показание

Таблицы связаны Один к многим от Места Установки к Показаниям по КодМУ
(у каждого места установки есть много показаний, например 12, или 24,вобщем показания электросчетчика на каждый месяц N-года)

Есть запрос: обе таблицы, связь один-к-многим
Поле КодМУ , поле НазваниеМУ , поле Дата_Показания , поле Показание .

На основание этого запроса сделана простая форма для ввода показаний каждый месяц.

ВОПРОС: Не могу сделать запрос так, чтобы у него, кроме выше указанных полей, были поля Показания на начало и Показания на конец , или начало и конец . Так как показания электросчетчика текущего месяца в следующем месяце становяться начальными, а в этом месяце они конечные.
...
Рейтинг: 0 / 0
Период в базе учета эл.энергии
    #34011416
Фотография ILL HEAD
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
можете
в основном запросе добавить два поля, которые вычисляются "итоговым" подзапросом
(для опредения начальных/конечных значений на периоде, которому принадлежит "дата этой строки")
...
Рейтинг: 0 / 0
Период в базе учета эл.энергии
    #34014247
rus_75
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ILL HEADможете
в основном запросе добавить два поля, которые вычисляются "итоговым" подзапросом
(для опредения начальных/конечных значений на периоде, которому принадлежит "дата этой строки")

Спасибо большое, но у меня не получилось. Если не трудно, я прикрепил примерчик=15 кB, помогите, пожалуйста.
...
Рейтинг: 0 / 0
Период в базе учета эл.энергии
    #34014259
Фотография ILL HEAD
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
делаем модуль с таким содержимым:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
Option Compare Database
Option Explicit

Public Function fStartValue(dateValue As Date, lngKodMU As Long) As Double
' функция возвращает показания на ПЕРВЫЙ день месяца, которому принадлежит dateValue
Dim dateStart
Dim rst As DAO.Recordset

    ' определяем первый день месяца
    dateStart = DateSerial(Year(dateValue), Month(dateValue),  1 )
    Set rst = CurrentDb.OpenRecordset("select sum(nz(показание,0)) as v from показания " & _
                                    "where ((дата_показ<=#" & Format(dateStart, "mm\/dd\/yyyy") & "#) " & _
                                    "and (код_му=" & CStr(Nz(lngKodMU,  0 )) & "))")
    fStartValue = Nz(rst!v,  0 )
    rst.Close    
End Function

Public Function fEndValue(dateValue As Date, lngKodMU As Long) As Double
' функция возвращает показания на ПОСЛЕДНИЙ день месяца, которому принадлежит dateValue
Dim dateEnd
Dim rst As DAO.Recordset

    ' определяем первый день СЛЕДУЮЩЕГО месяца
    dateEnd = DateAdd("m",  1 , DateSerial(Year(dateValue), Month(dateValue),  1 ))
    Set rst = CurrentDb.OpenRecordset("select sum(nz(показание,0)) as v from показания " & _
                                    "where ((дата_показ<#" & Format(dateEnd, "mm\/dd\/yyyy") & "#) " & _
                                    "and (код_му=" & CStr(Nz(lngKodMU,  0 )) & "))")
    fEndValue = Nz(rst!v,  0 )
    rst.Close    
End Function
делаем запрос с таким кодом:
Код: plaintext
1.
2.
3.
4.
SELECT Место_Установки.код_му AS Место_Установки_код_му, показания.код_му AS показания_код_му, 
     Место_Установки.му, показания.дата_показ, показания.показание, 
     fStartValue([дата_показ],[показания].[код_му]) AS показания_начало_месяца, 
     fEndValue([дата_показ],[показания].[код_му]) AS показания_конец_месяца
FROM Место_Установки INNER JOIN показания ON Место_Установки.код_му = показания.код_му;
получаем такой результат (два последних столбца - показания на начало и конец):
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
 1 	 1 	Счетчик  1 	 30 . 06 . 2006 	 5468 	 0 	 5468 
 1 	 1 	Счетчик  1 	 31 . 07 . 2006 	 5589 	 5468 	 11057 
 1 	 1 	Счетчик  1 	 31 . 08 . 2006 	 5671 	 11057 	 16728 
 2 	 2 	Счетчик  2 	 31 . 05 . 2006 	 456 	 0 	 456 
 2 	 2 	Счетчик  2 	 30 . 06 . 2006 	 745 	 456 	 1201 
 2 	 2 	Счетчик  2 	 31 . 07 . 2006 	 815 	 1201 	 2016 
 3 	 3 	Счетчик  3 	 31 . 10 . 2006 	 96287 	 0 	 96287 
 3 	 3 	Счетчик  3 	 30 . 11 . 2006 	 96400 	 96287 	 192687 
 3 	 3 	Счетчик  3 	 31 . 12 . 2006 	 96520 	 192687 	 289207 
 3 	 3 	Счетчик  3 	 31 . 01 . 2007 	 97000 	 289207 	 386207 
 3 	 3 	Счетчик  3 	 28 . 02 . 2007 	 97200 	 386207 	 483407 
в запросе можно использовать DSum вместо вызова самодельных функций fStartValue и fEndValue
...
Рейтинг: 0 / 0
Период в базе учета эл.энергии
    #34014317
Фотография ILL HEAD
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
передавайте привет Чубайсу !
...
Рейтинг: 0 / 0
Период в базе учета эл.энергии
    #34016815
rus_75
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо, большое, привет передам, тока я работаю в Газпроме, и не могут мне дать нормального программера для написания проги по учету электроэнергии - вот сам взялся, тока VBA - пока темный лес.
...
Рейтинг: 0 / 0
Период в базе учета эл.энергии
    #34017242
Да-уж
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
rus_75Спасибо, большое, привет передам, тока я работаю в Газпроме, и не могут мне дать нормального программера для написания проги по учету электроэнергии - вот сам взялся, тока VBA - пока темный лес.
Да-уж

В Газпроме нет программки по учёту электроэнергии? Хотя чего её учитывать?
...
Рейтинг: 0 / 0
Период в базе учета эл.энергии
    #34017466
rus_75
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Возникла проблема:

Я ввел поле расхода и увидел несостыковку -

Запуская Запрос с условием отбора по Счетчику 2 видим, что 3-е по счету показание на 31.07.2006=815 , поле "Показание_начало_месяца" показывает 1201 - что физически не может быть, оно должно показывать введенное показание=745 на 30.06.2006

Счетчик 2 31.07.2006 815- введ. на эту дату 1201 -пок_нач-мес( 745 ) 2016 ( !!! ) -пок_конец_мес

В поле "Пок_конец_мес" он суммурет показания, а должен показывать.

Думаю это прописано в коде :(
...
Рейтинг: 0 / 0
Период в базе учета эл.энергии
    #34017470
Фотография ILL HEAD
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
дайте (НЕсловестный) пример результата для всей таблицы
что должно быть для каждой строки в колонках показания на начало и конец
...
Рейтинг: 0 / 0
Период в базе учета эл.энергии
    #34017478
Фотография ILL HEAD
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
в каком городе стоят ваши счетчики ?
похоже что гдето недалеко от меня %) ... если так - то газпрому может крупно повезти
...
Рейтинг: 0 / 0
Период в базе учета эл.энергии
    #34017499
aleks2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rus_75Проблема состоит в следующем:
Есть таблица Место_Установки.
Поля: КодМУ, НазваниеМУ
Есть таблица Показания
Поля: КодМУ, Дата_Показания, Показание

Таблицы связаны Один к многим от Места Установки к Показаниям по КодМУ
(у каждого места установки есть много показаний, например 12, или 24,вобщем показания электросчетчика на каждый месяц N-года)

Есть запрос: обе таблицы, связь один-к-многим
Поле КодМУ , поле НазваниеМУ , поле Дата_Показания , поле Показание .

На основание этого запроса сделана простая форма для ввода показаний каждый месяц.

ВОПРОС: Не могу сделать запрос так, чтобы у него, кроме выше указанных полей, были поля Показания на начало и Показания на конец , или начало и конец . Так как показания электросчетчика текущего месяца в следующем месяце становяться начальными, а в этом месяце они конечные.

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
select X.КодМУ, X.Дата_Показания_КонцаМесяца, P.Показание as Показание_КонцаМесяца, Месяц
FROM
(select КодМУ, MAX(Дата_Показания) Дата_Показания_КонцаМесяца, DateSerial(YEAR(Дата_Показания), MONTH(Дата_Показания),  1 ) Месяц
FROM Показания 
GROUP BY КодМУ, YEAR(Дата_Показания), MONTH(Дата_Показания)) X
INNER JOIN
Показания P
ON
X.КодМУ=P.КодМУ AND X.Дата_Показания_КонцаМесяца=P.Дата_Показания

Ну а присобачить это к своему запросу - ты уж сам. Ключевое слово: UNION.
...
Рейтинг: 0 / 0
Период в базе учета эл.энергии
    #34019829
rus_75
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Вот что надо (Excel), спасибо за помощь, счас попробую прикрутить это к запросу. Посмотрите вложение.
...
Рейтинг: 0 / 0
Период в базе учета эл.энергии
    #34019835
rus_75
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Счетчики стоят в г. Екатеринбург :)
...
Рейтинг: 0 / 0
Период в базе учета эл.энергии
    #34020679
aleks2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rus_75Счетчики стоят в г. Екатеринбург :)

То-то мне всегда кажется - обсчитывают, скотины...
...
Рейтинг: 0 / 0
Период в базе учета эл.энергии
    #34023757
rus_75
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ILL HEADв каком городе стоят ваши счетчики ?
похоже что гдето недалеко от меня %) ... если так - то газпрому может крупно повезти

Посмотрите, пожалуйста, вложение Excel
...
Рейтинг: 0 / 0
Период в базе учета эл.энергии
    #34023770
Фотография ILL HEAD
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
все делаем с нуля (предыдущие запрос и функции удалите)
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
Public Function fStartValue(dateValue As Date, lngKodMU As Long) As Double
' функция возвращает показания на ПЕРВЫЙ день месяца, которому принадлежит dateValue
Dim dateStart
Dim rst As DAO.Recordset
    ' определяем первый день месяца
    dateStart = DateSerial(Year(dateValue), Month(dateValue),  1 )
    Set rst = CurrentDb.OpenRecordset("select max(nz(показание,0)) as v from показания " & _
                                    "where ((дата_показ<#" & Format(dateStart, "mm\/dd\/yyyy") & "#) " & _
                                    "and (код_му=" & CStr(Nz(lngKodMU,  0 )) & "))")
    fStartValue = Nz(rst!v,  0 )
    rst.Close
End Function
Код: plaintext
1.
2.
3.
4.
5.
6.
SELECT Место_Установки.код_му AS Место_Установки_код_му, показания.код_му AS показания_код_му, Место_Установки.му, 
   показания.дата_показ, показания.показание, 
   fStartValue([дата_показ],показания.код_му) AS показания_начало_месяца,
   показания.показание AS показания_конец_месяца, 
   [показания_конец_месяца]-[показания_начало_месяца] AS Расход
FROM Место_Установки INNER JOIN показания ON Место_Установки.код_му = показания.код_му

Место_Установки_код_му показания_код_му му дата_показ показание показания_начало_месяца показания_конец_месяца Расход1 1 Счетчик 1 30.06.2006 5468 0 5468 54681 1 Счетчик 1 31.07.2006 5589 5468 5589 1211 1 Счетчик 1 31.08.2006 5671 5589 5671 821 1 Счетчик 1 30.09.2006 5771 5671 5771 1002 2 Счетчик 2 31.05.2006 456 0 456 4562 2 Счетчик 2 30.06.2006 745 456 745 2892 2 Счетчик 2 31.07.2006 815 745 815 703 3 Счетчик 3 31.10.2006 96287 0 96287 962873 3 Счетчик 3 30.11.2006 96400 96287 96400 1133 3 Счетчик 3 31.12.2006 96520 96400 96520 1203 3 Счетчик 3 31.01.2007 97000 96520 97000 4803 3 Счетчик 3 28.02.2007 97200 97000 97200 200запрос конечно не оптимальный, но я не стал все менять чтобы была видна логическая связь с предыдущим
ИМХО все работает как надо
...
Рейтинг: 0 / 0
Период в базе учета эл.энергии
    #34024358
rus_75
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Большое спасибо!!!
COOL!!!
C меня пиво :))

P.S. Можно Вам еще будет задать вопрос, если возникнет?
...
Рейтинг: 0 / 0
Период в базе учета эл.энергии
    #34024359
Фотография ILL HEAD
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
велкам
...
Рейтинг: 0 / 0
Период в базе учета эл.энергии
    #34024360
Фотография ILL HEAD
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
только я не понял ... в ебурге ... это в каком штате ? (сколько минус от гринвича ? ... а то пишите в какоето непонятное время )
...
Рейтинг: 0 / 0
Период в базе учета эл.энергии
    #34024381
ИгорьКл
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Посмотри файл Electro2k.zip
http://msa.polarcom.ru/downloads.htm
Там всё открыто может что-нибудь подойдёт тебе.
...
Рейтинг: 0 / 0
Период в базе учета эл.энергии
    #34024673
SNiL
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
to rus_75, ILL HEAD:

Мне кажется, что основываться на максимальных показаниях (max(nz(показание,0))) не совсем правильно. Дело в том что существует такой момент в жизни счётчика, когда текущие показания становяться меньше предыдущих - т.н. "переход через 0", некоторые типы счётчиков обнуляют при поверке (возможно к электрическим последнее не относится - я работаю с узлами учёта газа). Тогда предложенная функция будет давать не правильные результаты. Эти вещи конечно можно игнорировать и вместо 100 вносить 100100 и т.д. до бесконечности. Можно изначально учесть в структуре БД и соответственно обрабатывать. Но наиболее простой вариант - от последнего значения счётчика, в заданном интервале, отнимать предыдущее, обрабатывая показания в зависимости от разрядности счётного механизма.
Хотя, подозреваю, что это лишние усложнения для данной задачи.
...
Рейтинг: 0 / 0
Период в базе учета эл.энергии
    #34024694
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2rus_75
мыло/аська в профиле , обращайся.
...
Рейтинг: 0 / 0
Период в базе учета эл.энергии
    #34024768
oryon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
SNiL
...(возможно к электрическим последнее не относится - я работаю с узлами учёта газа). ...
Подозреваю: SNiL работает в РАО ЕЭС...
...
Рейтинг: 0 / 0
Период в базе учета эл.энергии
    #34027419
rus_75
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
SNiLto rus_75, ILL HEAD:

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

Этот переход я сделал через IIf, с указанием разрядности счетчика - работает вообще нормально :)
...
Рейтинг: 0 / 0
Период в базе учета эл.энергии
    #34027420
rus_75
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
вадя2rus_75
мыло/аська в профиле , обращайся.

Спасибо большое, если, что -обращусь.
...
Рейтинг: 0 / 0
Период в базе учета эл.энергии
    #34131324
rus_75
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Доброго времени суток!:)

Возникла проблема:

Имеется таблица Счетчики, в ней содержится информация о всех счетчиках предприятия.
На предприятии есть несколько объектов, например 3 штуки.
Объект №2 питается от двух вводов, соответственно на каждом вводе стоит счетчик - Счетчик1 и Счетчик 2.

Под Счетчиком 1 установлены еще 3 счетчика - Счетчик 1.1, Счетчик 1.2, Счетчик 1.3.

В свою очередь под Счетчиком 1.1 установлены еще 2 счетчика - Счетчик 1.1.1 и Счетчик 1.1.2

Например за ноябрь месяц расходы счетчиков составили: Счетчик1=1200 кВт , Счетчик2=900 кВт

Счетчик 1.1=600 кВт , Счетчик 1.2=100 кВт, Счетчик 1.3=200 кВт

Счетчик 1.1.1 =200 кВт, Счетчик 1.1.2=300 кВт

В отчете должно быть так:

Расход по Объекту 2

Счетчик 1 расход = 300 (1200-(600+100+200))
Счетчик 2 расход = 900

Счетчик 1.1 расход = 100 (600-(200+300))
Счетчик 1.2 расход = 100
Счетчик 1.3 расход = 200

Счетчик 1.1.1 расход = 200
Счетчик 1.1.2 расход = 300

Итого по объекту 2 расход = 2100


Вопрос, как реализовать это?
В данный момент в запросе получается, что каждому счетчику соотвествует свой расход, но как их обработать, чтобы получился такой запрос и на его основе-отчет (см. Выше).

Второй путь - Разбить на 3 таблицы (Главная, Второстепенная, Третьестепенная) - но ведь счетчики обладают одними и теми же свойствами (тип счетчика, номер счетчика, показания на начало, показания на конец), сделав это мы нарушим правило нормализации, и как в этом случае получить нужный отчет.

Вобщем сломал голову :). Помогите, пожалуйста.

Прикрепил схему в jpeg
...
Рейтинг: 0 / 0
Период в базе учета эл.энергии
    #34131679
Фотография alexmsp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Похоже, мы становимся свидетелями начального этапа разработки нормальной коммерческой системы учета для РАО ЕЭС.
...
Рейтинг: 0 / 0
Период в базе учета эл.энергии
    #34131698
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
id, тип счетчика, номер счетчика, уровень счетчика, id счетчика предыдущего уровня.


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

id счетчика предыдущего уровня - берётся из этойте таблицы

новая таблица

id, id счетчика, показания , дата показаний


при таком можно и уровни добавлять и вычислять что угодно
...
Рейтинг: 0 / 0
Период в базе учета эл.энергии
    #34131701
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Id в первой таблице тип счетчик , вручную не вводятся
...
Рейтинг: 0 / 0
Период в базе учета эл.энергии
    #34131708
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
давай в Ебурге напишу такое.
...
Рейтинг: 0 / 0
Период в базе учета эл.энергии
    #34131718
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ЗЫ
только схема на рисунке составлена не верно
вводы не могут объединяться , хоть и должна существовать возможность их переключения
нада либо учитывать /снимать показания на момент переключения и соответственно на этоже время менять и учитывать это в ид счетчиках верхнего уровня
, либо учитывать показания счетчиков на вводах как один.
иначе будет путанца

второй вариант предпочтительней
...
Рейтинг: 0 / 0
Период в базе учета эл.энергии
    #34131733
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PS
так же нада учесть возможность смены счетчика, дата , показания. старого и нового
иначе смена счетчика приведет к бесполезности этого софта
...
Рейтинг: 0 / 0
Период в базе учета эл.энергии
    #34131908
rus_75
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
вадяЗЫ
только схема на рисунке составлена не верно
вводы не могут объединяться , хоть и должна существовать возможность их переключения
нада либо учитывать /снимать показания на момент переключения и соответственно на этоже время менять и учитывать это в ид счетчиках верхнего уровня
, либо учитывать показания счетчиков на вводах как один.
иначе будет путанца

второй вариант предпочтительней

Привет, земляк :)!

Схема составлена соотвествии с тем, как это делается в Свердловэнерго. Я это сейчас считаю в Excel - Ввод1+Ввод2 минус все остальное под ними. Главный вопрос - сколько энергии потребил объект, второстепенный по какому вводу :).
...
Рейтинг: 0 / 0
Период в базе учета эл.энергии
    #34131910
Фотография ILL HEAD
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 вадя
с тебя халявные зажыгалки от гаспрома ;)
...
Рейтинг: 0 / 0
Период в базе учета эл.энергии
    #34131937
rus_75
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
2 вадя
Вот прикрепил по твоему сценарию 2 таблицы.
Мне непонятно, как правильно создать запрос, учитывая уровни счетчиков.
уровень1 - это два ввода - счетчик 1 и счетчик 2 - они суммируются
уровень2 - это под счетчиком 1 установлены 2 счетчика - счетчик 1.1 и счетчик 1.2
уровень3 - это под счетчиком 1.1 установлен счетчик 1.1.1

В таблице, которую приложил, на втором уровне расход будет суммарный по счетчику 1.1 и счетчику 1.2, и от него будет вычитаться расход счетчика 1.1.1, что не правильно.
Так как расход счетчика 1.2 не должен добавляться к счетчику 1.1.
...
Рейтинг: 0 / 0
Период в базе учета эл.энергии
    #34134857
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
обрати внимание на изменения в таблице счетчики (последний столбец)
таблица исправлена в соответсвии с твоим рисунком, чтоб было нагляднее

создай заполни таблицу показания для приведенного рисунка. лучше дляя 3 произведенных снятий показаний (для каждого счетчика 4 записи в таблице показаний, 3 снятия + 1 начальное)

поставь задачу что нужно посчитать, вывести и т.д.

условность: все показания снимаются одновременно (т.е. сумма показаний нижнего уровн равна показаниям счетчика на уровень выше)
...
Рейтинг: 0 / 0
Период в базе учета эл.энергии
    #34134895
rus_75
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
вадя
условность: все показания снимаются одновременно (т.е. сумма показаний нижнего уровн равна показаниям счетчика на уровень выше)

В том то и дело, что например на счетчике 1.1- 600 кВт это суммарный расход по всем трем счетчикам - Счетчик 1.1.1 (200 кВт) + Счетчик 1.1.2 (300 кВт)=500 кВт, а 100 кВт - это расход по Счетчику 1.1 (600-500). Например, ситуация из жизни - есть головная подстанция (Счетчик 1 и Счетчик 2) -они считают общий расход по подстанции. От подстанции запитаны два завода, которые не принадлежат нашему предприятию (Счетчик 1.1 и Счетчик 1.2.). Этим заводам надо предъявить счет за ИХ электроэнергию (600 и 100 кВт). Но у завода 1 (счетчик 1.1) есть еще два предприятия, которым тоже надо выставить свой счет (на 200 и 300 кВт). Вот посчитав весь "левый расход" и отняв его от головного, узнаем - сколько же потребила наша подстанция на свои нужды.

Поэтому утверждение (т.е. сумма РАСХОДОВ нижнего уровня равна РАСХОДУ счетчика на уровень выше) неверно, так как разность расхода головных счетчиков минус расход подиненных- это собственный расход энергии на подстанции.

У меня на предприятии всего таких объектов 4 штуки, из них 3 штуки - имеют два уровня, и только один - 3 уровня, по которому я нарисовал схему.

Просто хочу сделать сразу такую стуктуру, которая бы учитывала все возможные варианты схем - универсальную. Если , допустим возникнет новый объект с несколькими уровнями вложения счетчиков, то просто в форме это было бы учтено.

У меня была мысль разбить на 2 или 3 базы, и просто считать каждый уровень в своей базе (в одной - только главные счетчики, во второй - второстепенные), но решил спросить у спецов, реально ли все это осуществить в одной базе
...
Рейтинг: 0 / 0
Период в базе учета эл.энергии
    #34135248
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
тогда возникаеи вопрос времкни снития показанийесли одновременно то так можно поступить
если с разницей внесколько часов - то показания не верны
тогда на рисунке нада показать ещё одну ветку пустую и для неё сформулировать метод получения показаний
первоначпльно из рисунка этого не видно

пожалуйста отобразите такой рисунок и продолжем дальше
...
Рейтинг: 0 / 0
Период в базе учета эл.энергии
    #34136010
rus_75
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Показания снимаются одновременно во всех случаях
...
Рейтинг: 0 / 0
Период в базе учета эл.энергии
    #34136157
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
это уже легче
с аськой как?
...
Рейтинг: 0 / 0
Период в базе учета эл.энергии
    #34136165
Фотография BULK INSERT
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вадято показания не верны


если идти от верхнего счетчика к нижним последовательно по узлам, то разночтения можно нивилировать до не существенных значений
...
Рейтинг: 0 / 0
Период в базе учета эл.энергии
    #34136364
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BULK INSERT вадято показания не верны


если идти от верхнего счетчика к нижним последовательно по узлам, то разночтения можно нивилировать до не существенных значений


ну это нада будет придумывать алгоритм, учитывать точность измерений счетчиков, и т.д.

на первом этапе нада построить работающую модель, причем с возможностью (пока только на уровне мыслей) рашеня дальнейших задач
...
Рейтинг: 0 / 0
Период в базе учета эл.энергии
    #34136599
rus_75
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ася 299442102, я тебе писал на аську в профиле, но она видимо не работает.
Спасибо.
...
Рейтинг: 0 / 0
Период в базе учета эл.энергии
    #34137744
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
работает, но только в рабочее время, я получил.
...
Рейтинг: 0 / 0
Период в базе учета эл.энергии
    #34139500
rus_75
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Как Вы показали в демо-таблице насчет записи ввода 1 и ввода 2 в одну запись - так не получится - надо вести учет расхода по всем физическим счетчикам, просто программно разделять их по уровням и, исходя из этого высчитывать расход косвенным методом с помощью запросов.
...
Рейтинг: 0 / 0
Период в базе учета эл.энергии
    #34139528
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
тогда у тебя должно быть два дерева - для каждого ввода
как утебя показано на рисунке - выходы счетчиков соединены - это не правильно
тогда в случае (если такое физически возможно) при переключении всего хозяйства на один ввод (аварийная ситуация) ты потеряешь все данные . т.к. на момент перекючения не будут сняты показания. или кто-то будет фиксировать показания счетчиков?


а то что у меня показано - вариант. Для облегчения (но это уже избыточность) можно ввести поле номер ввода, избыточным также является и хранение данных в поле расход - это поле вычисляемое по значениям в поле показания счетчиков.

я еще раз прошу : нарисуй новый рисунок, где будет присутствовать два дерева, пустая ветка имитирующая вертуальный счетчик (т.е. счетчик показания которого получаются вычислением)
тогда задача будет более формализована

вопросы
- возможны ли переключения с одного ввода на другой и обратно?
если да - как при этом будут учитываться показания?
- как учитывается точность при измерениях?
с большей степенью вероятности можно сказать что сумма счетиков нижнего уровня не будет равна показаниям счетчика верхнего уровня (не считая варианта с виртуальным счетчиком)
- как планируется вести учет смены счетчиков?

у тебя аська в рабочее время фунциклирует?
...
Рейтинг: 0 / 0
Период в базе учета эл.энергии
    #34139758
rus_75
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
вадятогда у тебя должно быть два дерева - для каждого ввода
как утебя показано на рисунке - выходы счетчиков соединены - это не правильно
тогда в случае (если такое физически возможно) при переключении всего хозяйства на один ввод (аварийная ситуация) ты потеряешь все данные . т.к. на момент перекючения не будут сняты показания. или кто-то будет фиксировать показания счетчиков?

В учете электроэнергии такое соединение является ПРАВИЛЬНЫМ, так как энергосбыту по барабану с какого ввода ты потребил, в документах эти ввода проходят как одная точка и расход по двум счетчикам суммируется, т.е. в отчете ты показываешь расход обоих вводов, допустим, если один ввод не работает, то расход будет равен Ввод1+Ввод2 (0).


а то что у меня показано - вариант. Для облегчения (но это уже избыточность) можно ввести поле номер ввода, избыточным также является и хранение данных в поле расход - это поле вычисляемое по значениям в поле показания счетчиков.

я еще раз прошу : нарисуй новый рисунок, где будет присутствовать два дерева, пустая ветка имитирующая вертуальный счетчик (т.е. счетчик показания которого получаются вычислением)
тогда задача будет более формализована

вадявопросы
- возможны ли переключения с одного ввода на другой и обратно?
если да - как при этом будут учитываться показания?
- как учитывается точность при измерениях?
с большей степенью вероятности можно сказать что сумма счетиков нижнего уровня не будет равна показаниям счетчика верхнего уровня (не считая варианта с виртуальным счетчиком)
- как планируется вести учет смены счетчиков?

Ответы:
- переключения возможны, но это неважно - показания снимаются один раз в месяц, и без разницы по какому вводу ты потребил - они суммируются, в таблицах счетчиков надо ввести такое поле, чтобы запрос при обработке видел, какие счетчики работаю в паре на первом уровне(ввод1 и ввод2), суммировал их и вычитал подчиненные счетчики. Например запрос считающий первый уровень - он просмотрел все записи и увидел, что счетчиков первого уровня 6 штук, допустим ОБЪЕКТ 1 (ввод1 +ввод2), ОБЪЕКТ 2 (ввод 1, второго ввода нет), Объект3 (ввод1 второго ввода нет), ОБЪЕКТ 4 (ввод1 +ввод2).
Далее этот же запрос, или другой запрос подсчитал сколько счетчиков в подчинении есть у каждого из этих объектов и какие из них принадлежат каждому объекту - вычислил их расход.

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

Четвертый запрос(Расход) = Запрос первого уровня - Запрос второго уровня -Запрос третьего уровня.

2. Точность такая, расход нижнего уровня почти всегда меньше расхода первого уровня, поэтому разница между первым и вторым уровнем является расходом певого уровня, посчитанным косвенным методом.

3. Допустим имеет место замены счетчика (любого), допустим в середине ноября месяца. Просто пишем ему показания на ноябрь месяц как конечные (начальные за октябрь у нас есть). Далее вводим новый счетчик (пишем ему имя ввод3), пишем ему его начальные показания как начальные показания на октябрь и также конечные показания на ноябрь.
вводится новый счетчик

вадяу тебя аська в рабочее время фунциклирует?
Да уже включена:)
...
Рейтинг: 0 / 0
Период в базе учета эл.энергии
    #34140042
Zalagaev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rus_75Спасибо, большое, привет передам, тока я работаю в Газпроме, и не могут мне дать нормального программера для написания проги по учету электроэнергии - вот сам взялся, тока VBA - пока темный лес.
Да-уж

Я вот BP работаю - такая ж история:))
...
Рейтинг: 0 / 0
Период в базе учета эл.энергии
    #34140073
Фотография simply
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Есть очень хорошая программа по учету эл.энергии сдаланная в Access и выложеная и инете как пример. Правда не помню где она лежит. Это классный пример для учебы. Если нужно то она у меня есть, могу переслать как образец.
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
Период в базе учета эл.энергии
    #39136672
ЮраСка
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
SNiL, доброго времени суток!

Если есть возможность помогите пожалуйста :)
В продолжение этой темы... Подобная база данных с показаниями счетчиков показания со счетчиков пишутся в базу каждую минуту.
Необходимы запросы:
1. с выборкой по датам, например, с 03.12.2015 по 24.12.2015
Дата (в нашем случае каждая дата из диапазона) | Начальные показания на эту дату | Конечные показания на эту дату | Количество(конечн. - нач.)
Вся загвоздка в том, что между датами получается перелет по показаниям... :( а нужно, чтобы начальные показания "становились"(были) конечными из предыдущей даты.

2. Подобный запрос за сутки в разрезе по часам, то есть с 0 до 23
Номер часа | Начальные показания на этот час | Конечные показания на этот час | Количество (Конечн. - начальн)
Тут все тоже самое... :( получается перелет и нужно тоже самое, чтобы начальные становились конечными из прошлого часа

В чем заключается "перелет": Показания в базу пишутся с интервалом в минуту (пишутся в 5-ю секунду каждой минуты, но не в этом суть :) ) это выглядит так:
23.12.2015 23:59:05 | 57849
24.12.2015 00:00:05 | 57855
и т.д.

и получается что если в запросе брать максимум на 23.12.2015 то это будет 57849, а минимум на 24.12.2015 будет 57855 и в связи с этим не будет учитываться уже целых 6 единиц в итоговой сумме запроса...

тоже самое в запросе за сутки по часам...

Тут в этой теме есть код запроса...с примерно похожей ситуацией... но как то не получается у меня применить этот код и адаптировать под себя...
Будьте добры... разъясните пожалуйста или помогите разобраться на нашем примере...
К сожалению файлы прикрепить не могу тут... т.к. размер баз около чуть меньше 10 мб. (базы могу переслать на почту).

ЗАРАНЕЕ ОЧЕНЬ БЛАГОДАРЕН!!!
...
Рейтинг: 0 / 0
Период в базе учета эл.энергии
    #39137690
ЮраСка, как вариант.
Результирующий запрос
Код: sql
1.
2.
3.
SELECT Q1.bp AS Дата, Q1.ind AS [Начальное показание], Q2.ind AS [Конечное показание], 
       [Конечное показание]-[Начальное показание] AS Количество
FROM Q AS Q1 INNER JOIN Q AS Q2 ON Q1.n=Q2.n-1


в котором используется запрос Q
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
PARAMETERS BegPer DateTime, EndPer DateTime, StepPer Text ( 255 );
SELECT Nz(T.Indicat,0) AS ind, Z.n, Z.bp
FROM Tab AS T RIGHT JOIN 
(SELECT D.n, D.bp, Max(T.DatTim) As mdt
FROM Tab As T RIGHT JOIN
(SELECT (D2.digit & D1.digit & D0.digit)+0 As n, 
DateAdd(StepPer, n, BegPer) AS bp
FROM Digits AS D0, Digits AS D1, Digits AS D2
WHERE (D2.digit & D1.digit & D0.digit)+0<= (EndPer-BegPer+1) *IIf(StepPer='h', 24, 1))  AS D
ON T.DatTim<D.bp
GROUP BY D.n, D.bp) AS Z ON T.DatTim=Z.mdt


где Tab - исходная таблица с полями DatTim (дата+время показания) и Indicat (покfзание);
параметры: BegPer - дата начала периода, EndPer - дата окончания периода, StepPer - шаг по периоду (h - час, d - день);
запрос Digits смотреть здесь 5414410
...
Рейтинг: 0 / 0
Период в базе учета эл.энергии
    #39137745
ЮраСка
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
-Практикант-,

Спасибо большое за пример!

Если позволите, выложу структуру своей базы... Если не трудно, подскажите пожалуйста на моем примере...
к сожалению не могу базу выложить целиком - уже около 10 мб.

Попробую выложить скрины таблицы, из которой нужно сделать выборку...
...
Рейтинг: 0 / 0
Период в базе учета эл.энергии
    #39138090
SNiL
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ЮраСкаи получается что если в запросе брать максимум на 23.12.2015 то это будет 57849, а минимум на 24.12.2015 будет 57855 и в связи с этим не будет учитываться уже целых 6 единиц в итоговой сумме запроса...
ух ты, я бы и не заметил тему, сейчас больше в профильном пт бываю, чем в аксе :)
а зачем вам минимум на 24? вам нужен максимум на 23, вообще-то...
т.е. вам необходимо узнать расход с 21 по 24. тогда вы берёте максимум за 24 и отнимаете он него максимум за 20 число .
а скриншот ваш я вообще не понял. там у вас куча ключей, в значении которых никто кроме вас не разберётся.
и ещё вопрос, для повышения образованности, зачем вам такой короткий интервал при снятии значений? расчётный час всё равно ведь больше, скорее всего.

p.s. елки-палки десять лет уже прошло как я в теме писал.... пипец какой я старый :(
...
Рейтинг: 0 / 0
Период в базе учета эл.энергии
    #39138442
ЮраСка
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
SNiL,

Дело в том что нужно именно по датам знать количество...чтобы видеть если есть отклонения... Это счетчики подпиточной воды... В сутки расход по ГВС примерно около 1000 кубов... Есть еще несколько подобных счетчиков... Там суть та же...
Таким образом смотрим несколько суток, видим например 23го 1500 кубов, далее открываем эти сутки в разрезе по часам... И уже видим примерно когда большой расход...
Лично мне бы хватило того что вы предлагаете, но эксплуатации этого мало :)

А для полного решения моего опыта мало :)

Тут описано немного побольше и http://www.sql.ru/forum/1192426/zadachka-s-podschetom-pokazaniy-so-schetchikov-pomogite-reshit там вы уже были :)
...
Рейтинг: 0 / 0
Период в базе учета эл.энергии
    #39138456
ЮраСка
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
SNiL,

А в скрине я чуток ошибся...

Вообще для расчётов берутся 4 поля :
ДатаИВремя
ТэгИндекс (номер счётчика)
Вал (значение по показаниям счетчика)
Маркер (поле куда пишется маркер работы счётчика. В - в работе, Е - еррор.)

Как то так...
...
Рейтинг: 0 / 0
Период в базе учета эл.энергии
    #39138467
SNiL
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ЮраСкаSNiL,

Дело в том что нужно именно по датам знать количество...чтобы видеть если есть отклонения... Это счетчики подпиточной воды... В сутки расход по ГВС примерно около 1000 кубов... Есть еще несколько подобных счетчиков... Там суть та же...
Таким образом смотрим несколько суток, видим например 23го 1500 кубов, далее открываем эти сутки в разрезе по часам... И уже видим примерно когда большой расход...
Лично мне бы хватило того что вы предлагаете, но эксплуатации этого мало :)

А для полного решения моего опыта мало :)

Тут описано немного побольше и http://www.sql.ru/forum/1192426/zadachka-s-podschetom-pokazaniy-so-schetchikov-pomogite-reshit там вы уже были :)я все равно не могу понять в чем проблема? нужно по суткам - выбираем по суткам, нужно по часам- то же самое. главное принцип - начальными показаниями будет максимальное (точнее последнее) значение предыдущего интервала. в чем конкретно проблема?
...
Рейтинг: 0 / 0
Период в базе учета эл.энергии
    #39138529
ЮраСка
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
SNiLЮраСкаSNiL,

Дело в том что нужно именно по датам знать количество...чтобы видеть если есть отклонения... Это счетчики подпиточной воды... В сутки расход по ГВС примерно около 1000 кубов... Есть еще несколько подобных счетчиков... Там суть та же...
Таким образом смотрим несколько суток, видим например 23го 1500 кубов, далее открываем эти сутки в разрезе по часам... И уже видим примерно когда большой расход...
Лично мне бы хватило того что вы предлагаете, но эксплуатации этого мало :)

А для полного решения моего опыта мало :)

Тут описано немного побольше и http://www.sql.ru/forum/1192426/zadachka-s-podschetom-pokazaniy-so-schetchikov-pomogite-reshit там вы уже были :)я все равно не могу понять в чем проблема? нужно по суткам - выбираем по суткам, нужно по часам- то же самое. главное принцип - начальными показаниями будет максимальное (точнее последнее) значение предыдущего интервала. в чем конкретно проблема?

Теорию то я прекрасно понимаю :)
Проблема в грамотно написании кода, или запросов... В связи с отсутствием опыта...
...
Рейтинг: 0 / 0
57 сообщений из 57, показаны все 3 страниц
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Период в базе учета эл.энергии
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]