powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Из FoxPro в MySQL
3 сообщений из 3, страница 1 из 1
Из FoxPro в MySQL
    #34596363
c00ler
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ребята, помогите пожалуйста перевести исходник FoxPro
На MySQL - тоесть создать запросы исходя из исходника FoxPro.

В MySQL импортировал dbf которые использует FoxPro.
А вот как дальше отталкиватся не могу понять, потому что не могу сообразить в исходниках Фокса.
А точнее увидеть логику где и откуда берет и с чем суммирует.



Структура dbf - warmbase, watebase, elecbase

CODABON varchar
DATE date
CODTPLAT varchar
NUMBAND varchar
NPACH varchar
CODOPLAT varchar
SUMMPOPL decimal
SUMMDOLG decimal
K_OLDPCOUN int
K_NEWPCOUN int
K_POWER int
R_POWER int
B_DATE date
NTARIF smallint
ZN tinyint
FLAG varchar
SUMBALANCE decimal
DATECHANGE date
CODOPER varchar
PARTTYPE tinyint
DOCUMENTID varchar


Исходник FoxPro

Код: 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.
202.
203.
204.
205.
206.
207.
208.
209.
210.
211.
212.
213.
214.
215.
216.
217.
218.
219.
220.
221.
222.
223.
224.
225.
226.
227.
228.
229.
230.
231.
232.
233.
234.
235.
236.
237.
238.
239.
240.
241.
242.
243.
244.
245.
246.
247.
248.
249.
250.
251.
252.
253.
254.
255.
256.
257.
258.
259.
260.
261.
262.
263.
264.
265.
266.
267.
268.
vari1500=SELECT()

SET DELETED ON
IF (USED('tempall'))
  USE IN tempall
  ENDIF
COPY FILE copytemp.dbf TO c:\kvazar30.wks\ 0 \tempall.dbf
COPY FILE copytemp.cdx TO c:\kvazar30.wks\ 0 \tempall.cdx

USE c:\kvazar30.wks\ 0 \tempall IN  0  EXCLUSIVE

IF (USED('showall'))
  USE IN showall
  ENDIF
COPY FILE copyshow.dbf TO c:\kvazar30.wks\ 0 \showall.dbf
COPY FILE copyshow.cdx TO c:\kvazar30.wks\ 0 \showall.cdx

USE c:\kvazar30.wks\ 0 \showall IN  0  EXCLUSIVE 


SELECT tempall
zap


GridRecordSource = thisform.page.page4.Grid1.RecordSource
thisform.page.page4.Grid1.RecordSource = ''

SELECT showall
zap
thisform.page.page4.Grid1.RecordSource = GridRecordSource
thisform.page.page4.grid1.column1.Visible=.f.
thisform.page.page4.grid1.column10.width= 200 


var01=abonents.codabon


SELECT warmbase
SET ORDER TO abonent
GO top
SEEK(var01)

SCAN WHILE codabon==var01
  SELECT tempall
  APPEND BLANK
  stri0100=ALLTRIM(warmbase.codoplat)
  DO CASE   
    CASE stri0100=="01"
      replace pay WITH warmbase.summpopl
      replace oplata WITH oplata+warmbase.summpopl
      replace note WITH ALLTRIM(note)+"  êâèò.:"+ALLTRIM(STR(warmbase.summpopl, 10 , 2 ))
      
    CASE stri0100=="82"
      replace pay WITH warmbase.summpopl
      replace lgoty WITH lgoty+warmbase.summpopl
      replace note WITH ALLTRIM(note)+"  ëüãîòà(ñóáñèäèÿ):"+ALLTRIM(STR(warmbase.summpopl, 10 , 2 ))

    CASE stri0100=="02"
    replace note WITH ALLTRIM(note)+"  íà÷èñë(ìåìî):"+ALLTRIM(STR(warmbase.summdolg, 10 , 2 ))
    replace nach WITH warmbase.summdolg
    replace nachosn WITH nachosn+warmbase.summdolg

    CASE stri0100=="92"
    replace note WITH ALLTRIM(note)+"  íà÷èñë(Îòîï):"+ALLTRIM(STR(warmbase.summdolg, 10 , 2 ))
    replace nach WITH warmbase.summdolg
    replace nachoghs WITH nachoghs+warmbase.summdolg

    OTHERWISE 
    replace note WITH ALLTRIM(note)+"  íà÷èñë(íåèçâ):"+ALLTRIM(STR(warmbase.summdolg, 10 , 2 ))
    replace nach WITH warmbase.summdolg
    replace nachosn WITH nachosn+warmbase.summdolg
    endcase
    
  replace month WITH MONTH(warmbase.date)
  replace year WITH year(warmbase.date)
  
  ENDSCAN
  

