Форум: "Прочее";
Текущий архив: 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