powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / суммирование колонок в grid
42 сообщений из 42, показаны все 2 страниц
суммирование колонок в grid
    #37889623
johngorn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
День добрый всем, подскажите какие у кого есть идеи - у меня Grid, в котором я ввожу количество товара и в зависимости от столбца цены он заполняет столбец сумма через interactivechange, внизу grid под столбцом как показано в приложенном файле есть элемент tex6, в который хотелось бы получать общую сумму при вводе количества, но например команда calculate sum() постоянно переносит меня на последнюю строчку, как это избежать?
...
Рейтинг: 0 / 0
суммирование колонок в grid
    #37889679
Jonny540
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
johngorn,

Да, напомнил ты мне старые времена, когда я с куриной фабрикой работал!
Сразу в носу (или в мозгу?) появился этот незабываемый запах
А если серьезно - команда calculate sum() уносит тебя в конец таблицы, поэтому
запоминай номер записи при вводе инфы и после calculate sum() - go обратно на эту запись.
Единственно, что не очень - эта строка будет у тебя верхней в гриде.
Это навскидку, если не устроит, надо будет вспоминать, такую проблему я когда-то решил.
...
Рейтинг: 0 / 0
суммирование колонок в grid
    #37889686
johngorn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
я думал над таким решением проблемы, но грид постоянно мерцает и есть вероятность того что бухгалтер собьется набирая количество, так что как то не очень, если вспомнишь другой вариант буду очень признателен...
...
Рейтинг: 0 / 0
суммирование колонок в grid
    #37889698
Jonny540
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
johngorn,

А почему нельзя сначала заполнить грид, а потом посчитать сумму? (я еще не вспоминал, просто как вариант)
Кстати, это цены за 1 кг? Если так, все бегом в Тирасполь
...
Рейтинг: 0 / 0
суммирование колонок в grid
    #37889704
Jonny540
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
johngorn,

Кажется вот так я делал:
в interactivechange , который считает сумму (пусть она будет nSum) добавь:
Код: plsql
1.
Thisform.Text6.Value=Thisform.Text6.Value+nSum


а calculate sum() выброси... Ну и при ините Thisform.Text6.Value=0.00
...
Рейтинг: 0 / 0
суммирование колонок в grid
    #37889734
Фотография ВладимирМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вообще-то, значение может не только вводится, но и редактироваться. В общем случае, надо запоминать значение при входе в ячейку, а при выходе делать примерно следующее

Код: sql
1.
Thisform.Text6.Value=Thisform.Text6.Value - "Значение при входе" + "Значение при выходе"



Ну, естественно, в момент открытия формы сначала рассчитать итог через Calculate

Только вот, InteractiveChange() для этого совсем не подходит. Дело в том, что этот метод срабатывает на любое изменение значения. Т.е. ты нажал одну цифру, а он уже сработал. А ты ввод еще не завершил

Используй методы Grid1.Column1.Text1.GotFocus() и Grid1.Column1.Text1.LostFocus(). Для хранения "старого значения" можно создать метод формы. Ну, или использовать свойство TAG. Хотя это свойство может принимать только символьные данные.

В целом, получится примерно такая схема

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
* Init - формы
Calculate sum() to Thisform.Text6.Value 

* Grid1.Column2.Text1.GotFocus() - столбец с количеством
* Запоминаем значение при входе
This.Tag = STR(This.Value,15,2)

* Grid1.Column2.Text1.LostFocus() - столбец с количеством
* При выходе корректируем итоговую сумму
Thisform.Text6.Value = Thisform.Text6.Value + MyTable.Price * (This.Value - VAL(This.Tag))

* Grid1.Column3.Text1.GotFocus() - столбец с ценой
* Запоминаем значение при входе
This.Tag = STR(This.Value,15,2)

* Grid1.Column3.Text1.LostFocus() - столбец с ценой
* При выходе корректируем итоговую сумму
Thisform.Text6.Value = Thisform.Text6.Value + MyTable.Qty * (This.Value - VAL(This.Tag))



Это, конечно, чуть больше кода , зато никаких проблем с "передергиванием" указателей записи. Да, здесь я предполагаю, что в Grid отображена таблица MyTable и ее поля Qty - количество и Price - цена
...
Рейтинг: 0 / 0
суммирование колонок в grid
    #37889882
johngorn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Jonny540, да тут не увязочка после каждого нажатия символа он будет суммировать , так что данный пример не подходит....
...
Рейтинг: 0 / 0
суммирование колонок в grid
    #37889886
johngorn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ВладимирМ, несовсем понял для чего нужно старое значение если у меня по умолчанию при загрузке формы количество равно нулю и в принципе событие init отпадает, ну а вообще спасибо за подсказку утром приду на работу проверю как работает, а то нет проэкта под рукой.
...
Рейтинг: 0 / 0
суммирование колонок в grid
    #37889887