SELECT watebase
SET ORDER TO abonent
GO top
SEEK(var01)

SCAN WHILE codabon==var01
  SELECT tempall
  APPEND BLANK

  stri0100=ALLTRIM(watebase.codoplat)
  DO CASE   
    CASE stri0100=="01"
      replace pay WITH watebase.summpopl
      replace note WITH ALLTRIM(note)+"  êâèò.:"+ALLTRIM(STR(watebase.summpopl, 10 , 2 ))
      replace oplata WITH oplata+watebase.summpopl
    CASE stri0100=="82"
      replace pay WITH watebase.summpopl
      replace note WITH ALLTRIM(note)+"  ëüãîòà(ñóáñèäèÿ):"+ALLTRIM(STR(watebase.summpopl, 10 , 2 ))
      replace lgoty WITH lgoty+watebase.summpopl

    CASE stri0100=="02"
    replace note WITH ALLTRIM(note)+"  íà÷èñë(ìåìî):"+ALLTRIM(STR(watebase.summdolg, 10 , 2 ))
    replace nach WITH watebase.summdolg
    replace nachosn WITH nachosn+watebase.summdolg

    CASE stri0100=="92"
    replace note WITH ALLTRIM(note)+"  íà÷èñë(ÃÂÑ):"+ALLTRIM(STR(watebase.summdolg, 10 , 2 ))
    replace nach WITH watebase.summdolg
    replace nachoghs WITH nachoghs+watebase.summdolg

    OTHERWISE 
    replace note WITH ALLTRIM(note)+"  íà÷èñë(íåèçâ):"+ALLTRIM(STR(watebase.summdolg, 10 , 2 ))
    replace nach WITH watebase.summdolg
    replace nachosn WITH nachosn+watebase.summdolg
    endcase



  replace month WITH MONTH(watebase.date)
  replace year WITH year(watebase.date)
  
  ENDSCAN
  
SELECT elecbase
SET ORDER TO abonent
GO top
SEEK(var01)

SCAN WHILE codabon==var01
  SELECT tempall
  APPEND BLANK
    
  stri0100=ALLTRIM(elecbase.codoplat)
  DO CASE   
    CASE stri0100=="01"
      replace pay WITH elecbase.summpopl
      replace oplata WITH oplata+elecbase.summpopl
      replace note WITH ALLTRIM(note)+"  êâèò.:"+ALLTRIM(STR(elecbase.summpopl, 10 , 2 ))
    CASE stri0100=="82"
      replace pay WITH elecbase.summpopl
      replace lgoty WITH lgoty+elecbase.summpopl 
      replace note WITH ALLTRIM(note)+"  ëüãîòà(ñóáñèäèÿ):"+ALLTRIM(STR(elecbase.summpopl, 10 , 2 ))

    CASE stri0100=="02"
    replace note WITH ALLTRIM(note)+"  íà÷èñë(ìåìî):"+ALLTRIM(STR(elecbase.summdolg, 10 , 2 ))
    replace nach WITH elecbase.summdolg
    replace nachosn WITH nachosn+elecbase.summdolg
    
    CASE stri0100=="92"
    replace note WITH ALLTRIM(note)+"  íà÷èñë(äîï):"+ALLTRIM(STR(elecbase.summdolg, 10 , 2 ))
    replace nach WITH elecbase.summdolg
    replace nachosn WITH nachosn+elecbase.summdolg

    OTHERWISE 
    replace note WITH ALLTRIM(note)+"  íà÷èñë(íåèçâ):"+ALLTRIM(STR(elecbase.summdolg, 10 , 2 ))
    replace nach WITH elecbase.summdolg
    replace nachosn WITH nachosn+elecbase.summdolg
    endcase

    
  replace month WITH MONTH(elecbase.date)
  replace year WITH year(elecbase.date)
  
  ENDSCAN
  
