Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Прочее";
Текущий архив: 2008.12.07;
Скачать: [xml.tar.bz2];

Вниз

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

 
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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.49 MB
Время: 0.004 c
2-1225181892
Начинающий92
2008-10-28 11:18
2008.12.07
Сортировка StringList


15-1222931778
JohnKorsh
2008-10-02 11:16
2008.12.07
Вопрос по работе с сетью.


2-1225142982
MsGuns
2008-10-28 00:29
2008.12.07
"Цветные" проблемы


2-1225113127
Nil
2008-10-27 16:12
2008.12.07
Зашифровать содержимое TStringList


2-1225089628
Гость
2008-10-27 09:40
2008.12.07
Нетипизированный файл.





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский