powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Как сложить значения полей 2х записей в одну в одной базе
10 сообщений из 10, страница 1 из 1
Как сложить значения полей 2х записей в одну в одной базе
    #33990694
CTAC-KO
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Привет!

Есть такая задачка, нужно значения полей двух записей сложить и поместить полученные в значения в одну из них.
Я делаю так:
Код: plaintext
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.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
96.
97.
98.
99.
100.
101.
102.
103.
104.
105.
106.
107.
108.
109.
110.
111.
112.
113.
114.
115.
116.
117.
118.
119.
120.
121.
122.
123.
124.
125.
126.
127.
128.
129.
130.
131.
132.
133.
134.
135.
136.
137.
138.
139.
140.
141.
142.
143.
144.
145.
146.
147.
148.
149.
150.
151.
152.
153.
154.
155.
156.
157.
158.
159.
160.
161.
162.
163.
164.
165.
166.
167.
168.
169.
170.
171.
172.
173.
174.
175.
176.
177.
178.
179.
180.
181.
182.
183.
184.
185.
186.
187.
188.
189.
190.
191.
192.
193.
194.
195.
196.
197.
198.
199.
200.
201.
            m.nOldNarah = AbonDK.Narah
            m.nOldPayed = AbonDK.Payed
            m.nOldRest = AbonDK.Rest
            
            m.nOldTrafik1 = AbonDK.Trafik1
            m.nOldAbonPay1 = AbonDK.AbonPay1
            m.nOldInter1 = AbonDK.Inter1
            m.nOldOther1 = AbonDK.Other1
            m.nOldNarah1 = AbonDK.Narah1
            m.nOldPayed1 = AbonDK.Payed1
            m.nOldRest1 = AbonDK.Rest1
            
            m.nOldTrafik2 = AbonDK.Trafik2
            m.nOldAbonPay2 = AbonDK.AbonPay2
            m.nOldInter2 = AbonDK.Inter2
            m.nOldOther2 = AbonDK.Other2
            m.nOldNarah2 = AbonDK.Narah2
            m.nOldPayed2 = AbonDK.Payed2
            m.nOldRest2 = AbonDK.Rest2
            
            m.nOldTrafik3 = AbonDK.Trafik3
            m.nOldAbonPay3 = AbonDK.AbonPay3
            m.nOldInter3 = AbonDK.Inter3
            m.nOldOther3 = AbonDK.Other3
            m.nOldNarah3 = AbonDK.Narah3
            m.nOldPayed3 = AbonDK.Payed3
            m.nOldRest3 = AbonDK.Rest3
            
            m.nOldTrafik4 = AbonDK.Trafik4
            m.nOldAbonPay4 = AbonDK.AbonPay4
            m.nOldInter4 = AbonDK.Inter4
            m.nOldOther4 = AbonDK.Other4
            m.nOldNarah4 = AbonDK.Narah4
            m.nOldPayed4 = AbonDK.Payed4
            m.nOldRest4 = AbonDK.Rest4
            
            m.nOldTrafik5 = AbonDK.Trafik5
            m.nOldAbonPay5 = AbonDK.AbonPay5
            m.nOldInter5 = AbonDK.Inter5
            m.nOldOther5 = AbonDK.Other5
            m.nOldNarah5 = AbonDK.Narah5
            m.nOldPayed5 = AbonDK.Payed5
            m.nOldRest5 = AbonDK.Rest5
            
            m.nOldTrafik6 = AbonDK.Trafik6
            m.nOldAbonPay6 = AbonDK.AbonPay6
            m.nOldInter6 = AbonDK.Inter6
            m.nOldOther6 = AbonDK.Other6
            m.nOldNarah6 = AbonDK.Narah6
            m.nOldPayed6 = AbonDK.Payed6
            m.nOldRest6 = AbonDK.Rest6
            
            m.nOldTrafik7 = AbonDK.Trafik7
            m.nOldAbonPay7 = AbonDK.AbonPay7
            m.nOldInter7 = AbonDK.Inter7
            m.nOldOther7 = AbonDK.Other7
            m.nOldNarah7 = AbonDK.Narah7
            m.nOldPayed7 = AbonDK.Payed7
            m.nOldRest7 = AbonDK.Rest7
            
            m.nOldTrafik8 = AbonDK.Trafik8
            m.nOldAbonPay8 = AbonDK.AbonPay8
            m.nOldInter8 = AbonDK.Inter8
            m.nOldOther8 = AbonDK.Other8
            m.nOldNarah8 = AbonDK.Narah8
            m.nOldPayed8 = AbonDK.Payed8
            m.nOldRest8 = AbonDK.Rest8
            
            m.nOldTrafik9 = AbonDK.Trafik9
            m.nOldAbonPay9 = AbonDK.AbonPay9
            m.nOldInter9 = AbonDK.Inter9
            m.nOldOther9 = AbonDK.Other9
            m.nOldNarah9 = AbonDK.Narah9
            m.nOldPayed9 = AbonDK.Payed9
            m.nOldRest9 = AbonDK.Rest9
            
            m.nOldTrafik10 = AbonDK.Trafik10
            m.nOldAbonPay10 = AbonDK.AbonPay10
            m.nOldInter10 = AbonDK.Inter10
            m.nOldOther10 = AbonDK.Other10
            m.nOldNarah10 = AbonDK.Narah10
            m.nOldPayed10 = AbonDK.Payed10
            m.nOldRest10 = AbonDK.Rest10
            
            m.nOldTrafik11 = AbonDK.Trafik11
            m.nOldAbonPay11 = AbonDK.AbonPay11
            m.nOldInter11 = AbonDK.Inter11
            m.nOldOther11 = AbonDK.Other11
            m.nOldNarah11 = AbonDK.Narah11
            m.nOldPayed11 = AbonDK.Payed11
            m.nOldRest11 = AbonDK.Rest11
            
            m.nOldTrafik12 = AbonDK.Trafik12
            m.nOldAbonPay12 = AbonDK.AbonPay12
            m.nOldInter12 = AbonDK.Inter12
            m.nOldOther12 = AbonDK.Other12
            m.nOldNarah12 = AbonDK.Narah12
            m.nOldPayed12 = AbonDK.Payed12
            m.nOldRest12 = AbonDK.Rest12
            
            LOCATE FOR ab_code = m.nAbCode2Merge

            REPLACE AbonDK.Narah WITH AbonDK.Narah + m.nOldNarah,;
                    AbonDK.Payed WITH AbonDK.Payed + m.nOldPayed,;
                    AbonDK.Rest WITH AbonDK.Rest + m.nOldRest
            REPLACE ;
                    AbonDK.Trafik1 WITH AbonDK.Trafik1 + m.nOldTrafik1,;
                    AbonDK.AbonPay1 WITH AbonDK.AbonPay1 + m.nOldAbonPay1,;
                    AbonDK.Inter1 WITH AbonDK.Inter1 + m.nOldInter1,;
                    AbonDK.Other1 WITH AbonDK.Other1 + m.nOldOther1,;
                    AbonDK.Narah1 WITH AbonDK.Narah1 + m.nOldNarah1,;
                    AbonDK.Payed1 WITH AbonDK.Payed1 + m.nOldPayed1,;
                    AbonDK.Rest1 WITH AbonDK.Rest1 + m.nOldRest1 
            REPLACE ;
                    AbonDK.Trafik2 WITH AbonDK.Trafik2 + m.nOldTrafik2,;
                    AbonDK.AbonPay2 WITH AbonDK.AbonPay2 + m.nOldAbonPay2,;
                    AbonDK.Inter2 WITH AbonDK.Inter2 + m.nOldInter2,;
                    AbonDK.Other2 WITH AbonDK.Other2 + m.nOldOther2,;
                    AbonDK.Narah2 WITH AbonDK.Narah2 + m.nOldNarah2,;
                    AbonDK.Payed2 WITH AbonDK.Payed2 + m.nOldPayed2,;
                    AbonDK.Rest2 WITH AbonDK.Rest2 + m.nOldRest2 
            REPLACE ;
                    AbonDK.Trafik3 WITH AbonDK.Trafik3 + m.nOldTrafik3,;
                    AbonDK.AbonPay3 WITH AbonDK.AbonPay3 + m.nOldAbonPay3,;
                    AbonDK.Inter3 WITH AbonDK.Inter3 + m.nOldInter3,;
                    AbonDK.Other3 WITH AbonDK.Other3 + m.nOldOther3,;
                    AbonDK.Narah3 WITH AbonDK.Narah3 + m.nOldNarah3,;
                    AbonDK.Payed3 WITH AbonDK.Payed3 + m.nOldPayed3,;
                    AbonDK.Rest3 WITH AbonDK.Rest3 + m.nOldRest3 
            REPLACE ;
                    AbonDK.Trafik4 WITH AbonDK.Trafik4 + m.nOldTrafik4,;
                    AbonDK.AbonPay4 WITH AbonDK.AbonPay4 + m.nOldAbonPay4,;
                    AbonDK.Inter4 WITH AbonDK.Inter4 + m.nOldInter4,;
                    AbonDK.Other4 WITH AbonDK.Other4 + m.nOldOther4,;
                    AbonDK.Narah4 WITH AbonDK.Narah4 + m.nOldNarah4,;
                    AbonDK.Payed4 WITH AbonDK.Payed4 + m.nOldPayed4,;
                    AbonDK.Rest4 WITH AbonDK.Rest4 + m.nOldRest4 
            REPLACE ;
                    AbonDK.Trafik5 WITH AbonDK.Trafik5 + m.nOldTrafik5,;
                    AbonDK.AbonPay5 WITH AbonDK.AbonPay5 + m.nOldAbonPay5,;
                    AbonDK.Inter5 WITH AbonDK.Inter5 + m.nOldInter5,;
                    AbonDK.Other5 WITH AbonDK.Other5 + m.nOldOther5,;
                    AbonDK.Narah5 WITH AbonDK.Narah5 + m.nOldNarah5,;
                    AbonDK.Payed5 WITH AbonDK.Payed5 + m.nOldPayed5,;
                    AbonDK.Rest5 WITH AbonDK.Rest5 + m.nOldRest5 
            REPLACE ;
                    AbonDK.Trafik6 WITH AbonDK.Trafik6 + m.nOldTrafik6,;
                    AbonDK.AbonPay6 WITH AbonDK.AbonPay6 + m.nOldAbonPay6,;
                    AbonDK.Inter6 WITH AbonDK.Inter6 + m.nOldInter6,;
                    AbonDK.Other6 WITH AbonDK.Other6 + m.nOldOther6,;
                    AbonDK.Narah6 WITH AbonDK.Narah6 + m.nOldNarah6,;
                    AbonDK.Payed6 WITH AbonDK.Payed6 + m.nOldPayed6,;
                    AbonDK.Rest6 WITH AbonDK.Rest6 + m.nOldRest6 
            REPLACE ;
                    AbonDK.Trafik7 WITH AbonDK.Trafik7 + m.nOldTrafik7,;
                    AbonDK.AbonPay7 WITH AbonDK.AbonPay7 + m.nOldAbonPay7,;
                    AbonDK.Inter7 WITH AbonDK.Inter7 + m.nOldInter7,;
                    AbonDK.Other7 WITH AbonDK.Other7 + m.nOldOther7,;
                    AbonDK.Narah7 WITH AbonDK.Narah7 + m.nOldNarah7,;
                    AbonDK.Payed7 WITH AbonDK.Payed7 + m.nOldPayed7,;
                    AbonDK.Rest7 WITH AbonDK.Rest7 + m.nOldRest7 
            REPLACE ;
                    AbonDK.Trafik8 WITH AbonDK.Trafik8 + m.nOldTrafik8,;
                    AbonDK.AbonPay8 WITH AbonDK.AbonPay8 + m.nOldAbonPay8,;
                    AbonDK.Inter8 WITH AbonDK.Inter8 + m.nOldInter8,;
                    AbonDK.Other8 WITH AbonDK.Other8 + m.nOldOther8,;
                    AbonDK.Narah8 WITH AbonDK.Narah8 + m.nOldNarah8,;
                    AbonDK.Payed8 WITH AbonDK.Payed8 + m.nOldPayed8,;
                    AbonDK.Rest8 WITH AbonDK.Rest8 + m.nOldRest8 
            REPLACE ;
                    AbonDK.Trafik9 WITH AbonDK.Trafik9 + m.nOldTrafik9,;
                    AbonDK.AbonPay9 WITH AbonDK.AbonPay9 + m.nOldAbonPay9,;
                    AbonDK.Inter9 WITH AbonDK.Inter9 + m.nOldInter9,;
                    AbonDK.Other9 WITH AbonDK.Other9 + m.nOldOther9,;
                    AbonDK.Narah9 WITH AbonDK.Narah9 + m.nOldNarah9,;
                    AbonDK.Payed9 WITH AbonDK.Payed9 + m.nOldPayed9,;
                    AbonDK.Rest9 WITH AbonDK.Rest9 + m.nOldRest9 
            REPLACE ;
                    AbonDK.Trafik10 WITH AbonDK.Trafik10 + m.nOldTrafik10,;
                    AbonDK.AbonPay10 WITH AbonDK.AbonPay10 + m.nOldAbonPay10,;
                    AbonDK.Inter10 WITH AbonDK.Inter10 + m.nOldInter10,;
                    AbonDK.Other10 WITH AbonDK.Other10 + m.nOldOther10,;
                    AbonDK.Narah10 WITH AbonDK.Narah10 + m.nOldNarah10,;
                    AbonDK.Payed10 WITH AbonDK.Payed10 + m.nOldPayed10,;
                    AbonDK.Rest10 WITH AbonDK.Rest10 + m.nOldRest10 
            REPLACE ;
                    AbonDK.Trafik11 WITH AbonDK.Trafik11 + m.nOldTrafik11,;
                    AbonDK.AbonPay11 WITH AbonDK.AbonPay11 + m.nOldAbonPay11,;
                    AbonDK.Inter11 WITH AbonDK.Inter11 + m.nOldInter11,;
                    AbonDK.Other11 WITH AbonDK.Other11 + m.nOldOther11,;
                    AbonDK.Narah11 WITH AbonDK.Narah11 + m.nOldNarah11,;
                    AbonDK.Payed11 WITH AbonDK.Payed11 + m.nOldPayed11,;
                    AbonDK.Rest11 WITH AbonDK.Rest11 + m.nOldRest11 
            REPLACE ;
                    AbonDK.Trafik12 WITH AbonDK.Trafik12 + m.nOldTrafik12,;
                    AbonDK.AbonPay12 WITH AbonDK.AbonPay12 + m.nOldAbonPay12,;
                    AbonDK.Inter12 WITH AbonDK.Inter12 + m.nOldInter12,;
                    AbonDK.Other12 WITH AbonDK.Other12 + m.nOldOther12,;
                    AbonDK.Narah12 WITH AbonDK.Narah12 + m.nOldNarah12,;
                    AbonDK.Payed12 WITH AbonDK.Payed12 + m.nOldPayed12,;
                    AbonDK.Rest12 WITH AbonDK.Rest12 + m.nOldRest12 

может это как-то изящнее мона сделать или иначе/проще/умнее

сенксь
...
Рейтинг: 0 / 0
Как сложить значения полей 2х записей в одну в одной базе
    #33990732
Фотография Aleksey-K
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вам надо сложить одинаковые поля из разных записей в таблице AbonDK?
С уважением, Алексей
...
Рейтинг: 0 / 0
Как сложить значения полей 2х записей в одну в одной базе
    #33990760
CTAC-KO
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ну да, там вот в базе этой 12 (соотв. месяцам) групп по 7 полей плюс переходные с года на год 3 шт, и еще 5 полей (цифровые идентификаторы и символьные)
...
Рейтинг: 0 / 0
Как сложить значения полей 2х записей в одну в одной базе
    #33990950
Jura.K
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
можно попробовать вот так
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
SCATTER MEMVAR 
LOCATE FOR ab_code = m.nAbCode2Merge
FOR i =  1  TO FCOUNT('AbonDK')
	lcNamePola=FIELD(i,'AbonDK')
	lcNameMemvar='m.'+lcNamePola
	IF TYPE(lcNamePola)='N' AND TYPE(lcNameMemvar)='N'
		REPLACE &lcNamePola. WITH &lcNamePola.+&lcNameMemvar 
	ENDIF 	
ENDFOR  
или так если таблицы абсолютно одинаковы, но есть поля которые не следует складывать
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
SCATTER MEMVAR 
LOCATE FOR ab_code = m.nAbCode2Merge
FOR i =  1  TO FCOUNT('AbonDK')
	lcNamePola=FIELD(i,'AbonDK')
	lcNameMemvar='m.'+lcNamePola
	IF !INLIST(TRIM(lcNamePola)+' ','AB_CODE ','AB_CODE2 ')
		REPLACE &lcNamePola. WITH &lcNamePola.+&lcNameMemvar 
	ENDIF 	
ENDFOR  
...
Рейтинг: 0 / 0
Как сложить значения полей 2х записей в одну в одной базе
    #33994394
Jura.K
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну что это то что ты спрашивал?
...
Рейтинг: 0 / 0
Как сложить значения полей 2х записей в одну в одной базе
    #33999431
CTAC-KO
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Спасибо, типа того я и спрашивал, только сделал несколько по-иному, тоже с макроподстановкой... можно по-идее еще реализовать через fcount()/fname() - все складываемые поля идут подряд начиная с 5-го поля до последнего. мона ведь как-то еще и через массив замутить, тада макроподстав меньше будет...
Код: plaintext
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.
         m.nOldNarah = AbonDK.Narah
         m.nOldPayed = AbonDK.Payed
         m.nOldRest = AbonDK.Rest
         
         FOR m.lnMonth =  1  TO  12 
            m.lcSfx = LTRIM(STR(m.lnMonth))
            m.nOldTrafik&lcSfx = AbonDK.Trafik&lcSfx 
            m.nOldAbonPay&lcSfx = AbonDK.AbonPay&lcSfx 
            m.nOldInter&lcSfx = AbonDK.Inter&lcSfx 
            m.nOldOther&lcSfx = AbonDK.Other&lcSfx 
            m.nOldNarah&lcSfx = AbonDK.Narah&lcSfx 
            m.nOldPayed&lcSfx = AbonDK.Payed&lcSfx 
            m.nOldRest&lcSfx = AbonDK.Rest&lcSfx 
         ENDFOR 
            
         DELETE 
         LOCATE FOR ab_code = m.nAbCode2Merge

         REPLACE AbonDK.Narah WITH AbonDK.Narah + m.nOldNarah,;
                 AbonDK.Payed WITH AbonDK.Payed + m.nOldPayed,;
                 AbonDK.Rest WITH AbonDK.Rest + m.nOldRest

         FOR m.lnMonth =  1  TO  12 
            m.lcSfx = LTRIM(STR(m.lnMonth))
            REPLACE ;
		 AbonDK.Trafik&lcSfx WITH m.nOldTrafik&lcSfx + AbonDK.Trafik&lcSfx ,;
		AbonDK.AbonPay&lcSfx WITH m.nOldAbonPay&lcSfx + AbonDK.AbonPay&lcSfx ,;
		  AbonDK.Inter&lcSfx WITH m.nOldInter&lcSfx + AbonDK.Inter&lcSfx ,;
		  AbonDK.Other&lcSfx WITH m.nOldOther&lcSfx + AbonDK.Other&lcSfx ,;
		  AbonDK.Narah&lcSfx WITH m.nOldNarah&lcSfx + AbonDK.Narah&lcSfx ,;
		  AbonDK.Payed&lcSfx WITH m.nOldPayed&lcSfx + AbonDK.Payed&lcSfx ,;
		   AbonDK.Rest&lcSfx WITH m.nOldRest&lcSfx + AbonDK.Rest&lcSfx 
         ENDFOR 
у меня таблица - одна, сложить значения полей нужно только указанные. Иначе, по твоему примеру, у меня сложатся еще и поля RecID и ab_code (т.к. числовые они) - а энтого низзя делать.
...
Рейтинг: 0 / 0
Как сложить значения полей 2х записей в одну в одной базе
    #33999533
CTAC-KOСпасибо, типа того я и спрашивал, только сделал несколько по-иному, тоже с макроподстановкой... можно по-идее еще реализовать через fcount()/fname() - все складываемые поля идут подряд начиная с 5-го поля до последнего. мона ведь как-то еще и через массив замутить, тада макроподстав меньше будет...
Код: plaintext
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.
         m.nOldNarah = AbonDK.Narah
         m.nOldPayed = AbonDK.Payed
         m.nOldRest = AbonDK.Rest
         
         FOR m.lnMonth =  1  TO  12 
            m.lcSfx = LTRIM(STR(m.lnMonth))
            m.nOldTrafik&lcSfx = AbonDK.Trafik&lcSfx 
            m.nOldAbonPay&lcSfx = AbonDK.AbonPay&lcSfx 
            m.nOldInter&lcSfx = AbonDK.Inter&lcSfx 
            m.nOldOther&lcSfx = AbonDK.Other&lcSfx 
            m.nOldNarah&lcSfx = AbonDK.Narah&lcSfx 
            m.nOldPayed&lcSfx = AbonDK.Payed&lcSfx 
            m.nOldRest&lcSfx = AbonDK.Rest&lcSfx 
         ENDFOR 
            
         DELETE 
         LOCATE FOR ab_code = m.nAbCode2Merge

         REPLACE AbonDK.Narah WITH AbonDK.Narah + m.nOldNarah,;
                 AbonDK.Payed WITH AbonDK.Payed + m.nOldPayed,;
                 AbonDK.Rest WITH AbonDK.Rest + m.nOldRest

         FOR m.lnMonth =  1  TO  12 
            m.lcSfx = LTRIM(STR(m.lnMonth))
            REPLACE ;
		 AbonDK.Trafik&lcSfx WITH m.nOldTrafik&lcSfx + AbonDK.Trafik&lcSfx ,;
		AbonDK.AbonPay&lcSfx WITH m.nOldAbonPay&lcSfx + AbonDK.AbonPay&lcSfx ,;
		  AbonDK.Inter&lcSfx WITH m.nOldInter&lcSfx + AbonDK.Inter&lcSfx ,;
		  AbonDK.Other&lcSfx WITH m.nOldOther&lcSfx + AbonDK.Other&lcSfx ,;
		  AbonDK.Narah&lcSfx WITH m.nOldNarah&lcSfx + AbonDK.Narah&lcSfx ,;
		  AbonDK.Payed&lcSfx WITH m.nOldPayed&lcSfx + AbonDK.Payed&lcSfx ,;
		   AbonDK.Rest&lcSfx WITH m.nOldRest&lcSfx + AbonDK.Rest&lcSfx 
         ENDFOR 
у меня таблица - одна, сложить значения полей нужно только указанные. Иначе, по твоему примеру, у меня сложатся еще и поля RecID и ab_code (т.к. числовые они) - а энтого низзя делать.
А почему нельзя использовать Select-SQL с суммированием и группировкой.
Типа того:
Код: plaintext
1.
2.
3.
4.
5.
select ab_code, sum(AbonDK.Narah) as Narah,sum(AbonDK.Payed) as Payed,;
         sum(AbonDK.Rest) as Rest, ....
from AbonDk ;
group by ab_code ;
into cursor query
где вместо многоточия необходимо написать остальные суммируемые поля...
...
Рейтинг: 0 / 0
Как сложить значения полей 2х записей в одну в одной базе
    #34000388
Jura.K
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Можно и через массив, можно и через SELECT
А по поводу

CTAC-KOу меня таблица - одна, сложить значения полей нужно только указанные. Иначе, по твоему примеру, у меня сложатся еще и поля RecID и ab_code (т.к. числовые они) - а энтого низзя делать.

Нет не сложится для этого я добавил условие во втором варианте

Код: plaintext
IF !INLIST(TRIM(lcNamePola)+' ','AB_CODE ','AB_CODE2 ')

поставь
Код: plaintext
IF !INLIST(TRIM(lcNamePola)+' ','AB_CODE ','RECID ')
...
Рейтинг: 0 / 0
Как сложить значения полей 2х записей в одну в одной базе
    #34009635