SELECT tempall
SET ORDER TO YM   && STR(YEAR, 4 )+STR(MONTH, 2 )

GO top
SCAN WHILE !EOF()
  mon0000=month
  yea0000=year
  pay0000= 0 
  nach0000= 0 
  note0000=""
  opla0000= 0 
  lgot0000= 0 
  corr0000= 0 
  nosn0000= 0 
  nlgo0000= 0 
  ncor0000= 0 
  nogh0000= 0 
  stropl=""
  strlgot=""
  strcorr=""
  strosn=""
  strnlgt=""
  strncor=""
  strnogh=""
  SCAN WHILE year=yea0000 .and. month=mon0000
    pay0000=pay0000+pay
    nach0000=nach0000+nach
    opla0000=opla0000+oplata
    IF (oplata<> 0 ) 
      stropl=stropl+"  "+ALLTRIM(STR(oplata, 10 , 2 ))
      endif

    lgot0000=lgot0000+lgoty
    IF (lgoty<> 0 ) 
      strlgot=strlgot+"  "+ALLTRIM(STR(lgoty, 10 , 2 ))
      endif

    corr0000=corr0000+correct
    IF (correct<> 0 ) 
      strcorr=strcorr+"  "+ALLTRIM(STR(correct, 10 , 2 ))
      endif

    nosn0000=nosn0000+nachosn
    IF (nachosn<> 0 ) 
      strosn=strosn+"  "+ALLTRIM(STR(nachosn, 10 , 2 ))
      endif

    nlgo0000=nlgo0000+nachlgoty
    IF (nachlgoty<> 0 ) 
      strnlgt=strnlgt+"  "+ALLTRIM(STR(nachlgoty, 10 , 2 ))
      endif

    ncor0000=ncor0000+nachcorr
    IF (nachcorr<> 0 ) 
      strncor=strncor+"  "+ALLTRIM(STR(nachcorr, 10 , 2 ))
      endif

    nogh0000=nogh0000+nachoghs
    IF (nachoghs<> 0 ) 
      strnogh=strnogh+"  "+ALLTRIM(STR(nachoghs, 10 , 2 ))
      endif
    
    note0000=ALLTRIM(note0000)+" "+ALLTRIM(note)
    ENDSCAN

  SKIP - 1 

  SELECT showall
  APPEND BLANK
  replace month WITH tempall.month
  replace year WITH tempall.year
  replace pay WITH pay0000
  replace nach WITH nach0000
  replace adres WITH abonents.namestreet
  replace fio WITH abonents.fio
  replace note WITH note0000
  replace oplata WITH opla0000
  replace lgoty WITH lgot0000
  replace correct WITH corr0000
  replace nachosn WITH nosn0000
  replace nachoghs WITH nogh0000
  replace nachcorr WITH ncor0000

  replace striopl WITH stropl
  replace strilgo WITH strlgot
  replace stricor WITH strcorr
  replace striosn WITH strosn
  replace strinlg WITH strnlgt
  replace strinco WITH strncor
  replace strinog WITH strnogh
  
  ENDSCAN
  
USE IN tempall

SELECT showall
GO top
sal0000=endsaldo
SCAN WHILE !EOF()
  replace startsaldo WITH sal0000
  replace endsaldo WITH startsaldo+nach+pay
  sal0000=endsaldo
  ENDSCAN
