powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Сортировка (с конца одного поля на начало другого)
20 сообщений из 45, страница 2 из 2
Сортировка (с конца одного поля на начало другого)
    #32548660
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Попробуй
...
Рейтинг: 0 / 0
Сортировка (с конца одного поля на начало другого)
    #32548687
vl2000
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
>мимопрох..
беру свои слова обратно, просмотрел третье выражение в ORDER BY
...
Рейтинг: 0 / 0
Сортировка (с конца одного поля на начало другого)
    #32548699
vl2000
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
а для 3-х показаний?
20 40
40 90
25 30 (переход через 0)
...
Рейтинг: 0 / 0
Сортировка (с конца одного поля на начало другого)
    #32548705
Фотография Johnmen
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мим
CASE
WHEN (T.F2 > T.F1) THEN 1
ELSE -1
END,
T.F1

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
 /*Должно быть вот так*/ 
янв2004  9960    9995 
фев2004  9995    50   
фев2004  50      200  
мар2004  200     350 
апр2004  350     450 
апр2004  450     600 

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
У тебя
фев2004  9995    50   - 1 
фев2004  50      200    1  
мар2004  200     350    1 
апр2004  350     450    1 
апр2004  450     600    1 
янв2004  9960    9995     1 

...
Рейтинг: 0 / 0
Сортировка (с конца одного поля на начало другого)
    #32548710
vl2000
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
>Johnmen
нет, там вначале по месяцу идет сортировка
...
Рейтинг: 0 / 0
Сортировка (с конца одного поля на начало другого)
    #32548718
Фотография Zmeishe
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сделал.
На клиенте есть цикл по всему НД - для доп. вычислений и марафета. Как я писал всего 30-40 записей поэтому мгновенно.
Добавил в НД одно служебное поле NUM и в этот цикл впихнул условие из идеи Мима.

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
if(cdsFaceAccountST_COUNTER->Value > cdsFaceAccountEN_COUNTER->Value)
      cdsFaceAccountNUM->Value =  0 ;
else cdsFaceAccountNUM->Value =  1 ;

cdsFaceAccount->IndexFieldNames = "PAYMENT_MONTH;EN_DATE_COUNTER;NUM;ST_COUNTER";
PAYMENT_MONTH - Месяц 
EN_DATE_COUNTER - Дата снятия счётчика (для ныне действующего '01.01.5941');
NUM - Это самое служебное для сортировки на момент полного оборота
ST_COUNTER - Начальные показания счётчика
Всё получилось. Два и более полных оборотов за месяц - да бог с ними. Абонент ни в жизнь не покажет больше одного. Он что дурак платить за два оборота, когда можно за один. Оно же не доказуемо.
Спасибище всем потратившим на меня время.
...
Рейтинг: 0 / 0
Сортировка (с конца одного поля на начало другого)
    #32548724
Фотография Johnmen
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
>vl2000
>нет, там вначале по месяцу идет сортировка
&
>Те, кто в танке

Это НЕ ИМЕЕТ ЗНАЧЕНИЯ !
См. по-другому:

Код: plaintext
1.
2.
3.
4.
5.
6.
 /*Должно быть вот так*/ 
янв2004  9960    9995 
янв2004  9995    50   
янв2004  50      200  
янв2004  200     350 
янв2004  350     450 
янв2004  450     600 

...
Рейтинг: 0 / 0
Сортировка (с конца одного поля на начало другого)
    #32548727
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2Johnmen: ты наверное не мой запрос выполнял
...
Рейтинг: 0 / 0
Сортировка (с конца одного поля на начало другого)
    #32548730
Фотография Johnmen
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
>Мим

Твой твой ! Для данных, приведенных выше.
...
Рейтинг: 0 / 0
Сортировка (с конца одного поля на начало другого)
    #32548741
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Как занятно, у тебя данные
Код: plaintext
1.
2.
3.
4.
5.
янв2004  9960    9995 
фев2004  9995    50   
фев2004  50      200  
мар2004  200     350 
апр2004  350     450 
апр2004  450     600 
превратились вдруг в
Код: plaintext
1.
2.
3.
4.
5.
янв2004  9960    9995 
янв2004  9995    50   
янв2004  50      200  
янв2004  200     350 
янв2004  350     450 
янв2004  450     600 
...
Рейтинг: 0 / 0
Сортировка (с конца одного поля на начало другого)
    #32548754
