powered by simpleCommunicator - 2.0.40     © 2025 Programmizd 02
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Thisform.grid в процедуре.
14 сообщений из 14, страница 1 из 1
Thisform.grid в процедуре.
    #39697402
andrepont
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Здравствуйте. имеется код который необходимо прописать в lostfocus у 65 полей грида. Пробовал засунуть код в процедуру и в lostfocus прописать её, но fox ругается на
Код: java
1.
ThisForm.grid2.column1.ControlSource =  IIF(NN_1<=0,'',ALLTRIM(STR(NN_1)))


Как это обойти, а то код объемный прописывать в каждое поле грида не хочется.
...
Рейтинг: 0 / 0
Thisform.grid в процедуре.
    #39697411
Sergey Sizov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
andrepontЗдравствуйте. имеется код который необходимо прописать в lostfocus у 65 полей грида.Для этого придумано ООП. Пробовал засунуть код в процедуру и в lostfocus прописать её, но fox ругается на
Код: java
1.
ThisForm.grid2.column1.ControlSource =  IIF(NN_1<=0,'',ALLTRIM(STR(NN_1)))


Как это обойти, а то код объемный прописывать в каждое поле грида не хочется.Что ЭТО? Какое отношение этот код имеет к LostFocus()? Зачем менять ИСТОЧНИК данных? ВЫ вообще понимаете назначение свойства ControlSource? Вы для какой задачи выбрали такой... неочевидный способ решения?
...
Рейтинг: 0 / 0
Thisform.grid в процедуре.
    #39697414
andrepont
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Я вычисляю сумму полей таблицы, присваиваю переменной NN_1 это значение, а потом мне необходимо это значение отобразить в итоговой таблице куда через ControlSource я переменную и вывожу.
...
Рейтинг: 0 / 0
Thisform.grid в процедуре.
    #39697445
andrepont
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Чтоб было понятно мне нужно вот эту конструкцию прописать в lostfocus каждого поля грида, а их 65 шт.

Код: javascript
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
SELECT DISTINCT n_plan_izd.* FROM n_plan_izd WHERE  n_plan_izd.mode <> .T. INTO CURSOR npi

CALCULATE SUM(npi.Plan_1m*npi.St_Trud)TO NN_1
CALCULATE SUM((npi.Plan_2m - npi.Plan_1m)*npi.St_Trud)TO NN_2 
CALCULATE SUM((npi.Plan_3m - npi.Plan_2m)*npi.St_Trud)TO NN_3 
CALCULATE SUM((npi.Plan_4m - npi.Plan_3m)*npi.St_Trud)TO NN_4 
CALCULATE SUM((npi.Plan_5m - npi.Plan_4m)*npi.St_Trud)TO NN_5 
CALCULATE SUM((npi.Plan_6m - npi.Plan_5m)*npi.St_Trud)TO NN_6 
CALCULATE SUM((npi.Plan_7m - npi.Plan_6m)*npi.St_Trud)TO NN_7 
CALCULATE SUM((npi.Plan_8m - npi.Plan_7m)*npi.St_Trud)TO NN_8 
CALCULATE SUM((npi.Plan_9m - npi.Plan_8m)*npi.St_Trud)TO NN_9 
CALCULATE SUM((npi.Plan_10m - npi.Plan_9m)*npi.St_Trud)TO NN_10 
CALCULATE SUM((npi.Plan_11m - npi.Plan_10m)*npi.St_Trud)TO NN_11 
CALCULATE SUM((npi.Plan_12m - npi.Plan_11m)*npi.St_Trud)TO NN_12 
CALCULATE SUM(npi.ozhid_1m*npi.St_Trud)TO NN_13 
CALCULATE SUM((npi.ozhid_2m - npi.ozhid_1m)*npi.St_Trud)TO NN_14 
CALCULATE SUM((npi.ozhid_3m - npi.ozhid_2m)*npi.St_Trud)TO NN_15 
CALCULATE SUM((npi.ozhid_4m - npi.ozhid_3m)*npi.St_Trud)TO NN_16 
CALCULATE SUM((npi.ozhid_5m - npi.ozhid_4m)*npi.St_Trud)TO NN_17 
CALCULATE SUM((npi.ozhid_6m - npi.ozhid_5m)*npi.St_Trud)TO NN_18 
CALCULATE SUM((npi.ozhid_7m - npi.ozhid_6m)*npi.St_Trud)TO NN_19 
CALCULATE SUM((npi.ozhid_8m - npi.ozhid_7m)*npi.St_Trud)TO NN_20 
CALCULATE SUM((npi.ozhid_9m - npi.ozhid_8m)*npi.St_Trud)TO NN_21 
CALCULATE SUM((npi.ozhid_10m - npi.ozhid_9m)*npi.St_Trud)TO NN_22 
CALCULATE SUM((npi.ozhid_11m - npi.ozhid_10m)*npi.St_Trud)TO NN_23 
CALCULATE SUM((npi.ozhid_12m - npi.ozhid_11m)*npi.St_Trud)TO NN_24 
CALCULATE SUM(npi.Plan_G * npi.St_Trud)TO NN_G 