SELECT (vari1500)
thisform.refresh
...
Рейтинг: 0 / 0
Из FoxPro в MySQL
    #34596394
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Думаю сходу полный исчерпывающий ответ дадут в форуме "Работа"

Немножко синтаксис поясню, а дальше сам:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
USE c:\kvazar30.wks\ 0 \showall IN  0  EXCLUSIVE && Открыть таблицу монопольно
SELECT tempall && переключиться в рабочую область с таблицей tempall
zap && очистить таблицу в текущей рабочей области

var01=abonents.codabon && присвоить значение переменной var01

SET ORDER TO abonent && установить текущим индекс abonent в текущей рабочей области
GO top && перейти в начало таблицы  в текущей рабочей области
SEEK(var01) && найти первую запись, где значение текущего индекса равно var01 

SCAN WHILE codabon==var01 && перебирать записи начиная с текущей пока codabon равно var01
  SELECT tempall
  APPEND BLANK && добавить пустую запись 
  stri0100=ALLTRIM(warmbase.codoplat)
  DO CASE && выполняется только один CASE или OTHERWISE если не один CASE не выполнен
    CASE stri0100=="01"
      replace pay WITH warmbase.summpopl && заменить значение поля pay текущей таблицы на warmbase.summpopl
 ...
    OTHERWISE 
    endcase
...
ENDSCAN && переход на следующую запись в цикле SCAN

SKIP - 1  && перейти на предыдущую запись в текущей рабочей области
...
Рейтинг: 0 / 0
Из FoxPro в MySQL
    #34596408
c00lerРебята, помогите пожалуйста перевести исходник FoxPro
На MySQL - тоесть создать запросы исходя из исходника FoxPro.

В MySQL импортировал dbf которые использует FoxPro.
А вот как дальше отталкиватся не могу понять, потому что не могу сообразить в исходниках Фокса.
А точнее увидеть логику где и откуда берет и с чем суммирует.



Структура dbf - warmbase, watebase, elecbase

CODABON varchar
DATE date
CODTPLAT varchar
NUMBAND varchar
NPACH varchar
CODOPLAT varchar
SUMMPOPL decimal
SUMMDOLG decimal
K_OLDPCOUN int
K_NEWPCOUN int
K_POWER int
R_POWER int
B_DATE date
NTARIF smallint
ZN tinyint
FLAG varchar
SUMBALANCE decimal
DATECHANGE date
CODOPER varchar
PARTTYPE tinyint
DOCUMENTID varchar


Исходник FoxPro...

Держи комментарии:
Код: 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.
202.
203.
204.
205.
206.
207.
208.
209.
210.
211.
212.
213.
214.
215.
216.
217.
218.
219.
220.
221.
222.
223.
224.
225.
226.
227.
228.
229.
230.
231.
232.
233.
234.
235.
236.
237.
238.
239.
240.
241.
242.
243.
244.
245.
246.
247.
248.
249.
250.
251.
252.
253.
254.
255.
256.
257.
258.
259.
260.
261.
262.
263.
264.
265.
266.
267.
268.
269.
270.
271.
272.
273.
274.
275.
276.
277.
278.
279.
280.
281.
282.
283.
284.
285.
286.
287.
288.
289.
290.
291.
292.
293.
294.
295.
296.
297.
298.
299.
* Запоминаем таблицу, с которой работаем
vari1500=SELECT()

* включаем режим игнорирования удаленных записей
SET DELETED ON

* Удаляем все записи из временных таблиц с сохранением структуры таблиц
IF (USED('tempall'))
  USE IN tempall
  ENDIF
COPY FILE copytemp.dbf TO c:\kvazar30.wks\ 0 \tempall.dbf
COPY FILE copytemp.cdx TO c:\kvazar30.wks\ 0 \tempall.cdx

USE c:\kvazar30.wks\ 0 \tempall IN  0  EXCLUSIVE

IF (USED('showall'))
  USE IN showall
  ENDIF
COPY FILE copyshow.dbf TO c:\kvazar30.wks\ 0 \showall.dbf
COPY FILE copyshow.cdx TO c:\kvazar30.wks\ 0 \showall.cdx