Фотография Johnmen
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Не надо прикидываться дурачком
Я надеюсь, ты всё прекрасно понял...
...
Рейтинг: 0 / 0
Сортировка (с конца одного поля на начало другого)
    #32548765
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Не-а. Я никуя не понял.
Змей задачу поставил? Поставил.
Я задачу решил? Решил.
И фули?
...
Рейтинг: 0 / 0
Сортировка (с конца одного поля на начало другого)
    #32548775
Фотография Zmeishe
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну, вообще-то да
Код: plaintext
1.
2.
3.
 Если этот гадёныш всю кучу квитанций в один месяц, то будет именно так
янв2004  9995    50      0 
янв2004  50      200     1 
янв2004  9960    9995    1 
...
Рейтинг: 0 / 0
Сортировка (с конца одного поля на начало другого)
    #32548780
Фотография Zmeishe
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Гадёныш — это абонент.
...
Рейтинг: 0 / 0
Сортировка (с конца одного поля на начало другого)
    #32548844
vl2000
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
не, тут надо вводить дату показания.
если есть показание счетчика, значит есть и дата, когда это показание сняли.
Есть дата, можно отсортировать.
...
Рейтинг: 0 / 0
Сортировка (с конца одного поля на начало другого)
    #32548889
Фотография Zmeishe
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
>не, тут надо вводить дату показания
Обьясни это абонентам - у меня их 1`500`000 чел.
Выдай инструкцию каждому. Типа если вы хотите один месяц оплатить разными квитанциями, то сначала отсортируйте эти квитанции по показаниям счётчика, а затем проставьте разные даты тоже в порядке возрастания.
Уверяю тебя - им насрать на наши неудобства. Поэтому рулить придёться математически. Надо изобрести доп параметр - будем изобретать. Но только служебные доп параметры. Чтобы в квитанциях ничего лишнего для населения не было.
...
Рейтинг: 0 / 0
Сортировка (с конца одного поля на начало другого)
    #32548914
Фотография Мигалка
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
им насрать на наши неудобства - подтверждаю!

Абонент

:)
...
Рейтинг: 0 / 0
Сортировка (с конца одного поля на начало другого)
    #32582293
Андрей12345
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Привет, коллеги!

Я тоже работаю в энергетике. Для своего отдела сбыта написал простенькую программку по обсчёту частников. Могу поделиться, если это кому-нибудь нужно. Правда, писал на связке Линтер/ЛАБ - дабы побыстрее заткнуть проблемный участок. А теперь потихоньку перевожу всесь комплекс сбыта электоэнергии (отделы договорной/частники/промсектор) на ФБ/Дельфи, на полноценную КИС.

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

Самое первая колонка "Картины расчётов" - флаг расчитанных записей. То есть вся картина делится как бы на две части: нижняя часть, отмеченная галочками в первой колонке - расчитанные записи; верхняя часть - нерасчитанные записи (галочки не выставлены). Потребление расчитывается очень просто, как разница текущих и предыдущих показаний. Соответственно, как только появилась расчитанная запись, на основании расчитанного потребления вычисляется стоимость (общая/льготная и т.д.), определяется сумма к оплате и т.д. Как только в любую запись вносится какое-либо изменение (изменение/добавление/удаление записи), то данная запись и все последующие сбрасывают флаг "Запись расчитана". На печать выдаются только расчитанные записи, то есть показанная на картинке квитанция получается только на основании расчитанной записи о потреблении (в данном случае - от 29.06.2001).

Скриншот можно посмотреть вот тут: http://tpaktop040310.pochta.ru/kr2.jpg

На картинке последняя колонка, "Долг", показывает задолженность потребителя перед поставщиком красным цветом, а переплату ("предоплату") - черным. Обратите внимание, что самая верхняя строка потребления, с датой 28.07.2002, пока ещё не расчитана и поэтому в колонках Расход, Стоимость, Оплата, Долг нет никаких цифр и галочка в самой первой колонке не проставлена.

Такая структура данных позволила отказаться от избыточных записей типа "Месяц - Предыдущие показания - Текущие показания". Мной использована более простая и надёжная структура "Дата - Показания".

Таким образом, "Картина расчётов" показывает всю историю взаимоотношений потребителя и абонента (клиента) - установку и снятие Аппарата Учёта (счётчик/по среднему), назначение льгот, потребления и оплаты и т.д. Самое главное - в любой момент постояно можно видеть картину изменения долга потребителя, то есть легко вычисляется кто есть кто - "злостный" задолженник или честный плательщик.
...
Рейтинг: 0 / 0
Сортировка (с конца одного поля на начало другого)
    #32582346