NN_1 = IIF(NN_1<=0,0,NN_1)
NN_2 = IIF(NN_2<=0,0,NN_2)
NN_3 = IIF(NN_3<=0,0,NN_3)
NN_4 = IIF(NN_4<=0,0,NN_4)
NN_5 = IIF(NN_5<=0,0,NN_5)
NN_6 = IIF(NN_6<=0,0,NN_6)
NN_7 = IIF(NN_7<=0,0,NN_7)
NN_8 = IIF(NN_8<=0,0,NN_8)
NN_9 = IIF(NN_9<=0,0,NN_9)
NN_10 = IIF(NN_10<=0,0,NN_10)
NN_11 = IIF(NN_11<=0,0,NN_11)
NN_12 = IIF(NN_12<=0,0,NN_12)
NN_13 = IIF(NN_13<=0,0,NN_13)
NN_14 = IIF(NN_14<=0,0,NN_14)
NN_15 = IIF(NN_15<=0,0,NN_15)
NN_16 = IIF(NN_16<=0,0,NN_16)
NN_17 = IIF(NN_17<=0,0,NN_17)
NN_18 = IIF(NN_18<=0,0,NN_18)
NN_19 = IIF(NN_19<=0,0,NN_19)
NN_20 = IIF(NN_20<=0,0,NN_20)
NN_21 = IIF(NN_21<=0,0,NN_21)
NN_22 = IIF(NN_22<=0,0,NN_22)
NN_23 = IIF(NN_23<=0,0,NN_23)
NN_24 = IIF(NN_24<=0,0,NN_24)

NN_GF = NN_13+NN_14+NN_15+NN_16+NN_17+NN_18+NN_19+NN_20+NN_21+NN_22+NN_23+NN_24

ThisForm.grid2.column1.ControlSource =  ALLTRIM(STR(NN_1))
ThisForm.grid2.column2.ControlSource =  ALLTRIM(STR(NN_2))
ThisForm.grid2.column3.ControlSource =  ALLTRIM(STR(NN_3))
ThisForm.grid2.column4.ControlSource =  ALLTRIM(STR(NN_4))
ThisForm.grid2.column5.ControlSource =  ALLTRIM(STR(NN_5))
ThisForm.grid2.column6.ControlSource =  ALLTRIM(STR(NN_6))
ThisForm.grid2.column7.ControlSource =  ALLTRIM(STR(NN_7))
ThisForm.grid2.column8.ControlSource =  ALLTRIM(STR(NN_8))
ThisForm.grid2.column9.ControlSource =  ALLTRIM(STR(NN_9))
ThisForm.grid2.column10.ControlSource =  ALLTRIM(STR(NN_10))
ThisForm.grid2.column11.ControlSource =  ALLTRIM(STR(NN_11))
ThisForm.grid2.column12.ControlSource =  ALLTRIM(STR(NN_12))
ThisForm.grid3.column1.ControlSource =  ALLTRIM(STR(NN_13))
ThisForm.grid3.column2.ControlSource =  ALLTRIM(STR(NN_14))
ThisForm.grid3.column3.ControlSource =  ALLTRIM(STR(NN_15))
ThisForm.grid3.column4.ControlSource =  ALLTRIM(STR(NN_16))
ThisForm.grid3.column5.ControlSource =  ALLTRIM(STR(NN_17))
ThisForm.grid3.column6.ControlSource =  ALLTRIM(STR(NN_18))
ThisForm.grid3.column7.ControlSource =  ALLTRIM(STR(NN_19))
ThisForm.grid3.column8.ControlSource =  ALLTRIM(STR(NN_20))
ThisForm.grid3.column9.ControlSource =  ALLTRIM(STR(NN_21))
ThisForm.grid3.column10.ControlSource =  ALLTRIM(STR(NN_22))
ThisForm.grid3.column11.ControlSource =  ALLTRIM(STR(NN_23))
ThisForm.grid3.column12.ControlSource =  ALLTRIM(STR(NN_24))
ThisForm.grid2.column13.ControlSource =  ALLTRIM(STR(NN_G))
ThisForm.grid3.column13.ControlSource =  ALLTRIM(STR(NN_GF))
...
Рейтинг: 0 / 0
Thisform.grid в процедуре.
    #39697504
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ничего не понял, но попробую угадать: в lostfocus() ты прописал что-то типа
Код: sql
1.
my_proc()