CTAC-KO
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Станислав С
А почему нельзя использовать Select-SQL с суммированием и группировкой.
Типа того:
Код: plaintext
1.
2.
3.
4.
5.
select ab_code, sum(AbonDK.Narah) as Narah,sum(AbonDK.Payed) as Payed,;
         sum(AbonDK.Rest) as Rest, ....
from AbonDk ;
group by ab_code ;
into cursor query
где вместо многоточия необходимо написать остальные суммируемые поля...
неудобно - нужно перечислять все складываемые поля либо только в апдейте/риплейсе либо и там и в селекте. Мне нуда объеденять тока 2 записи в одной базе, ни больше ни меньше. Просто лень 12 групп по 7 полей перечислять.

2 Jura.K
ок, действительно так получится. Просто 2 вещи которые я не понял - это ! и работа со "скатеренной" переменной. Потом догадался что ! это .NOT., тогда более-менее врубился :)
тока придется мутить типа того:
Код: plaintext
1.
2.
3.
4.
	IF TYPE(lcNamePola)='N' AND TYPE(lcNameMemvar)='N' AND;
           !INLIST(TRIM(lcNamePola)+' ','AB_CODE ','AB_CODE2 ')
		REPLACE &lcNamePola. WITH &lcNamePola.+&lcNameMemvar 
	ENDIF 	
ну и цикл начинать мона де-то с 5ти, тогда как раз буду попадать на первое нужное поле. можно даже и конечное значение задать жестко, при условии что в базу уже не будут вставляться поля, а тем более сверху, хотя в конец - мона бует.
...
Рейтинг: 0 / 0
Как сложить значения полей 2х записей в одну в одной базе
    #34010899
Jura.K
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Так я и думал что не хочется именно перечислять все поля поэтому и предложил цикл
а SCATTER MEMVAR можно заменить на SCATTER NAME, правда придется использовать класс
! - это NOT так и есть просто так записывать проще
если структура не меняется и заранее известно положение полей то можно использовать и порядковый номер но я бы так не делал
лучше уж
Код: plaintext
1.
2.
3.
IF TYPE(lcNamePola)='N' AND TYPE(lcNameMemvar)='N' AND;
          NOT INLIST(TRIM(lcNamePola)+' ','AB_CODE ','AB_CODE2 ')
	REPLACE &lcNamePola. WITH &lcNamePola.+&lcNameMemvar 
ENDIF 	
...
Рейтинг: 0 / 0
10 сообщений из 10, страница 1 из 1
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Как сложить значения полей 2х записей в одну в одной базе
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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