Фотография Zmeishe
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Привет. Ты из какого Энерго? Я собираю такие где используют IB/FB. В нашем полку г. Владимир, г. Cаратов, вполне возможно г. Тамбов.

авторПотребление расчитывается очень просто, как разница текущих и предыдущих показаний.
Тебе повезло, либо у тебя абоненты дисциплинированные как немцы и аккуратно указывают показания счётчика, либо твоё Энерго уже перешло на технологию выставления счетов, когда за абонента показания указывают обходчики. А мои могут вообще никаких показаний не указывать, только сумму. Либо указывают, но мне пришлось создать такую математику, которая перед вставкой в таблицу анализирует какое из них начальное, а какое конечное.
"Крышу сносит неспеша"

В общем я пришёл к выводу, что такая сортировка похожа на обработку деревовидной структуры. Начальное показание это ID, конечное - ID_PARENT. Обработка "дырок", когда квитанция потеряна, это доп. условия.
...
Рейтинг: 0 / 0
Сортировка (с конца одного поля на начало другого)
    #32584373
Андрей12345
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Привет!

ZmeisheТы из какого Энерго? Я собираю такие где используют IB/FB. В нашем полку г. Владимир, г. Cаратов, вполне возможно г. Тамбов.
г. Петропавловск-Камчатский

Zmeishe авторПотребление расчитывается очень просто, как разница текущих и предыдущих показаний.
Тебе повезло, либо у тебя абоненты дисциплинированные как немцы и аккуратно указывают показания счётчика, либо твоё Энерго уже перешло на технологию выставления счетов, когда за абонента показания указывают обходчики.
У нас показания снимают контролеры, т.к. основная масса счётчиков находятся вне квартир, на лестничных площадках. Те потребители, у кого счётчик внутри квартиры, сами приносят показания. Периодически их проверяют контролеры.

ZmeisheА мои могут вообще никаких показаний не указывать, только сумму. Либо указывают, но мне пришлось создать такую математику, которая перед вставкой в таблицу анализирует какое из них начальное, а какое конечное.
Нужно просто приучить потребителей, что каждый месяц, с немецкой точностью :-) к ним в почтовый ящик падает квиток с расчетом - потребление, стоимость, оплачено за период, итого к оплате. И они наглядно видят, как с каждым месяцем у них в квитках накапливается/уменьшается долг. Так что у нас потребители могут платить любую сумму - хоть несколько раз в день приносить по 100 рублей, хоть один раз в год заплатить 10 тысяч, это непринципиально.

Я думаю, что такие проблемы, как у тебя надо решать не программными средствами, а организационными, т.е. выстраивать работу с абонентами по определённым правилам. Например, так: в договоре указывается, что если у потребителя квартирный счётчик, то ему назначается некое потребление по среднему. Если абонент не предоставил в отдел сбыта к определённому числу показания своего счётчика, то за этот период ему начисляется потребление, установленное по договору. То есть абонент может пол-года не появляться в отделе сбыта, а потребление ему всё равно начисляется. Нужно приучать к порядку! 8-)

Zmeishe"Крышу сносит неспеша"

В общем я пришёл к выводу, что такая сортировка похожа на обработку деревовидной структуры. Начальное показание это ID, конечное - ID_PARENT. Обработка "дырок", когда квитанция потеряна, это доп. условия.
Чем сложнее логика, тем больше вероятности появления хитрой ошибки. У меня всё гораздо проще, логика чисто линейная. Если по какой-либо причине пропущена запись потребления, то абонент не получит квитанцию с расчётом, а на следующий месяц ему придёт квитанция, в которой автоматически накопилось потребление уже за два месяца (Операторы делают круглые глаза и уверяют клиента, что он сам должен следить за сохранностью своего почтового ящика :) ).

И вообще, я принципиально стою на позиции "в БД вносятся только фактические данные". То есть в программе абсолютно не должно допускаться никаких догадок и остроумных "обратных" расчётов, типа вычисления показаний счетчика по внесённой сумме оплаты...

Логика должна быть железная и только однонаправленная:

Очередные показания аппарата учёта => Вычисление потребления => Вычисление стоимости потреблённой энегрии => Отнять льготы/Добавить долги => Итого к оплате

Иначе это будет не производство, а бардак.
...
Рейтинг: 0 / 0
20 сообщений из 45, страница 2 из 2
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Сортировка (с конца одного поля на начало другого)
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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