а в my_proc
Код: sql
1.
2.
proc my_proc
ThisForm....



Если так, то так нельзя. Надо передавать ссылку на форму или грид в параметрах, т.е.
Код: sql
1.
2.
3.
4.
5.
my_proc(ThisForm.grid2)

proc my_proc
lpara toGrid
toGrid....



Или добавить форме метод my_method() и из lostfocus() вызывать его
Код: sql
1.
ThisForm.my_method()



Чтобы не прописывать 65 раз вызов одного и того же, можно перебрать их в цикле и привязать вызов через BINDEVENT()

PS Код 21663253 точно не для lostfocus(). Ты бы книжку какую почитал по фоксу, раз уж пишешь на нем.
...
Рейтинг: 0 / 0
Thisform.grid в процедуре.
    #39697549
Sergey Sizov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
andrepontЧтоб было понятно мне нужно вот эту конструкцию прописать в lostfocus каждого поля грида, а их 65 шт.Не надо повторять мантру про 65 штук. От этого идиотское желание не перестанет быть идиотским.
Далее разбираем код.
Код: javascript
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
SELECT DISTINCT n_plan_izd.* FROM n_plan_izd WHERE  n_plan_izd.mode <> .T. INTO CURSOR npi

CALCULATE SUM(npi.Plan_1m*npi.St_Trud)TO NN_1
CALCULATE SUM((npi.Plan_2m - npi.Plan_1m)*npi.St_Trud)TO NN_2 
CALCULATE SUM((npi.Plan_3m - npi.Plan_2m)*npi.St_Trud)TO NN_3 
CALCULATE SUM((npi.Plan_4m - npi.Plan_3m)*npi.St_Trud)TO NN_4 
CALCULATE SUM((npi.Plan_5m - npi.Plan_4m)*npi.St_Trud)TO NN_5 
CALCULATE SUM((npi.Plan_6m - npi.Plan_5m)*npi.St_Trud)TO NN_6 
CALCULATE SUM((npi.Plan_7m - npi.Plan_6m)*npi.St_Trud)TO NN_7 
CALCULATE SUM((npi.Plan_8m - npi.Plan_7m)*npi.St_Trud)TO NN_8 
CALCULATE SUM((npi.Plan_9m - npi.Plan_8m)*npi.St_Trud)TO NN_9 
CALCULATE SUM((npi.Plan_10m - npi.Plan_9m)*npi.St_Trud)TO NN_10 
CALCULATE SUM((npi.Plan_11m - npi.Plan_10m)*npi.St_Trud)TO NN_11 
CALCULATE SUM((npi.Plan_12m - npi.Plan_11m)*npi.St_Trud)TO NN_12 
CALCULATE SUM(npi.ozhid_1m*npi.St_Trud)TO NN_13 
CALCULATE SUM((npi.ozhid_2m - npi.ozhid_1m)*npi.St_Trud)TO NN_14 
CALCULATE SUM((npi.ozhid_3m - npi.ozhid_2m)*npi.St_Trud)TO NN_15 
CALCULATE SUM((npi.ozhid_4m - npi.ozhid_3m)*npi.St_Trud)TO NN_16 
CALCULATE SUM((npi.ozhid_5m - npi.ozhid_4m)*npi.St_Trud)TO NN_17 
CALCULATE SUM((npi.ozhid_6m - npi.ozhid_5m)*npi.St_Trud)TO NN_18 
CALCULATE SUM((npi.ozhid_7m - npi.ozhid_6m)*npi.St_Trud)TO NN_19 
CALCULATE SUM((npi.ozhid_8m - npi.ozhid_7m)*npi.St_Trud)TO NN_20 
CALCULATE SUM((npi.ozhid_9m - npi.ozhid_8m)*npi.St_Trud)TO NN_21 
CALCULATE SUM((npi.ozhid_10m - npi.ozhid_9m)*npi.St_Trud)TO NN_22 
CALCULATE SUM((npi.ozhid_11m - npi.ozhid_10m)*npi.St_Trud)TO NN_23 
CALCULATE SUM((npi.ozhid_12m - npi.ozhid_11m)*npi.St_Trud)TO NN_24 
CALCULATE SUM(npi.Plan_G * npi.St_Trud)TO NN_G 