USE c:\kvazar30.wks\ 0 \showall IN  0  EXCLUSIVE 


SELECT tempall
zap


GridRecordSource = thisform.page.page4.Grid1.RecordSource
thisform.page.page4.Grid1.RecordSource = ''

SELECT showall
zap

* Изменяем Грид на форме...
thisform.page.page4.Grid1.RecordSource = GridRecordSource
thisform.page.page4.grid1.column1.Visible=.f.
thisform.page.page4.grid1.column10.width= 200 

*Задаем переменную для поиска и анализа абонента
var01=abonents.codabon

*Подсчитываем платежи/долги/льготы и т.д. абонента
SELECT warmbase
*Упорядочиваем записи по абоненту (= order by codabon)
SET ORDER TO abonent
GO top
*Ищем место, откуда начинаются записи по абоненту
SEEK(var01)

* Обрабатываем каждую запись (= fetch into <переменные> в Oracle)
SCAN WHILE codabon==var01
  SELECT tempall
  *добавляем пустую запись (т.е. все поля записи = NULL) 
  APPEND BLANK
  stri0100=ALLTRIM(warmbase.codoplat)
  DO CASE   
    CASE stri0100=="01" && если код оплаты равен  01 , то делаем этот блок
      * Замещаем NULL в указанных полях на конкретное значение
      *(= update tempall set <field>=<value> where rowid=...)
      replace pay WITH warmbase.summpopl
      replace oplata WITH oplata+warmbase.summpopl
      replace note WITH ALLTRIM(note)+"  êâèò.:"+ALLTRIM(STR(warmbase.summpopl, 10 , 2 ))
      
    CASE stri0100=="82" && если код оплаты равен  82 , то делаем этот блок
     * Замещаем NULL в указанных полях на конкретное значение
      *(= update tempall set <field>=<value> where rowid=...)
      replace pay WITH warmbase.summpopl
      replace lgoty WITH lgoty+warmbase.summpopl
      replace note WITH ALLTRIM(note)+"  ëüãîòà(ñóáñèäèÿ):"+ALLTRIM(STR(warmbase.summpopl, 10 , 2 ))

    CASE stri0100=="02" && если код оплаты равен  02 , то делаем этот блок
     * Замещаем NULL в указанных полях на конкретное значение
      *(= update tempall set <field>=<value> where rowid=...)
    replace note WITH ALLTRIM(note)+"  íà÷èñë(ìåìî):"+ALLTRIM(STR(warmbase.summdolg, 10 , 2 ))
    replace nach WITH warmbase.summdolg
    replace nachosn WITH nachosn+warmbase.summdolg

    CASE stri0100=="92" && если код оплаты равен  92 , то делаем этот блок
     * Замещаем NULL в указанных полях на конкретное значение
      *(= update tempall set <field>=<value> where rowid=...)
    replace note WITH ALLTRIM(note)+"  íà÷èñë(Îòîï):"+ALLTRIM(STR(warmbase.summdolg, 10 , 2 ))
    replace nach WITH warmbase.summdolg
    replace nachoghs WITH nachoghs+warmbase.summdolg

    OTHERWISE && если код оплаты не равен ни одному из вышеприведенных значений, то делаем этот блок
     * Замещаем NULL в указанных полях на конкретное значение
      *(= update tempall set <field>=<value> where rowid=...)
    replace note WITH ALLTRIM(note)+"  íà÷èñë(íåèçâ):"+ALLTRIM(STR(warmbase.summdolg, 10 , 2 ))
    replace nach WITH warmbase.summdolg
    replace nachosn WITH nachosn+warmbase.summdolg
    endcase
    
     * Замещаем NULL в указанных полях на конкретное значение
      *(= update tempall set <field>=<value> where rowid=...)
  replace month WITH MONTH(warmbase.date)
  replace year WITH year(warmbase.date)
  
  ENDSCAN
  
