On-line: гостей 1. Всего: 1 [подробнее..]
АвторСообщение
постоянный участник




Пост N: 1265
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 30.04.10 10:34. Заголовок: Как сделать программу 64битной ?


Всем привет !
Только не пинайте сильно за вопрос... Пока только разбираюсь....

Как готовое приложение под хХарбором (терминалка) пересобрать на 64bit под новые системы Win 7 ?
Оно конечно и так там работает, но хотелось бы узнать что это даст ?

Спасибо: 0 
ПрофильЦитата Ответить
Ответов - 57 , стр: 1 2 3 All [только новые]


постоянный участник




Пост N: 1949
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 05.12.11 21:29. Заголовок: Pasha пишет: Каким ..


Pasha пишет:

 цитата:
Каким методом выбираются оплаты ?


Andrey пишет:

 цитата:
По ID-абонента, seek-ом иду на БД-оплаты-20хх года.



SELECT PLATA2011
DBSETORDER(1)
GOTO TOP
SEEK (ID-абонента)

Pasha пишет:

 цитата:
Что записывается в оплаты и как, каким методом ?


После расчета, запись массива WritDimDbf(aMassiv,.F., @cError)
Скрытый текст


Забыл еще уточнить.
Сумма начислений (приход денег и начисления денег и долг) по каждому абоненту еще сохраняются и отдельно по каждому подъезду, за каждый месяц заносятся в БД-Договоров.




Спасибо: 0 
ПрофильЦитата Ответить
Администратор




Пост N: 2186
Зарегистрирован: 23.05.05
ссылка на сообщение  Отправлено: 05.12.11 22:45. Заголовок: Я уже устал напрягат..


Я уже устал напрягать свои и без того неразвитые телепатические способности :)
Итак, что же мне удалось расшифровать:
Имеется широоооокая таблица (не БД, давай все-таки использовать общепринятую, а не безграмотную терминологию) абонентов, назовем ее TA.
Что хранится в ТА ? Все данные со всеми начислениями за все годы ? В чем заключается расчет ?
Имеется какая-то таблица тарифов (назовем ее TT). Какова ее структура ? Что там, виды услуг, тарифы с изменением по периодам времени ? Как из нее выбираются записи ?
Тарифы выбираются в основном цикле по абонентам ?
Имеется таблица оплат (назовем ее TO aka PLATA2011). Она хранит в одной записи все оплаты абонента за 10 лет по месяцам ? Или за 1 год ?
Что такое 30 ? В приведенной процедуре просто сбрасывается какая-то одна запись.
Зачем выполняется магическое действие сначала считывания из таблицы в массив, а затем запись из массива в таблицу каких-то данных ? Это одни и те же данные ? Зачем их гонять туда-сюда ?
Что и как хранится отдельно по каждому подьезду и заносится в, хм, БД, Договора ?
Для чего ты собрался использовать hbmemio ? Вместо массива 12*30, что ли ? Так это же полный абсурд.
Андрей, моих способностей гадалки, телепата и экстрасенса недостаточно. Если хочешь какой-то помощи - подробно опиши свой алгоритм, со всеми выполняемыми действиями.
Ну а нет - так нет.

Пару слов про использование массива.
1. В цикле можно использовать промежуточную переменную:

amj := aMassiv[nJ]

и затем вместо aMassiv[nJ,A_TARIF] использовать amj[A_TARIF], и так для всех 12-ти элементов

2. Поскольку для расчета всех абонентов используется массив одинакового размера, его можно не
создавать/уничтожать для каждого абонента, а использовать один и тот же, просто перекрывая данные.
Это позволит избежать несколько десятков тысяч операций создания/уничтожения.

Впрочем, думается, это даст немного. Узкое место еще ведь не выяснено.
Хотя, конечно, можно использовать чудесный "метод подитогов" из 1С. Это сразу волшебным образом сократит время всего расчета до 1-й секунды.


Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 1950
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 06.12.11 00:08. Заголовок: Pasha пишет: Я уже ..


Pasha пишет:

 цитата:
Я уже устал напрягать свои и без того неразвитые телепатические способности :)


Ну извини, не хотел сильно нагружать !

Pasha пишет:

 цитата:
Имеется таблица оплат (назовем ее TO aka PLATA2011). Она хранит в одной записи все оплаты абонента за 10 лет по месяцам ? Или за 1 год ? Что такое 30 ? В приведенной процедуре просто сбрасывается какая-то одна запись.



Одна запись хранит приходы денег, даты прихода денег, даты начисления и сумму начисления и т.д. за ОДИН год.
30 записей за год (т.к. я писал ранее про "ерунду" творящуюся при перечислении денег) и 12 записей не хватает на год.

Pasha пишет:

 цитата:
Зачем выполняется магическое действие сначала считывания из таблицы в массив, а затем запись из массива в таблицу каких-то данных ? Это одни и те же данные ? Зачем их гонять туда-сюда ?


Данные по абоненту, у которого различается тариф оплаты, сумма оплаты, сумма и дата прихода денег и т.д. - все загоняется в массив, далее делаем начисления (пересчет с начала года, мало ли что было: изменили тариф, ставки тех.обсл.), далее записываем массив в поля ОДНОЙ записи таблицы.

Pasha пишет:

 цитата:
Что и как хранится отдельно по каждому подьезду и заносится в, хм, БД, Договора ?


Это пока несущественно.

Pasha пишет:

 цитата:
Для чего ты собрался использовать hbmemio ? Вместо массива 12*30, что ли ? Так это же полный абсурд.


Хочу всю таблицу ТА записать в память, потом сделать начисления, а потом сбросить в таблицу ТА уже с расчетами на диск.

Pasha пишет:

 цитата:
Андрей, моих способностей гадалки, телепата и экстрасенса недостаточно. Если хочешь какой-то помощи - подробно опиши свой алгоритм, со всеми выполняемыми действиями.


Понятно, что трудно понять чужую тематику (я сам уже в этот алгоритм 5 лет не лез, как с Клипера перенес) и с такими моими "куцими" объяснениями. Но я хотел не углубляться в код и не грузить вас этим.
Придется наверно все-таки подробно ВСЕ описать. Но на это нужно время.
Пока беру паузу для подготовки описания алгоритма. Чуть позже напишу.
Спасибо за помощь !!!

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 1951
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 06.12.11 00:12. Заголовок: PSP пишет: Имхо, ве..


PSP пишет:

 цитата:
Имхо, весь затык в постоянной передаче по сети.
Letodb может помочь. Попробуй на копии рабочей базы. Там-то много не нужно переделывать.


Andrey пишет:

 цитата:
Ищу пока промежуточный вариант - запуск на сервере, отдельной программой !


Я хочу пока отдельную программу сделать !!!
А уже потом Letodb прикручивать....

Спасибо: 0 
ПрофильЦитата Ответить
Администратор




Пост N: 2187
Зарегистрирован: 23.05.05
ссылка на сообщение  Отправлено: 06.12.11 10:53. Заголовок: Andrey пишет: Хочу ..


Andrey пишет:

 цитата:
Хочу всю таблицу ТА записать в память, потом сделать начисления, а потом сбросить в таблицу ТА уже с расчетами на диск.



Совершенно бессмыссленное намерение, которое только замедлит расчет. Когда записывать данные: в процессе расчета по одному абоненту, или в конце по всем - разницы не имеет.
Более того, записывать по одному будет быстрее, так как запись уже спозиционирована, а если записывать все - эту запись надо еще найти.
Да и к тому же держать в памяти сотни мегабайт или более данных на пользу не пойдет в любом случае.


Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 1952
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 06.12.11 12:01. Заголовок: Pasha пишет: Да и к..


Pasha пишет:

 цитата:
Да и к тому же держать в памяти сотни мегабайт или более данных на пользу не пойдет в любом случае.



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

Спасибо: 0 
ПрофильЦитата Ответить





Пост N: 59
Зарегистрирован: 22.09.09
ссылка на сообщение  Отправлено: 06.12.11 12:05. Заголовок: Андрей, не знаю тонк..


Андрей, не знаю тонкостей твоего алгоритма, но:

Pasha пишет:

 цитата:
записывать по одному будет быстрее