NN_1 = IIF(NN_1<=0,0,NN_1)
NN_2 = IIF(NN_2<=0,0,NN_2)
NN_3 = IIF(NN_3<=0,0,NN_3)
NN_4 = IIF(NN_4<=0,0,NN_4)
NN_5 = IIF(NN_5<=0,0,NN_5)
NN_6 = IIF(NN_6<=0,0,NN_6)
NN_7 = IIF(NN_7<=0,0,NN_7)
NN_8 = IIF(NN_8<=0,0,NN_8)
NN_9 = IIF(NN_9<=0,0,NN_9)
NN_10 = IIF(NN_10<=0,0,NN_10)
NN_11 = IIF(NN_11<=0,0,NN_11)
NN_12 = IIF(NN_12<=0,0,NN_12)
NN_13 = IIF(NN_13<=0,0,NN_13)
NN_14 = IIF(NN_14<=0,0,NN_14)
NN_15 = IIF(NN_15<=0,0,NN_15)
NN_16 = IIF(NN_16<=0,0,NN_16)
NN_17 = IIF(NN_17<=0,0,NN_17)
NN_18 = IIF(NN_18<=0,0,NN_18)
NN_19 = IIF(NN_19<=0,0,NN_19)
NN_20 = IIF(NN_20<=0,0,NN_20)
NN_21 = IIF(NN_21<=0,0,NN_21)
NN_22 = IIF(NN_22<=0,0,NN_22)
NN_23 = IIF(NN_23<=0,0,NN_23)
NN_24 = IIF(NN_24<=0,0,NN_24)