* Делаем то же самое с другой таблицей
SELECT watebase
SET ORDER TO abonent
GO top
SEEK(var01)

SCAN WHILE codabon==var01
  SELECT tempall
  APPEND BLANK

  stri0100=ALLTRIM(watebase.codoplat)
  DO CASE   
    CASE stri0100=="01"
      replace pay WITH watebase.summpopl
      replace note WITH ALLTRIM(note)+"  êâèò.:"+ALLTRIM(STR(watebase.summpopl, 10 , 2 ))
      replace oplata WITH oplata+watebase.summpopl
    CASE stri0100=="82"
      replace pay WITH watebase.summpopl
      replace note WITH ALLTRIM(note)+"  ëüãîòà(ñóáñèäèÿ):"+ALLTRIM(STR(watebase.summpopl, 10 , 2 ))
      replace lgoty WITH lgoty+watebase.summpopl

    CASE stri0100=="02"
    replace note WITH ALLTRIM(note)+"  íà÷èñë(ìåìî):"+ALLTRIM(STR(watebase.summdolg, 10 , 2 ))
    replace nach WITH watebase.summdolg
    replace nachosn WITH nachosn+watebase.summdolg

    CASE stri0100=="92"
    replace note WITH ALLTRIM(note)+"  íà÷èñë(ÃÂÑ):"+ALLTRIM(STR(watebase.summdolg, 10 , 2 ))
    replace nach WITH watebase.summdolg
    replace nachoghs WITH nachoghs+watebase.summdolg

    OTHERWISE 
    replace note WITH ALLTRIM(note)+"  íà÷èñë(íåèçâ):"+ALLTRIM(STR(watebase.summdolg, 10 , 2 ))
    replace nach WITH watebase.summdolg
    replace nachosn WITH nachosn+watebase.summdolg
    endcase



  replace month WITH MONTH(watebase.date)
  replace year WITH year(watebase.date)
  
  ENDSCAN

*Делаем то же самое с третьей таблицей  
SELECT elecbase
SET ORDER TO abonent
GO top
SEEK(var01)

SCAN WHILE codabon==var01
  SELECT tempall
  APPEND BLANK
    
  stri0100=ALLTRIM(elecbase.codoplat)
  DO CASE   
    CASE stri0100=="01"
      replace pay WITH elecbase.summpopl
      replace oplata WITH oplata+elecbase.summpopl
      replace note WITH ALLTRIM(note)+"  êâèò.:"+ALLTRIM(STR(elecbase.summpopl, 10 , 2 ))
    CASE stri0100=="82"
      replace pay WITH elecbase.summpopl
      replace lgoty WITH lgoty+elecbase.summpopl 
      replace note WITH ALLTRIM(note)+"  ëüãîòà(ñóáñèäèÿ):"+ALLTRIM(STR(elecbase.summpopl, 10 , 2 ))

    CASE stri0100=="02"
    replace note WITH ALLTRIM(note)+"  íà÷èñë(ìåìî):"+ALLTRIM(STR(elecbase.summdolg, 10 , 2 ))
    replace nach WITH elecbase.summdolg
    replace nachosn WITH nachosn+elecbase.summdolg
    
    CASE stri0100=="92"
    replace note WITH ALLTRIM(note)+"  íà÷èñë(äîï):"+ALLTRIM(STR(elecbase.summdolg, 10 , 2 ))
    replace nach WITH elecbase.summdolg
    replace nachosn WITH nachosn+elecbase.summdolg

    OTHERWISE 
    replace note WITH ALLTRIM(note)+"  íà÷èñë(íåèçâ):"+ALLTRIM(STR(elecbase.summdolg, 10 , 2 ))
    replace nach WITH elecbase.summdolg
    replace nachosn WITH nachosn+elecbase.summdolg
    endcase

    
  replace month WITH MONTH(elecbase.date)
  replace year WITH year(elecbase.date)
  
  ENDSCAN
  