johngorn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ВладимирМ, все допер, пропустил глобальный смысл двух первых строк, видимо просто в сон клонит, спасибо за подсказку.
...
Рейтинг: 0 / 0
суммирование колонок в grid
    #37889935
q1w1e1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ВладимирМ,

А почему именно gotfocus и lostfocus, а не when и valid, т.е. в каких случаях что именно надо(именно в гриде, именно при редактировании, так как вроде мышка не участвует в редатировании)... точно не помню, давно было, но почему то я отказался от gotfocus и lostfocus, в пользу when и valid, и какое событие выполняется в первую очередь gotfocus или when, а что в последнюю lostfocus или valid
...
Рейтинг: 0 / 0
суммирование колонок в grid
    #37889936
tanglir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
q1w1e1и какое событие выполняется в первую очередь gotfocus или when, а что в последнюю lostfocus или validвас забанили в хелпе?

when
gotfocus
...
valid
lostfocus
...
Рейтинг: 0 / 0
суммирование колонок в grid
    #37889940
q1w1e1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
tanglirвас забанили в хелпе?

Да нет, за*банили этим хелпом...
Да, забыл..:-)
...
Рейтинг: 0 / 0
суммирование колонок в grid
    #37890125
johngorn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ВладимирМ, сделал по вашему предложению, но что то косячат суммы, буквально после третьего ввода сумма получается уже не верная... хотя вроде должно работать((((
У кого еще есть мысли на эту тему?
...
Рейтинг: 0 / 0
суммирование колонок в grid
    #37890142
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
johngornВладимирМ, сделал по вашему предложению, но что то косячат суммы, буквально после третьего ввода сумма получается уже не верная... хотя вроде должно работать((((
У кого еще есть мысли на эту тему?
Все должно работать. Это самый оптимальный способ. Расчетов минимум.
Ищи где накосячил. Возможно из-за округлений съезжает.
...
Рейтинг: 0 / 0
суммирование колонок в grid
    #37890162
IgorNG
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
johngorn,

SELECT SUM(Сумма) AS total_sum FROM Имя таблицы INTO CURSOR Имя курсора
THISFORM.Text6.Value = Имя курсора.total_sum
...
Рейтинг: 0 / 0
суммирование колонок в grid
    #37890180
johngorn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dima T, да действительно после того как убрал произведение количества на цену из interactivechange и добавил вот эту строчку в lostfocus - thisform.grid1.column4.text1.Value=this.Value*tovar0.cena все заработало, спасибо за подсказку!
...
Рейтинг: 0 / 0
суммирование колонок в grid
    #37890206
makar12
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
IgorNG,

Можно так же суммировать в массив,на мой взгляд более изящно ...
SELECT SUM(Сумма) AS total_sum FROM Имя таблицы INTO Array aSum
THISFORM.Text6.Value = aSum
...
Рейтинг: 0 / 0
суммирование колонок в grid
    #37890217
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
johngornDima T, да действительно после того как убрал произведение количества на цену из interactivechange и добавил вот эту строчку в lostfocus ...
interactivechange() срабатывает при каждом нажатии кнопки, lostfocus() - один раз по уходу с контрола.
...
Рейтинг: 0 / 0
суммирование колонок в grid
    #37890287
Jonny540
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima Tnteractivechange() срабатывает при каждом нажатии кнопки, lostfocus() - один раз по уходу с контрола.При желании "можно и зайца научить курить" (с)
Да, конечно, nteractivechange() не лучший вариант, но ведь можно выловить код кнопки по lastkey()...
Я не настаиваю, просто хотелось как-то показать, что и здесь можно выкрутиться.
...
Рейтинг: 0 / 0
суммирование колонок в grid
    #37890413
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Jonny540При желании "можно и зайца научить курить" (с)
Да, конечно, nteractivechange() не лучший вариант, но ведь можно выловить код кнопки по lastkey()...
Я не настаиваю, просто хотелось как-то показать, что и здесь можно выкрутиться.
Месье знает толк в извращениях

Тогда уж текущую сумму строки в This.Tag сохранять в конце interactivechange()
...
Рейтинг: 0 / 0
суммирование колонок в grid
    #37890586
Jonny540
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima TМесье знает толк в извращениях А лучше все делать в KeyPress() (это уж точно порнуха)
Когда все по правилам, скучно становится, верно ведь?
...
Рейтинг: 0 / 0
суммирование колонок в grid
    #37890606
IgorNG
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Jonny540Dima TМесье знает толк в извращениях А лучше все делать в KeyPress() (это уж точно порнуха)
Когда все по правилам, скучно становится, верно ведь?

И что в KeyPress ловить будешь?
...
Рейтинг: 0 / 0
суммирование колонок в grid
    #37890633
Jonny540
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
IgorNGИ что в KeyPress ловить будешь?Тоже коды клавиш. Только там все как-то иначе, чем в i-c :)
...
Рейтинг: 0 / 0
суммирование колонок в grid
    #37890650
IgorNG
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Jonny540IgorNGИ что в KeyPress ловить будешь?Тоже коды клавиш. Только там все как-то иначе, чем в i-c :)

То, что клавиш - понятно. Что же еще можно ловить в KeyPress?
Вопрос, какие клавиши ты там будешь ловить?
...
Рейтинг: 0 / 0
суммирование колонок в grid
    #37890661
Banditos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
johngorn,

В таблице у поля есть метод "VALID".
Туда загоняешь:
Код: sql
1.
2.
3.
4.
5.
6.
7.
* пробуй сначала без локов, если чего - раскаменть потом. 
* THISFORM.LockScreen = .T.

THISFORM."твой метод(процедуру) подсчета чего хошь"
THISFORM."твой Grid".REFRESH 

* THISFORM.LockScreen = .F.



В самой своей процедуре пишешь что-то типа:
Код: sql
1.
SELECT SUM(summa) FROM "твоя таблица" INTO CURSOR (ARRAY или еще куда, но не в таблицу!) MyCursor


Затем достаешь из полученного курсора(массива) результат, отображаешь его на своей форме, ЗАКРЫВАЕШЬ курсор.
Все.
Курсор никуда не бегает, результат всегда считается ПОСЛЕ ввода значения.
...
Рейтинг: 0 / 0
суммирование колонок в grid
    #37890688
Jonny540
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
IgorNG, Да какие угодно + комбинации...
Все, всех прошу извинить, от старой привычки все считать по байтам-битам сложно отделаться.
...
Рейтинг: 0 / 0
суммирование колонок в grid
    #37890696
IgorNG
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Banditosjohngorn,

В таблице у поля есть метод "VALID".
Туда загоняешь:
Код: sql
1.
2.
3.
4.
5.
6.
7.
* пробуй сначала без локов, если чего - раскаменть потом. 
* THISFORM.LockScreen = .T.

THISFORM."твой метод(процедуру) подсчета чего хошь"
THISFORM."твой Grid".REFRESH 

* THISFORM.LockScreen = .F.



В самой своей процедуре пишешь что-то типа:
Код: sql
1.
SELECT SUM(summa) FROM "твоя таблица" INTO CURSOR (ARRAY или еще куда, но не в таблицу!) MyCursor


Затем достаешь из полученного курсора(массива) результат, отображаешь его на своей форме, ЗАКРЫВАЕШЬ курсор.
Все.
Курсор никуда не бегает, результат всегда считается ПОСЛЕ ввода значения.

И где же в таблице у поля есть такой метод VALID?
Уж если взялся объяснять подробно, так объясняй, чтобы новичку было понятно.
А то ведь и вправду полезет в таблицу искать методы.
...
Рейтинг: 0 / 0
суммирование колонок в grid
    #37890712
Banditos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
IgorNGИ где же в таблице у поля есть такой метод VALID?
Уж если взялся объяснять подробно, так объясняй, чтобы новичку было понятно.
А то ведь и вправду полезет в таблицу искать методы.
Этот новичек нашел метод "interactivechange" - недалеко от него найдет и метод "Value".
...
Рейтинг: 0 / 0
суммирование колонок в grid
    #37890777
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Banditosметод "Value".
ужос
...
Рейтинг: 0 / 0
суммирование колонок в grid
    #37890801
Jonny540
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima T,

Такое впечатление, что сегодня пятница, все с ума сошли
У поля (Text1) есть Valid
...
Рейтинг: 0 / 0
суммирование колонок в grid
    #37890824
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Jonny540Dima T,

Такое впечатление, что сегодня пятница, все с ума сошли
У поля (Text1) есть Valid
Valid есть, а вот вышеупомятый "метод Value" у меня почему-то свойство
...
Рейтинг: 0 / 0
суммирование колонок в grid
    #37890856
Jonny540
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima T,
У всех так, но:
IgorNGИ где же в таблице у поля есть такой метод VALID?
IgorNG, извини, если я что-то не так понял. Пятница, блин!
...
Рейтинг: 0 / 0
суммирование колонок в grid
    #37890877
Jonny540
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima TValid естьТ.е у всех это метод :)
...
Рейтинг: 0 / 0
суммирование колонок в grid
    #37891069
Banditos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dima TValid есть, а вот вышеупомятый "метод Value" у меня почему-то свойство
Если ты будешь меньше пустозвонить и больше думать, то увидишь, что я ранее написал "VALID".
Затем я продолжил говорить про этот же метод, но допустил опечатку. И это причем я отвечал на сообщение, где было написано "VALID".
Но если тебе вместо обсуждения топика нравится играть в "съедобное-несъедобное"... это твой выбор...
...
Рейтинг: 0 / 0
суммирование колонок в grid
    #37891090
gore-egor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ребята, не надо ссориться!
вот это 12905329 работает
...
Рейтинг: 0 / 0
суммирование колонок в grid
    #37891114
johngorn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
а так все хорошо начиналось короче я все давно уже понял, второй метод не пробовал, но спасибо, более достаточно первого.
...
Рейтинг: 0 / 0
суммирование колонок в grid
    #37891167
Jonny540
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
johngornа так все хорошо начиналось Хорошо, что хорошо закончилось Программисты тоже имеют право иногда расслабиться, верно ведь?
Ты получил очень нормальный ответ, а дальше все (надеюсь) посмеялись
...
Рейтинг: 0 / 0
суммирование колонок в grid
    #37892121
drronnie
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Я прошу прощения за оффтоп. Не нашел как тут отправить личное сообщение пользователю, поэтому обращаюсь к участнику Dima T через последнюю тему с его участием. Дима, не могли бы вы мне написать на ящик drronnie@ua.fm?
...
Рейтинг: 0 / 0
суммирование колонок в grid
    #37892438
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
drronnieЯ прошу прощения за оффтоп. Не нашел как тут отправить личное сообщение пользователю, поэтому обращаюсь к участнику Dima T через последнюю тему с его участием. Дима, не могли бы вы мне написать на ящик drronnie@ua.fm?
Пиши сюда, все равно зафлудили тему. Если что-то писать за деньги - не интересует, а в остальном: то что здесь не напишу то и в личку не отвечу.
...
Рейтинг: 0 / 0
суммирование колонок в grid
    #37892555
drronnie
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dima T, Нашел твоё сообщение в теме Сравнение строк по алгоритму Левенштайна
Туда не написал, чтобы не стукнули банхаммером за некрофилию. Интересует алгоритм распарсивания названий медикаментов. Выделение из них номера, дозировки, объёма, отбрасывания не значимых слов и т.д. Можешь поделиться? Собственно всё:)
...
Рейтинг: 0 / 0
суммирование колонок в grid
    #37892910
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
drronnieDima T, Нашел твоё сообщение в теме Сравнение строк по алгоритму Левенштайна
Туда не написал, чтобы не стукнули банхаммером за некрофилию. Интересует алгоритм распарсивания названий медикаментов. Выделение из них номера, дозировки, объёма, отбрасывания не значимых слов и т.д. Можешь поделиться? Собственно всё:)
Мог бы и тот топик поднять. Не вижу ничего криминального в этом.
Кодом не поделюсь, т.к. во-первых считаю что чужие задумки можно использовать, но реализовывать все надо самому.
А во-вторых считаю что он далек от идеала. Больше десяти лет назад писал, сегодня сделал бы кое в чем по-другому. Код достаточно тормозной получился. Сейчас бы написал все на Сях, на порядок быстрее было бы.

На словах поделюсь:
1. Разбираем наименование на слова, а дальше смотрим за порядком слов
2. С конца ищем номера
3. Ищем число а потом буквы - анализируем буквы на предмет единиц измерения (мг, мл, дозы и т.д.) и приводим к общему знаменателю, например объем в миллилитры, вес в миллиграммы и т.д. например 0,01 г => 10 мг, 10 мкг => 0.01 мг
4. Замена общепринятых сокращений - например "таб.", "табл.", "тбл.", "табл. п.о." и т.д. => "табл" . Стандартных сокращений не так уж и много, пара-тройка десятков.
5. Выкидываем незначимые слова и небуквенные символы, из слов можно выкинуть слова "упаковка", "флакон" т.к. все лекарства измеряются упаковками и неважно какого она типа (флакон или картонная коробка с блистерами). Хотя и тут есть исключения, например вазелин одной дозировки в тубах и банках.
6. Все замененное обратно склеиваем в строку и получаем нормализованное наименование.

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

Нынче все больше используют ЕАНы, многие их хранят в своих базах, дают в прайсах и эл.накладных, только на 100% им не стоит доверять, но их совпадение на 99% говорит о том что это один и тот же препарат, оставшийся 1% это криво вбитые в базы поставщиков и косяки производителей.

Вроде все написал, что непонятно - спрашивай. Только топик отдельный заведи :)
...
Рейтинг: 0 / 0
суммирование колонок в grid
    #37893002
drronnie
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
У меня похожий алгоритм разбор провожу регулярными выражениями. Кроме того пробовал при сравнении отбрасывать гласные, т.к. смысловую нагрузку несут согласные буквы. В общем работает однако встречаются коллизии. И на данный момент годится не более чем для подсказок. В любом случае спасибо. Вопрос исчерпан.
...
Рейтинг: 0 / 0
42 сообщений из 42, показаны все 2 страниц
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / суммирование колонок в grid
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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