ЭТО заменяется на 1(один) запрос с выводом результата в массив NN.NN_GF = NN_13+NN_14+NN_15+NN_16+NN_17+NN_18+NN_19+NN_20+NN_21+NN_22+NN_23+NN_24
Это меняется на
NN_GF = NN[13]+NN[14}+NN[15}+NN[16]+NN[17]+NN[18]+NN[19]+NN[20]+NN[21]+NN[22]+NN[23]+NN[24]
ThisForm.grid2.column1.ControlSource = ALLTRIM(STR(NN_1))
ThisForm.grid2.column2.ControlSource = ALLTRIM(STR(NN_2))
ThisForm.grid2.column3.ControlSource = ALLTRIM(STR(NN_3))
ThisForm.grid2.column4.ControlSource = ALLTRIM(STR(NN_4))
ThisForm.grid2.column5.ControlSource = ALLTRIM(STR(NN_5))
ThisForm.grid2.column6.ControlSource = ALLTRIM(STR(NN_6))
ThisForm.grid2.column7.ControlSource = ALLTRIM(STR(NN_7))
ThisForm.grid2.column8.ControlSource = ALLTRIM(STR(NN_8))
ThisForm.grid2.column9.ControlSource = ALLTRIM(STR(NN_9))
ThisForm.grid2.column10.ControlSource = ALLTRIM(STR(NN_10))
ThisForm.grid2.column11.ControlSource = ALLTRIM(STR(NN_11))
ThisForm.grid2.column12.ControlSource = ALLTRIM(STR(NN_12))
ThisForm.grid3.column1.ControlSource = ALLTRIM(STR(NN_13))
ThisForm.grid3.column2.ControlSource = ALLTRIM(STR(NN_14))
ThisForm.grid3.column3.ControlSource = ALLTRIM(STR(NN_15))
ThisForm.grid3.column4.ControlSource = ALLTRIM(STR(NN_16))
ThisForm.grid3.column5.ControlSource = ALLTRIM(STR(NN_17))
ThisForm.grid3.column6.ControlSource = ALLTRIM(STR(NN_18))
ThisForm.grid3.column7.ControlSource = ALLTRIM(STR(NN_19))
ThisForm.grid3.column8.ControlSource = ALLTRIM(STR(NN_20))
ThisForm.grid3.column9.ControlSource = ALLTRIM(STR(NN_21))
ThisForm.grid3.column10.ControlSource = ALLTRIM(STR(NN_22))
ThisForm.grid3.column11.ControlSource = ALLTRIM(STR(NN_23))
ThisForm.grid3.column12.ControlSource = ALLTRIM(STR(NN_24))
ThisForm.grid2.column13.ControlSource = ALLTRIM(STR(NN_G))
ThisForm.grid3.column13.ControlSource = ALLTRIM(STR(NN_GF))
[/src] А вот ЭТО вообще выкидывается за полной ненадобностью ибо установка источника должна производиться 1(один) раз и тут ну совершенно не нужны идиотские Altrim(Str()). И это можно сделать прямо в конструкторе формы. И использовать только NN[] и NN_GF.
...
Рейтинг: 0 / 0
Thisform.grid в процедуре.
    #39697715
Фотография ВладимирМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
andrepont,

Есть такой мультфильм "Следствие ведут колобки...". И там был фрагмент, когда они ехали на велосипеде по шпалам железной дороги. Их трясло и раскачивало в разные стороны. Неудобно. Поэтому они сделали вмятины в колесах велосипеда, чтобы эти вмятины попали на шпалы. И сразу езда стала ровной и приятной

Так вот, Вы делаете то же самое. По железной дороге, вообще-то, ездят на поезде, ну, или на дрезине. Но никак не на велосипеде, пусть и с квадратными колесами

Объект Grid предназначен для отображение содержимого ТАБЛИЦ. Т.е. неких СПИСКОВ. Он никак не предназначен для отображения переменных памяти. Сделать-то это можно, но, сильно подозреваю, Вам надо совсем не то, что в результате получится

Не знаю, есть ли там где Вы живете эскалатор? Ну, в сериалах, наверное, видели. Это такая движущаяся лестница. Теперь представьте, что каждая ступень этой лестницы - это отдельная запись таблицы. А сам эскалатор - это Grid. Вы видите не все "ступени" (записи таблицы), а только те, которые попадают в область видимости. Те ступени, которые находятся "сверху". Чтобы просмотреть все "ступени" нужно "прокрутить" всю ленту эскалатора

У Вас есть одно значение переменной памяти. Каким образом Вы можете "отобразить" эту переменную на "ступенях эскалатора"? Ну, очевидно, либо "приклеить" к ОДНОЙ ступеньке, либо заменить ОДНУ ступеньку. Обратите внимание - ОДНУ

Возвращаясь, к ControlSource. Если речь идет о Column, то это замена ВСЕХ ступеней. Как Вы вообще себе представляете процесс, при котором вообще все ступени эскалатора выбрасываются и остается только одна? Бред это. Вот никто Вам ничего вразумительного посоветовать и не может. Все дают советы в рамках собственного понимания. Но, поскольку, все они "по умолчанию" предполагают некоторые "совершенно очевидные" вещи, то теперь уже Вы их не понимаете