SELECT tempall
* Выбираем для работы индекс по Году и месяцу (= order by STR(YEAR, 4 )+STR(MONTH, 2 ))
SET ORDER TO YM   && STR(YEAR, 4 )+STR(MONTH, 2 )

GO top
* Перебираем все отобранные записи
SCAN WHILE !EOF()
  mon0000=month
  yea0000=year
  pay0000= 0 
  nach0000= 0 
  note0000=""
  opla0000= 0 
  lgot0000= 0 
  corr0000= 0 
  nosn0000= 0 
  nlgo0000= 0 
  ncor0000= 0 
  nogh0000= 0 
  stropl=""
  strlgot=""
  strcorr=""
  strosn=""
  strnlgt=""
  strncor=""
  strnogh=""
  * перебираем записи "внутри" определенных года и месяца (=group by <год>,<месяц>) и суммируем
  * некоторые поля 
  SCAN WHILE year=yea0000 .and. month=mon0000
    pay0000=pay0000+pay
    nach0000=nach0000+nach
    opla0000=opla0000+oplata
    IF (oplata<> 0 ) 
      stropl=stropl+"  "+ALLTRIM(STR(oplata, 10 , 2 ))
      endif

    lgot0000=lgot0000+lgoty
    IF (lgoty<> 0 ) 
      strlgot=strlgot+"  "+ALLTRIM(STR(lgoty, 10 , 2 ))
      endif

    corr0000=corr0000+correct
    IF (correct<> 0 ) 
      strcorr=strcorr+"  "+ALLTRIM(STR(correct, 10 , 2 ))
      endif

    nosn0000=nosn0000+nachosn
    IF (nachosn<> 0 ) 
      strosn=strosn+"  "+ALLTRIM(STR(nachosn, 10 , 2 ))
      endif

    nlgo0000=nlgo0000+nachlgoty
    IF (nachlgoty<> 0 ) 
      strnlgt=strnlgt+"  "+ALLTRIM(STR(nachlgoty, 10 , 2 ))
      endif

    ncor0000=ncor0000+nachcorr
    IF (nachcorr<> 0 ) 
      strncor=strncor+"  "+ALLTRIM(STR(nachcorr, 10 , 2 ))
      endif

    nogh0000=nogh0000+nachoghs
    IF (nachoghs<> 0 ) 
      strnogh=strnogh+"  "+ALLTRIM(STR(nachoghs, 10 , 2 ))
      endif
    
    note0000=ALLTRIM(note0000)+" "+ALLTRIM(note)
    ENDSCAN

  SKIP - 1 
  * Заносим итоговые данные в другую временную таблицу 
  SELECT showall
  APPEND BLANK
  replace month WITH tempall.month
  replace year WITH tempall.year
  replace pay WITH pay0000
  replace nach WITH nach0000
  replace adres WITH abonents.namestreet
  replace fio WITH abonents.fio
  replace note WITH note0000
  replace oplata WITH opla0000
  replace lgoty WITH lgot0000
  replace correct WITH corr0000
  replace nachosn WITH nosn0000
  replace nachoghs WITH nogh0000
  replace nachcorr WITH ncor0000

  replace striopl WITH stropl
  replace strilgo WITH strlgot
  replace stricor WITH strcorr
  replace striosn WITH strosn
  replace strinlg WITH strnlgt
  replace strinco WITH strncor
  replace strinog WITH strnogh
  
  ENDSCAN
  
USE IN tempall

SELECT showall
GO top
sal0000=endsaldo
* Перебираем все записи внутри таблицы
SCAN WHILE !EOF()
  * подсчитываем начальное и конечное сальдо за период
  replace startsaldo WITH sal0000
  replace endsaldo WITH startsaldo+nach+pay
  sal0000=endsaldo
  ENDSCAN

* Возвращаемся к сохраненным настройкам...
SELECT (vari1500)
thisform.refresh

ИМХО, если у Вас МойСкуль ниже 5-й версии, то это очень неудачный выбор...
...
Рейтинг: 0 / 0
3 сообщений из 3, страница 1 из 1
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Из FoxPro в MySQL
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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