В моей программе по расчету зарплаты пункта "Расчет" нет в принципе. При вводе бухгалтером любого начисления автоматически выполняется полный перерасчет по человеку. О плюсах и минусах такого подхода можно, конечно, спорить. Но могу сказать, что расчет выполняется мгновенно, БД всегда в актуальном состоянии.
В твоем случае, когда перерасчет по человеку выполняется за 0.08 с, все это будет происходить незаметно даже без изменения существующего механизма обработки.

Спасибо: 0 
ПрофильЦитата Ответить



Пост N: 340
Зарегистрирован: 11.06.10
ссылка на сообщение  Отправлено: 06.12.11 12:07. Заголовок: S-A-N пишет: При вв..


S-A-N пишет:

 цитата:
При вводе бухгалтером любого начисления автоматически выполняется полный перерасчет по человеку.

Тоже интересный вариант.

Спасибо: 0 
ПрофильЦитата Ответить
Администратор




Пост N: 2188
Зарегистрирован: 23.05.05
ссылка на сообщение  Отправлено: 06.12.11 12:16. Заголовок: Насколько я понимаю,..


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

Спасибо: 0 
ПрофильЦитата Ответить





Пост N: 60
Зарегистрирован: 22.09.09
ссылка на сообщение  Отправлено: 06.12.11 13:08. Заголовок: Pasha пишет: без об..


Pasha пишет:

 цитата:
без общего расчета не обойтись


Расчета чего? Суммы к оплате? А зачем ее хранить? Насколько я понимаю тариф - это условно постоянная величина, которую нет смысла дублировать (12 мес.) * (кол-во лет) * (кол-во абонентов) раз. Речь может идти только о хранении информации об оплате и льготах (если есть). Тогда при выводе информации (на принтер или монитор) о текущем состоянии расчетов с абонентом сумму к оплате можно получать динамически.

Если есть необходимость эту информацию разносить по другим таблицам, то это можно делать во время печати квитанций на оплату. "Тормозов" в расчете не будет, поскольку печать более медленная операция.

И о структуре таблицы оплат. Андрей, а что будет, если абонент будет вносить оплату не одной, а 2-3-... суммами ежемесячно? Не проще ли хранить информацию в виде ID абона, дата оплаты, сумма, за какой период, прочая сопроводительная инфа.

Хотя, опять же, не зная постановки задачи, трудно рассуждать.


Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 1953
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 06.12.11 15:27. Заголовок: S-A-N пишет: И о ст..


S-A-N пишет:

 цитата:
И о структуре таблицы оплат. Андрей, а что будет, если абонент будет вносить оплату не одной, а 2-3-... суммами ежемесячно? Не проще ли хранить информацию в виде ID абона, дата оплаты, сумма, за какой период, прочая сопроводительная инфа.



Вот из-за этого и сделано 30 граф для прихода денег PLATA2011 (почитай выше).
А информация так и храниться в отдельной базе прихода денег (таблица оплат) по записям: 1запись - 1 приход денег.

Когда деньги за текущий месяц закончили приходить из банка, РКЦ и т.д. то делаем перенос денег по конкретным абонентам (в таблицу PLATA2011 в свободную ячейку), а потом уж делаем расчет (начисление) по всей таблице абонентов (ТА).
Из-за этого раз в месяц нужно делать ОБЩИЙ расчет.
После этого и делается печать долгов, печать квитанций и т.д., следуя специфики предприятия. Они все делают по разному, одни печатают, другие не печатают... их трудно понять....

Я на этой задаче 12 год сижу. Делал на Клипере 5.3 под Новел, потом перевел на хХарбор.
Сейчас бы конечно сделал бы по другому, но тогда компы были очень слабыми, а Клипер шустро считал и выдавал сведения.
А пределать что-то по другому в работающей программе - это целая ЭПОПЕЯ, всем сразу становится неудобно, шумят, что раньше понятней было и цвет лучше был и т.д. Одна морока по переводу....
Это если с нуля новому предприятию даешь новую программу, то все нормально, привыкают сразу.


Спасибо: 0 
ПрофильЦитата Ответить
Администратор




Пост N: 2189
Зарегистрирован: 23.05.05
ссылка на сообщение  Отправлено: 06.12.11 15:38. Заголовок: Andrey пишет: А инф..


Andrey пишет:

 цитата:
А информация так и храниться в отдельной базе прихода денег (таблица оплат) по записям: 1запись - 1 приход денег.

Когда деньги за текущий месяц закончили приходить из банка, РКЦ и т.д. то делаем перенос денег по конкретным абонентам (в таблицу PLATA2011 в свободную ячейку), а потом уж делаем расчет (начисление) по всей таблице абонентов (ТА).
Из-за этого раз в месяц нужно делать ОБЩИЙ расчет.



А зачем что-то куда-то переносить ? В таблице оплат достаточно иметь индекс по ID абонента и дате оплаты: Str(ID)+DTOS(Date), и по нему всегда можно выбрать оплату за произвольный промежуток времени.
Если бы использовался letodb, это можно было бы сделать одним вызовом leto_Sum()

Спасибо: 0 
ПрофильЦитата Ответить





Пост N: 61
Зарегистрирован: 22.09.09
ссылка на сообщение  Отправлено: 06.12.11 16:11. Заголовок: Pasha пишет: А заче..


Pasha пишет:

 цитата:
А зачем что-то куда-то переносить ? В таблице оплат достаточно иметь индекс по ID абонента и дате оплаты


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


Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник


Пост N: 1037
Зарегистрирован: 09.10.06
ссылка на сообщение  Отправлено: 14.12.11 03:19. Заголовок: Pasha пишет: Для че..


Pasha пишет:

 цитата:
Для чего ты собрался использовать hbmemio ? Вместо массива 12*30, что ли ? Так это же полный абсурд.


Ну я ему посоветовал.. Но в тот момент я не знал, что и как Андрей собирается делать. И теперь не совсем понимаю логику его действий.
А код WritDimDbf вообще вызывает улыбку

Спасибо: 0 
ПрофильЦитата Ответить
Администратор




Пост N: 2205
Зарегистрирован: 23.05.05
ссылка на сообщение  Отправлено: 14.12.11 09:56. Заголовок: Да, судя по всему, п..


Да, судя по всему, причина медленного расчета - неправильная организация данных
Такое лечится только банальной нормализацией, и больше ничем.

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 1969
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 14.12.11 11:18. Заголовок: Pasha пишет: Да, су..


Pasha пишет:

 цитата:
Да, судя по всему, причина медленного расчета - неправильная организация данных
Такое лечится только банальной нормализацией, и больше ничем.



А я разве спорю ? Это делалось еще в 1998 году, я про это писал уже....

Andrey пишет:

 цитата:
Я на этой задаче 12 год сижу. Делал на Клипере 5.3 под Новел, потом перевел на хХарбор.
Сейчас бы конечно сделал бы по другому, но тогда компы были очень слабыми, а Клипер шустро считал и выдавал сведения.



Петр пишет:

 цитата:
А код WritDimDbf вообще вызывает улыбку



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

Спасибо: 0 
ПрофильЦитата Ответить



Не зарегистрирован
Зарегистрирован: 01.01.70
ссылка на сообщение  Отправлено: 15.12.11 18:46. Заголовок: Andrey пишет: Я на ..


Andrey пишет:

 цитата:
Я на этой задаче 12 год сижу. Делал на Клипере 5.3 под Новел, потом перевел на хХарбор.
Сейчас бы конечно сделал бы по другому,



Так в чём проблема?

Спасибо: 0 
Цитата Ответить
Ответов - 57 , стр: 1 2 3 All [только новые]
Ответ:
1 2 3 4 5 6 7 8 9
большой шрифт малый шрифт надстрочный подстрочный заголовок большой заголовок видео с youtube.com картинка из интернета картинка с компьютера ссылка файл с компьютера русская клавиатура транслитератор  цитата  кавычки моноширинный шрифт моноширинный шрифт горизонтальная линия отступ точка LI бегущая строка оффтопик свернутый текст

показывать это сообщение только модераторам
не делать ссылки активными
Имя, пароль:      зарегистрироваться    
Тему читают:
- участник сейчас на форуме
- участник вне форума
Все даты в формате GMT  3 час. Хитов сегодня: 147
Права: смайлы да, картинки да, шрифты да, голосования нет
аватары да, автозамена ссылок вкл, премодерация откл, правка нет