Прикрепите здесь во вложении либо свой проект, либо картинку того, что Вы хотите увидеть в результате. Ну, хоть в Excel или Word нарисуйте, что должно получиться
...
Рейтинг: 0 / 0
Thisform.grid в процедуре.
    #39697805
Sergey Sizov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ВладимирМ,

да наверняка очередная попытка нарисовать на гриде аналог электронной таблицы, то бишь excel'я.
...
Рейтинг: 0 / 0
Thisform.grid в процедуре.
    #39697883
Фотография ВладимирМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Гм... Если я правильно понял, то под Grid с отображением содержимого курсора npi, хочется отобразить Grid с суммами с результатам вычислений по полям этого курсора. Тогда это так делается

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
ThisForm.grid2.RecordSource = ''

select ;
    SUM(npi.Plan_1m*npi.St_Trud) as NN_1, ;
    SUM((npi.Plan_2m - npi.Plan_1m)*npi.St_Trud) as NN_2, ;
    SUM((npi.Plan_3m - npi.Plan_2m)*npi.St_Trud) as NN_3, ;
    SUM((npi.Plan_4m - npi.Plan_3m)*npi.St_Trud) as NN_4, ;
    SUM((npi.Plan_5m - npi.Plan_4m)*npi.St_Trud) as NN_5, ; 
    SUM((npi.Plan_6m - npi.Plan_5m)*npi.St_Trud) as NN_6, ; 
    SUM((npi.Plan_7m - npi.Plan_6m)*npi.St_Trud) as NN_7, ; 
    SUM((npi.Plan_8m - npi.Plan_7m)*npi.St_Trud) as NN_8, ; 
    SUM((npi.Plan_9m - npi.Plan_8m)*npi.St_Trud) as NN_9, ; 
    SUM((npi.Plan_10m - npi.Plan_9m)*npi.St_Trud) as NN_10, ; 
    SUM((npi.Plan_11m - npi.Plan_10m)*npi.St_Trud) as NN_11, ;
    SUM((npi.Plan_12m - npi.Plan_11m)*npi.St_Trud) as NN_12, ; 
    SUM(npi.ozhid_1m*npi.St_Trud) as NN_13, ; 
    SUM((npi.ozhid_2m - npi.ozhid_1m)*npi.St_Trud) as NN_14, ; 
    SUM((npi.ozhid_3m - npi.ozhid_2m)*npi.St_Trud) as NN_15, ; 
    SUM((npi.ozhid_4m - npi.ozhid_3m)*npi.St_Trud) as NN_16, ; 
    SUM((npi.ozhid_5m - npi.ozhid_4m)*npi.St_Trud) as NN_17, ; 
    SUM((npi.ozhid_6m - npi.ozhid_5m)*npi.St_Trud) as NN_18, ; 
    SUM((npi.ozhid_7m - npi.ozhid_6m)*npi.St_Trud) as NN_19, ; 
    SUM((npi.ozhid_8m - npi.ozhid_7m)*npi.St_Trud) as NN_20, ; 
    SUM((npi.ozhid_9m - npi.ozhid_8m)*npi.St_Trud) as NN_21, ; 
    SUM((npi.ozhid_10m - npi.ozhid_9m)*npi.St_Trud) as NN_22, ; 
    SUM((npi.ozhid_11m - npi.ozhid_10m)*npi.St_Trud) as NN_23, ; 
    SUM((npi.ozhid_12m - npi.ozhid_11m)*npi.St_Trud) as NN_24, ; 
from npi ;
into cursor curSum nofilter

ThisForm.grid2.RecordSource = 'curSum'



Насчет сокрытия отрицательных значений можно потом уточнить. Если я саму идею правильно уловил
...
Рейтинг: 0 / 0
Thisform.grid в процедуре.
    #39698098
