Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2008.12.07;
Скачать: CL | DM;

Вниз

Перескок счетчиков.   Найти похожие ветки 

 
int64   (2008-10-03 13:36) [0]

Совсем парюсь.
У меня есть предыдущее показание счетчика (99981) и текущее (241). Т.е. отмотано 260.
Проблема в том, что разрядность счетчиков неизвестна. Может быть и (99945), а может быть и (999342343). Но зато есть флаг о том, что был перескок.
Так вот, как мне узнать: сколько отмотано, с учетом перескока?


 
Василий Жогарев ©   (2008-10-03 13:39) [1]

--SELECT [dbo].[fnR] (100, 100, 6) fn
ALTER FUNCTION [dbo].[fnR] (@Pok int, @Ppok int, @Zc int)  
RETURNS int AS  
BEGIN
 DECLARE
   @R int

 IF @Pok > @Ppok SET @R = @Pok - @Ppok
 ELSE IF @Pok < @Ppok SET @R = POWER(10, @Zc) + @Pok - @Ppok
 ELSE SET @R = 0 --POWER(10, @Zc)

 RETURN @R
END


 
Vlad Oshin ©   (2008-10-03 13:40) [2]

имхо, никак


 
int64   (2008-10-03 13:42) [3]

Василий Жогарев ©   (03.10.08 13:39) [1]

Тут заранее известна разрядность.


 
Василий Жогарев ©   (2008-10-03 13:43) [4]


> разрядность счетчиков


Наверное ты имел введу значность ?


> 999342343


Скорее всего, если счетчик электричества, значность не больше 6- ти...


 
Василий Жогарев ©   (2008-10-03 13:47) [5]


> int64   (03.10.08 13:42) [3]
> Василий Жогарев ©   (03.10.08 13:39) [1]
>
> Тут заранее известна разрядность.


У тебя же есть предыдущие показания (99981), тогда вероятней всего, что значность равна 5 - ти...

Если нет коэффициента (1), если есть то расход * коэф. и только оттуда выкручивать...


 
KSergey ©   (2008-10-03 13:49) [6]

Если есть вероятность того, что между съемом показаний возможна ситуация, что счетчик "накрутит" на самом старшем разряде (и перед ним) от 0 до 9 и перейдет далее - то, очевидно, это невозможно узнать. Необходимо увеличивать частоту съема чтобы такого не происходило.


 
int64   (2008-10-03 13:52) [7]

2 Василий Жогарев ©   (03.10.08 13:47) [5]
Все счетчики разные.

KSergey ©   (03.10.08 13:49) [6]
Можно упростить: старший заполненный разряд и есть значность.

2 Василий Жогарев ©   (03.10.08 13:39) [1]
Спасибо,
У меня задача свелась к след.:
Как на SQL узнать к-во цифр в числе (dec)


 
Василий Жогарев ©   (2008-10-03 13:52) [8]


> Проблема в том, что разрядность счетчиков неизвестна.


А как такое может быть ???


 
int64   (2008-10-03 13:55) [9]


> > Проблема в том, что разрядность счетчиков неизвестна.
>
>
> А как такое может быть ???

Такое есть.


 
Vlad Oshin ©   (2008-10-03 13:55) [10]


> Как на SQL узнать к-во цифр в числе (dec)

Cast к строке, длинна строки
нет MSSQL под рукой..


 
Василий Жогарев ©   (2008-10-03 14:01) [11]

LEN(CAST(@N AS nvarchar(6))) AS fn

Или я не понял...


 
Василий Жогарев ©   (2008-10-03 14:11) [12]


> int64


А расходом располагаешь ?


 
int64   (2008-10-03 14:50) [13]

Vlad Oshin ©   (03.10.08 13:55) [10]
Василий Жогарев ©   (03.10.08 14:01) [11]
Вообще-то,
Int(Log10(X)) + 1


 
Правильный$Вася   (2008-10-03 15:35) [14]

а если перескок был дважды?
а флаг-то булевый....


 
wicked ©   (2008-10-03 16:32) [15]


> Проблема в том, что разрядность счетчиков неизвестна. Может
> быть и (99945), а может быть и (999342343). Но зато есть
> флаг о том, что был перескок.
> Так вот, как мне узнать: сколько отмотано, с учетом перескока?

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

если же хотите работать с такими данными, то упретесь в принцип GIGO - garbage in - garbage out

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


 
KSergey ©   (2008-10-03 17:07) [16]

> int64   (03.10.08 13:52) [7]
> Можно упростить: старший заполненный разряд и есть значность.

Тогда я не понял в чем собственно вопрос.
Или в том как это на SQL оформить??


 
int64   (2008-10-03 17:17) [17]


> > int64   (03.10.08 13:52) [7]
> > Можно упростить: старший заполненный разряд и есть значность.
>
>
> Тогда я не понял в чем собственно вопрос.
> Или в том как это на SQL оформить??


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


 
Василий Жогарев ©   (2008-10-06 12:01) [18]


> Правильный$Вася   (03.10.08 15:35) [14]
> а если перескок был дважды?
> а флаг-то булевый....


За "3 года" вероятно да, за месяц нет !


> задача решения не имеет, не мучайся, так и скажи начальству
> пусть напрягают контроллеров и выясняют типы счетчиков
>
> если же хотите работать с такими данными, то упретесь в
> принцип GIGO - garbage in - garbage out


Совершенно верно !


 
Правильный$Вася   (2008-10-06 16:03) [19]


> За "3 года" вероятно да, за месяц нет !

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


 
boriskb ©   (2008-10-06 16:26) [20]

Писал в свое время учет эл.энергии.

В базе обязано быть поле "тип счетчика" и таблица "справочник счетчиков" с их разрядностью
Иначе рано или поздно уткнешься обязательно.

Это если конечно про такие счетчики...



Страницы: 1 вся ветка

Текущий архив: 2008.12.07;
Скачать: CL | DM;

Наверх




Память: 0.51 MB
Время: 0.017 c
2-1224830949
AlekseyB
2008-10-24 10:49
2008.12.07
Как загрузить файл в ListBox ???


15-1223278720
tubik
2008-10-06 11:38
2008.12.07
поделитесь книгой, пожалуйста


15-1220124057
KilkennyCat
2008-08-30 23:20
2008.12.07
Кто-нибудь, или знакомые кого-нибудь не сдают ли квартиру около


15-1221852310
DevilDevil
2008-09-19 23:25
2008.12.07
один svchost.exe жрёт процессор. Что делать ?


2-1225037381
redlord
2008-10-26 19:09
2008.12.07
потоко независимые классы