andrepont
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Здравствуйте. Спасибо за комментарии. Прошу сильно не пинать, т.к. в foxpro я 2-й месяц а до этого вообще программированием не занимался вот и приходится методом тыка разбираться т.к. в литературе не всегда понятно. В грид я эти расчеты вывожу для удобства восприятия. А суть в том что мне нужно посчитать суму выражений между полями таблицы и вывести их в грид для удобства восприятия в виде таблички. при этом скрыть отрицательные результаты. А потом посчитать итог, результатом которого будет сумма переменных с NN_13 по NN_24, но есть условие что если переменная меньше 0 то она является 0, т.к. иначе сумма будет недостоверна, далее поместить результат в переменную NN_GF и вывести её в последнюю колонку грида после всех переменных.
...
Рейтинг: 0 / 0
Thisform.grid в процедуре.
    #39698099
andrepont
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Пример ВладимираМ понятен только как быть с отрицательными значениями. И можно ли переменные с NN_1 по NN_12 отобразить в первой строке, а переменные с NN_13 по NN_24 во второй?
...
Рейтинг: 0 / 0
Thisform.grid в процедуре.
    #39698101
andrepont
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Вот фото того что должно получиться.
...
Рейтинг: 0 / 0
Thisform.grid в процедуре.
    #39698299
Фотография ВладимирМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Начинаем с того, что источник данных Grid - это таблица. Без вариантов. Значит, для Grid итогами нам надо создать таблицу. Можно временную (курсор). Но в любом случае, это должна быть таблица

Судя по картинке, таблица должна иметь 13 столбцов (12 месяцев и год). Вот и создаем такую таблицу примерно так

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
* init-формы

ThisForm.grid2.RecordSource = ''

create Cursor curTotal ;
   ( ;
    Month_1 N(10,2), ;
    Month_2 N(10,2), ;
    Month_3 N(10,2), ;
    Month_4 N(10,2), ;
    Month_5 N(10,2), ;
    Month_6 N(10,2), ;
    Month_7 N(10,2), ;
    Month_8 N(10,2), ;
    Month_9 N(10,2), ;
    Month_10 N(10,2), ;
    Month_11 N(10,2), ;
    Month_12 N(10,2), ;
    YearNum I ;
    )

* Сразу создаем 2 пустые строки, в которые позже будут записаны результаты расчета
append blank
append blank

ThisForm.grid2.RecordSource = 'curTotal'



Далее выполняется итоговый подсчет по таблице npi и получаем курсор с результатами этого расчета

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
select ;
    SUM(npi.Plan_1m*npi.St_Trud) as NN_1, ;
    SUM((npi.Plan_2m - npi.Plan_1m)*npi.St_Trud) as NN_2, ;
    SUM((npi.Plan_3m - npi.Plan_2m)*npi.St_Trud) as NN_3, ;
    SUM((npi.Plan_4m - npi.Plan_3m)*npi.St_Trud) as NN_4, ;
    SUM((npi.Plan_5m - npi.Plan_4m)*npi.St_Trud) as NN_5, ; 
    SUM((npi.Plan_6m - npi.Plan_5m)*npi.St_Trud) as NN_6, ; 
    SUM((npi.Plan_7m - npi.Plan_6m)*npi.St_Trud) as NN_7, ; 
    SUM((npi.Plan_8m - npi.Plan_7m)*npi.St_Trud) as NN_8, ; 
    SUM((npi.Plan_9m - npi.Plan_8m)*npi.St_Trud) as NN_9, ; 
    SUM((npi.Plan_10m - npi.Plan_9m)*npi.St_Trud) as NN_10, ; 
    SUM((npi.Plan_11m - npi.Plan_10m)*npi.St_Trud) as NN_11, ;
    SUM((npi.Plan_12m - npi.Plan_11m)*npi.St_Trud) as NN_12, ; 
    SUM(npi.ozhid_1m*npi.St_Trud) as NN_13, ; 
    SUM((npi.ozhid_2m - npi.ozhid_1m)*npi.St_Trud) as NN_14, ; 
    SUM((npi.ozhid_3m - npi.ozhid_2m)*npi.St_Trud) as NN_15, ; 
    SUM((npi.ozhid_4m - npi.ozhid_3m)*npi.St_Trud) as NN_16, ; 
    SUM((npi.ozhid_5m - npi.ozhid_4m)*npi.St_Trud) as NN_17, ; 
    SUM((npi.ozhid_6m - npi.ozhid_5m)*npi.St_Trud) as NN_18, ; 
    SUM((npi.ozhid_7m - npi.ozhid_6m)*npi.St_Trud) as NN_19, ; 
    SUM((npi.ozhid_8m - npi.ozhid_7m)*npi.St_Trud) as NN_20, ; 
    SUM((npi.ozhid_9m - npi.ozhid_8m)*npi.St_Trud) as NN_21, ; 
    SUM((npi.ozhid_10m - npi.ozhid_9m)*npi.St_Trud) as NN_22, ; 
    SUM((npi.ozhid_11m - npi.ozhid_10m)*npi.St_Trud) as NN_23, ; 
    SUM((npi.ozhid_12m - npi.ozhid_11m)*npi.St_Trud) as NN_24, ; 
    SUM(npi.Plan_G * npi.St_Trud) as NN_G ;
from npi ;
into cursor curSum nofilter



А вот теперь, переносим данные из промежуточного результата расчета curSum в таблицу для отображения результата curTotal примерно так

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
* Переходим в рабочую область нужной таблицы
* Предполагаю, что эта таблица уже имеет 2 строки, поэтому анализ на их наличие не выполняется
select curTotal 

* Первая строка
go top

* Записываем значения в текущую строку
replace ;
    Month_1 with iif(curSum.NN_1 < 0, 0, curSum.NN_1), ;
    Month_2 with iif(curSum.NN_2 < 0, 0, curSum.NN_2), ;
    Month_3 with iif(curSum.NN_3 < 0, 0, curSum.NN_3), ;
    Month_4 with iif(curSum.NN_4 < 0, 0, curSum.NN_4), ;
    Month_5 with iif(curSum.NN_5 < 0, 0, curSum.NN_5), ;
    Month_6 with iif(curSum.NN_6 < 0, 0, curSum.NN_6), ;
    Month_7 with iif(curSum.NN_7 < 0, 0, curSum.NN_7), ;
    Month_8 with iif(curSum.NN_8 < 0, 0, curSum.NN_8), ;
    Month_9 with iif(curSum.NN_9 < 0, 0, curSum.NN_9), ;
    Month_10 with iif(curSum.NN_10 < 0, 0, curSum.NN_10), ;
    Month_11 with iif(curSum.NN_11 < 0, 0, curSum.NN_11), ;
    Month_12 with iif(curSum.NN_12 < 0, 0, curSum.NN_12), ;
    YearNum with curSum.NN_13

* вторая строка
skip

* Записываем значения в текущую строку
replace ;
    Month_1 with iif(curSum.NN_14 < 0, 0, curSum.NN_14), ;
    Month_2 with iif(curSum.NN_15 < 0, 0, curSum.NN_15), ;
    Month_3 with iif(curSum.NN_16 < 0, 0, curSum.NN_16), ;
    Month_4 with iif(curSum.NN_17 < 0, 0, curSum.NN_17), ;
    Month_5 with iif(curSum.NN_18 < 0, 0, curSum.NN_18), ;
    Month_6 with iif(curSum.NN_19 < 0, 0, curSum.NN_19), ;
    Month_7 with iif(curSum.NN_20 < 0, 0, curSum.NN_20), ;
    Month_8 with iif(curSum.NN_21 < 0, 0, curSum.NN_21), ;
    Month_9 with iif(curSum.NN_22 < 0, 0, curSum.NN_22), ;
    Month_10 with iif(curSum.NN_23 < 0, 0, curSum.NN_23), ;
    Month_11 with iif(curSum.NN_24 < 0, 0, curSum.NN_24), ;
    Month_12 with iif(curSum.NN_25 < 0, 0, curSum.NN_25), ;
    YearNum with curSum.NN_G




Собственно, все. Источники данных Grid здесь не меняются. Как была временная таблица CurTotal, так и осталась. Просто меняется содержимое записей этой таблицы
...
Рейтинг: 0 / 0
Thisform.grid в процедуре.
    #39699831
andrepont
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ВладимирМ спасибо за помощь, ваш пример помог добиться желаемого.
...
Рейтинг: 0 / 0
14 сообщений из 14, страница 1 из 1
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Thisform.grid в процедуре.
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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