powered by simpleCommunicator - 2.0.41     © 2025 Programmizd 02
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Проблема с сортировкой
25 сообщений из 70, страница 1 из 3
Проблема с сортировкой
    #39320613
starsoo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
В программе стоит сортировка всех полей по клику на хедер поля, как реализовано:
В методе serorder формы код
Код: plsql
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.
LPARAMETERS loHeader, lnOrder
lnOrder=IIF(TYPE('lnOrder')='N',lnOrder,1)
LOCAL lcTempId, lcAsc, lcDesc
lcAsc=16711680
lcDesc=16384
this.Grid1.SetAll("FontBold",.F.,"Header")
this.Grid1.SetAll("ForeColor",0,"Header")
SELECT cgr1
lcTempId=cgr1.codprog
SELECT cgr1
DO CASE 
CASE lnOrder=1
	IF DESCENDING(TAGNO('codprog'))
		SET ORDER TO codprog IN cgr1 ASCENDING
	ELSE 
		SET ORDER TO codprog IN cgr1 DESCENDING
	ENDIF 
CASE lnOrder=2
	IF DESCENDING(TAGNO('f'))
		SET ORDER TO f IN cgr1 ASCENDING
	ELSE
		SET ORDER TO f IN cgr1 DESCENDING
	ENDIF 
CASE lnOrder=11
	IF DESCENDING(TAGNO('nir'))
		SET ORDER TO nir IN cgr1 ASCENDING
	ELSE
		SET ORDER TO nir IN cgr1 DESCENDING
	ENDIF 
CASE lnOrder=3
	IF DESCENDING(TAGNO('isp'))
		SET ORDER TO isp IN cgr1 ASCENDING
	ELSE 
		SET ORDER TO isp IN cgr1 DESCENDING
	ENDIF 	
	CASE lnOrder=8
	IF DESCENDING(TAGNO('codisp'))
		SET ORDER TO codisp IN cgr1 ASCENDING
	ELSE 
		SET ORDER TO codisp IN cgr1 DESCENDING
	ENDIF 
	CASE lnOrder=9
	IF DESCENDING(TAGNO('srok_n'))
		SET ORDER TO srok_n IN cgr1 ASCENDING
	ELSE 
		SET ORDER TO srok_n IN cgr1 DESCENDING
	ENDIF 
	CASE lnOrder=10
	IF DESCENDING(TAGNO('srok_k'))
		SET ORDER TO srok_k IN cgr1 ASCENDING
	ELSE 
		SET ORDER TO srok_k IN cgr1 DESCENDING
	ENDIF 
	CASE lnOrder=5
	IF DESCENDING(TAGNO('ruk'))
		SET ORDER TO ruk IN cgr1 ASCENDING
	ELSE 
		SET ORDER TO ruk IN cgr1 DESCENDING
	ENDIF 
	CASE lnOrder=6
	IF DESCENDING(TAGNO('ruk2 '))
		SET ORDER TO ruk2 IN cgr1 ASCENDING
	ELSE 
		SET ORDER TO ruk2 IN cgr1 DESCENDING
	ENDIF 
	CASE lnOrder=4
	IF DESCENDING(TAGNO('grnti'))
		SET ORDER TO grnti IN cgr1 ASCENDING
	ELSE 
		SET ORDER TO grnti IN cgr1 DESCENDING
	ENDIF 
	CASE lnOrder=12
	IF DESCENDING(TAGNO('codtype'))
		SET ORDER TO codtype IN cgr1 ASCENDING
	ELSE 
		SET ORDER TO codtype IN cgr1 DESCENDING
	ENDIF 
	CASE lnOrder=7
	IF DESCENDING(TAGNO('pfin'))
		SET ORDER TO pfin IN cgr1 ASCENDING
	ELSE 
		SET ORDER TO pfin IN cgr1 DESCENDING
	ENDIF 
	CASE lnOrder=13
	IF DESCENDING(TAGNO('pfin1'))
		SET ORDER TO pfin1 IN cgr1 ASCENDING
	ELSE 
		SET ORDER TO pfin1 IN cgr1 DESCENDING
	ENDIF 
	CASE lnOrder=14
	IF DESCENDING(TAGNO('pfin2'))
		SET ORDER TO pfin2 IN cgr1 ASCENDING
	ELSE 
		SET ORDER TO pfin2 IN cgr1 DESCENDING
	ENDIF 
	CASE lnOrder=15
	IF DESCENDING(TAGNO('pfin3'))
		SET ORDER TO pfin3 IN cgr1 ASCENDING
	ELSE 
		SET ORDER TO pfin3 IN cgr1 DESCENDING
	ENDIF 
	CASE lnOrder=16
	IF DESCENDING(TAGNO('pfin4'))
		SET ORDER TO pfin4 IN cgr1 ASCENDING
	ELSE 
		SET ORDER TO pfin4 IN cgr1 DESCENDING
	ENDIF 
	CASE lnOrder=17
	IF DESCENDING(TAGNO('ffin'))
		SET ORDER TO ffin IN cgr1 ASCENDING
	ELSE 
		SET ORDER TO ffin IN cgr1 DESCENDING
	ENDIF 
	CASE lnOrder=18
	IF DESCENDING(TAGNO('ffin1'))
		SET ORDER TO ffin1 IN cgr1 ASCENDING
	ELSE 
		SET ORDER TO ffin1 IN cgr1 DESCENDING
	ENDIF 
	CASE lnOrder=19
	IF DESCENDING(TAGNO('ffin2'))
		SET ORDER TO ffin2 IN cgr1 ASCENDING
	ELSE 
		SET ORDER TO ffin2 IN cgr1 DESCENDING
	ENDIF 
	CASE lnOrder=20
	IF DESCENDING(TAGNO('ffin3'))
		SET ORDER TO ffin3 IN cgr1 ASCENDING
	ELSE 
		SET ORDER TO ffin3 IN cgr1 DESCENDING
	ENDIF 
	CASE lnOrder=21
	IF DESCENDING(TAGNO('ffin4'))
		SET ORDER TO ffin4 IN cgr1 ASCENDING
	ELSE 
		SET ORDER TO ffin4 IN cgr1 DESCENDING
	ENDIF 
OTHERWISE
	SET ORDER TO
ENDCASE 

this.Grid1.Refresh()	
SELECT cgr1
IF TYPE('loHeader')='O'
	loHeader.FontBold=.T.
	IF DESCENDING(TAGNO(SYS(22)))
		loHeader.ForeColor = lcDesc
	ELSE
		loHeader.ForeColor = lcAsc
	ENDIF 
ENDIF 
LOCATE FOR codprog=lcTempId
IF !FOUND()
	GO TOP 
ENDIF 
this.Grid1.Refresh()


На каждом клик хедере прописано
Код: plsql
1.
thisform.SetOrder(this, 1)


Индексы прописаны в load формы
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
INDEX ON codprog+f TAG codprog ASCENDING 
  INDEX ON f TAG f ASCENDING 
   INDEX ON nir TAG nir ASCENDING 
    INDEX ON isp TAG  isp ASCENDING 
     INDEX ON codisp TAG codisp ASCENDING 
      INDEX ON ruk TAG ruk ASCENDING 
       INDEX ON ruk2 TAG ruk2 ASCENDING 
        INDEX ON grnti TAG grnti ASCENDING 
         INDEX ON codtype TAG codtype ASCENDING 
          INDEX ON pfin TAG pfin ASCENDING 
           INDEX ON pfin1 TAG pfin1 ASCENDING 
            INDEX ON pfin2 TAG pfin2 ASCENDING 
             INDEX ON pfin3 TAG pfin3 ASCENDING 
              INDEX ON pfin4 TAG pfin4 ASCENDING 
               INDEX ON ffin  TAG ffin ASCENDING 
                INDEX ON ffin1 TAG ffin1 ASCENDING 
                 INDEX ON ffin2 TAG ffin2 ASCENDING 
                  INDEX ON ffin3 TAG ffin3 ASCENDING 
                                 INDEX ON ffin4 TAG ffin4 ASCENDING 


 SET ORDER TO 


Все работает как часы, но только если я не совершаю никаких действий помимо кликов по хедеров, как только жму удаление, редактирование, или фильтрую записи с помощью комбобоксов, то сортировка просто перестает работать, без всыких ошибок, просто ничего не происходит, везде использую курсор cgr1. Видимо код вызывает разрушение и перестройку грида и стоило бы использовать параметризованный cursoradapter , но я про него ничего не знаю и вряд ли смогу написать что-то дельное
...
Рейтинг: 0 / 0
Проблема с сортировкой
    #39320658
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
starsooВсе работает как часы, но только если я не совершаю никаких действий помимо кликов по хедеров, как только жму удаление, редактирование, или фильтрую записи с помощью комбобоксов, то сортировка просто перестает работать, без всыких ошибок, просто ничего не происходит, везде использую курсор cgr1. Видимо код вызывает разрушение и перестройку грида и стоило бы использовать параметризованный cursoradapter , но я про него ничего не знаю и вряд ли смогу написать что-то дельное
Надо бы показать что за код подразумевается под "удаление, редактирование, или фильтр". Если курсор не пересоздается, то сортировка должна работать.
...
Рейтинг: 0 / 0
Проблема с сортировкой
    #39321336
starsoo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dima T,

Допустим на кнопке добавить такой код
Код: plsql
1.
2.
SET SAFETY OFF
DO FORM Form2.scx 


Там открывается новая форма, если я в ней даже ничего делать не буду и просто закрою её и вернусь к первой форме, то сортировка уже не работает
...
Рейтинг: 0 / 0
Проблема с сортировкой
    #39321353
starsoo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Такой код стоит на активации формы
Код: plsql
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.
SELECT proj33.* ;
FROM proj33;
INTO cursor cgr1 READWRITE;

SELECT cgr1
*!*	USE proj34
*!*	SELECT proj34
*!*	  INDEX ON codprog TAG codprog ASCENDING  
 INDEX ON codprog+f TAG codprog ASCENDING 
  INDEX ON f TAG f ASCENDING 
   INDEX ON nir TAG nir ASCENDING 
    INDEX ON isp TAG  isp ASCENDING 
     INDEX ON codisp TAG codisp ASCENDING 
      INDEX ON ruk TAG ruk ASCENDING 
       INDEX ON ruk2 TAG ruk2 ASCENDING 
        INDEX ON grnti TAG grnti ASCENDING 
         INDEX ON codtype TAG codtype ASCENDING 
          INDEX ON pfin TAG pfin ASCENDING 
           INDEX ON pfin1 TAG pfin1 ASCENDING 
            INDEX ON pfin2 TAG pfin2 ASCENDING 
             INDEX ON pfin3 TAG pfin3 ASCENDING 
              INDEX ON pfin4 TAG pfin4 ASCENDING 
               INDEX ON ffin  TAG ffin ASCENDING 
                INDEX ON ffin1 TAG ffin1 ASCENDING 
                 INDEX ON ffin2 TAG ffin2 ASCENDING 
                  INDEX ON ffin3 TAG ffin3 ASCENDING 
                                 INDEX ON ffin4 TAG ffin4 ASCENDING 


 SET ORDER TO 
GO TOP 


thisform.Grid1.RecordSource=''	
thisform.grid1.RecordSource="cgr1"
thisform.grid1.AutoFit
thisform.grid1.RecordSourceType=1
thisform.grid1.column1.header1.caption='№ Проекта'

thisform.grid1.column2.header1.caption='№ НИР'
thisform.grid1.column2.width=70
thisform.grid1.column11.header1.caption='Наименование проекта'
thisform.grid1.column3.header1.caption='Организация-исполнитель'
thisform.grid1.column3.width=150
thisform.grid1.column8.header1.caption='Код организации'
thisform.grid1.column8.width=100
thisform.grid1.column9.header1.caption='Начало срока'
thisform.grid1.column9.width=80
thisform.grid1.column10.header1.caption='Конец срока'
thisform.grid1.column10.width=80
thisform.grid1.column5.header1.caption='Руководитель'
thisform.grid1.column5.width=100
thisform.grid1.column6.header1.caption='Должность'
thisform.grid1.column6.width=130
thisform.grid1.column4.header1.caption='Код ГРНТИ'
thisform.grid1.column4.width=130
thisform.grid1.column12.header1.caption='Характер проекта'
thisform.grid1.column12.width=130
thisform.grid1.column7.header1.caption='План финансирования'
thisform.grid1.column7.width=130
thisform.grid1.column13.header1.caption='1ый Квартал'
thisform.grid1.column13.width=90
thisform.grid1.column14.header1.caption='2ой Квартал'
thisform.grid1.column14.width=90
thisform.grid1.column15.header1.caption='3ий Квартал'
thisform.grid1.column15.width=90
thisform.grid1.column16.header1.caption='4ый Квартал'
thisform.grid1.column16.width=90
thisform.grid1.column17.header1.caption='Фактическое финансирование'
thisform.grid1.column17.width=130
thisform.grid1.column18.header1.caption='1ый Квартал'
thisform.grid1.column18.width=90
thisform.grid1.column19.header1.caption='2ой Квартал'
thisform.grid1.column19.width=90
thisform.grid1.column20.header1.caption='3ий Квартал'
thisform.grid1.column20.width=90
thisform.grid1.column21.header1.caption='4ый Квартал'
thisform.grid1.column21.width=90


Этот на ините

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
********************************
SET DELETED ON
SELECT 1 
USE proj33.DBF ALIAS proj33
_SCREEN.Visible= .T.
SELECT 2 
USE vuz.DBF ALIAS vuz
_SCREEN.Visible= .T.


SELECT DISTINCT region FROM vuz INTO CURSOR cb1 READWRITE nofilter
thisform.CBRegion.RowSource='cb1'
SELECT DISTINCT oblname FROM vuz INTO CURSOR cb2 READWRITE nofilter
thisform.CBOblname.RowSource='cb2'
SELECT DISTINCT city FROM vuz INTO CURSOR cb3 READWRITE nofilter
thisform.CBCity.RowSource='cb3'
SELECT DISTINCT z2 FROM vuz INTO CURSOR cb4 READWRITE nofilter
thisform.CBZ2.RowSource='cb4'
...
Рейтинг: 0 / 0
Проблема с сортировкой
    #39321368
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
starsooDima T,

Допустим на кнопке добавить такой код
Код: plsql
1.
2.
SET SAFETY OFF
DO FORM Form2.scx 


Там открывается новая форма, если я в ней даже ничего делать не буду и просто закрою её и вернусь к первой форме, то сортировка уже не работает
Сделай простенький пример демонстрирующий твою проблему. Минимальный проект, чтобы скачать, запустить и увидеть повторение твоей проблемы. То что ты тут приводишь не может вызвать те проблемы которые ты описываешь, значит проблемы в том коде, который ты считаешь "правильным" и сюда не даешь.
...
Рейтинг: 0 / 0
Проблема с сортировкой
    #39321369
starsoo,
думаете, если на фоксклубе не удалось выклевать всем мозги, то можно тут еще попробовать?
Вы может таки, наконец-то, попробуете научиться задавать вопросы и приводить информацию в понятном виде?
Выдали две портянки, в обоих "очень понятное" объяснение "методе serorder формы", "Там открывается новая форма", "Такой код стоит на активации формы", "Этот на ините"... КАКОЙ Формы? ТАМ - это ГДЕ? КАКОЙ формы? ИНИТЕ ЧЕГО?
КТО на КОМ стоял? ЧТО и ОТКУДА вызывается?
ЗАЧЕМ на активации формы идет пересоздание курсора и его переиндексация?

Мы это все должны угадать?
...
Рейтинг: 0 / 0
Проблема с сортировкой
    #39321390
starsoo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Есть форма nir.scx, на ините этой формы прописан код для заполнения комбобоксов находящихся на этой форме
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
[src]SELECT DISTINCT region FROM vuz INTO CURSOR cb1 READWRITE nofilter
thisform.CBRegion.RowSource='cb1'
SELECT DISTINCT oblname FROM vuz INTO CURSOR cb2 READWRITE nofilter
thisform.CBOblname.RowSource='cb2'
SELECT DISTINCT city FROM vuz INTO CURSOR cb3 READWRITE nofilter
thisform.CBCity.RowSource='cb3'
SELECT DISTINCT z2 FROM vuz INTO CURSOR cb4 READWRITE nofilter
thisform.CBZ2.RowSource='cb4'

[/SRC]
На load этой формы
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
SET DELETED ON
SELECT 1 
USE proj33.DBF ALIAS proj33

_SCREEN.Visible= .T.
SELECT 2 
USE vuz.DBF ALIAS vuz
_SCREEN.Visible= .T.


На активации данной формы стоит код
Код: plsql
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.
thisform.grid1.Refresh 
SELECT proj33.* ;
FROM proj33;
INTO cursor cgr1 readwrite;

SELECT cgr1
 INDEX ON codprog+f TAG codprog ASCENDING 
  INDEX ON f TAG f ASCENDING 
   INDEX ON nir TAG nir ASCENDING 
    INDEX ON isp TAG  isp ASCENDING 
     INDEX ON codisp TAG codisp ASCENDING 
      INDEX ON ruk TAG ruk ASCENDING 
       INDEX ON ruk2 TAG ruk2 ASCENDING 
        INDEX ON grnti TAG grnti ASCENDING 
         INDEX ON codtype TAG codtype ASCENDING 
          INDEX ON pfin TAG pfin ASCENDING 
           INDEX ON pfin1 TAG pfin1 ASCENDING 
            INDEX ON pfin2 TAG pfin2 ASCENDING 
             INDEX ON pfin3 TAG pfin3 ASCENDING 
              INDEX ON pfin4 TAG pfin4 ASCENDING 
               INDEX ON ffin  TAG ffin ASCENDING 
                INDEX ON ffin1 TAG ffin1 ASCENDING 
                 INDEX ON ffin2 TAG ffin2 ASCENDING 
                  INDEX ON ffin3 TAG ffin3 ASCENDING 
                                 INDEX ON ffin4 TAG ffin4 ASCENDING 


 SET ORDER TO 
GO TOP


thisform.Grid1.RecordSource=''	
thisform.grid1.RecordSource="cgr1"
thisform.grid1.AutoFit
thisform.grid1.RecordSourceType=1
thisform.grid1.column1.header1.caption='№ Проекта'

thisform.grid1.column2.header1.caption='№ НИР'
thisform.grid1.column2.width=70
thisform.grid1.column11.header1.caption='Наименование проекта'
thisform.grid1.column3.header1.caption='Организация-исполнитель'
thisform.grid1.column3.width=150
thisform.grid1.column8.header1.caption='Код организации'
thisform.grid1.column8.width=100
thisform.grid1.column9.header1.caption='Начало срока'
thisform.grid1.column9.width=80
thisform.grid1.column10.header1.caption='Конец срока'
thisform.grid1.column10.width=80
thisform.grid1.column5.header1.caption='Руководитель'
thisform.grid1.column5.width=100
thisform.grid1.column6.header1.caption='Должность'
thisform.grid1.column6.width=130
thisform.grid1.column4.header1.caption='Код ГРНТИ'
thisform.grid1.column4.width=130
thisform.grid1.column12.header1.caption='Характер проекта'
thisform.grid1.column12.width=130
thisform.grid1.column7.header1.caption='План финансирования'
thisform.grid1.column7.width=130
thisform.grid1.column13.header1.caption='1ый Квартал'
thisform.grid1.column13.width=90
thisform.grid1.column14.header1.caption='2ой Квартал'
thisform.grid1.column14.width=90
thisform.grid1.column15.header1.caption='3ий Квартал'
thisform.grid1.column15.width=90
thisform.grid1.column16.header1.caption='4ый Квартал'
thisform.grid1.column16.width=90
thisform.grid1.column17.header1.caption='Фактическое финансирование'
thisform.grid1.column17.width=130
thisform.grid1.column18.header1.caption='1ый Квартал'
thisform.grid1.column18.width=90
thisform.grid1.column19.header1.caption='2ой Квартал'
thisform.grid1.column19.width=90
thisform.grid1.column20.header1.caption='3ий Квартал'
thisform.grid1.column20.width=90
thisform.grid1.column21.header1.caption='4ый Квартал'
thisform.grid1.column21.width=90


Также я создал свой метод для данной формы и прописал там код для сортировки с помощью клика по хедерам
Код: plsql
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.
LPARAMETERS loHeader, lnOrder
lnOrder=IIF(TYPE('lnOrder')='N',lnOrder,1)
LOCAL lcTempId, lcAsc, lcDesc
lcAsc=16711680
lcDesc=16384
this.Grid1.SetAll("FontBold",.F.,"Header")
this.Grid1.SetAll("ForeColor",0,"Header")
SELECT cgr1
lcTempId=cgr1.codprog
SELECT cgr1
DO CASE 
CASE lnOrder=1
	IF DESCENDING(TAGNO('codprog'))
		SET ORDER TO codprog IN cgr1 ASCENDING
	ELSE 
		SET ORDER TO codprog IN cgr1 DESCENDING
	ENDIF 
CASE lnOrder=2
	IF DESCENDING(TAGNO('f'))
		SET ORDER TO f IN cgr1 ASCENDING
	ELSE
		SET ORDER TO f IN cgr1 DESCENDING
	ENDIF 
CASE lnOrder=11
	IF DESCENDING(TAGNO('nir'))
		SET ORDER TO nir IN cgr1 ASCENDING
	ELSE
		SET ORDER TO nir IN cgr1 DESCENDING
	ENDIF 
CASE lnOrder=3
	IF DESCENDING(TAGNO('isp'))
		SET ORDER TO isp IN cgr1 ASCENDING
	ELSE 
		SET ORDER TO isp IN cgr1 DESCENDING
	ENDIF 	
	CASE lnOrder=8
	IF DESCENDING(TAGNO('codisp'))
		SET ORDER TO codisp IN cgr1 ASCENDING
	ELSE 
		SET ORDER TO codisp IN cgr1 DESCENDING
	ENDIF 
	CASE lnOrder=9
	IF DESCENDING(TAGNO('srok_n'))
		SET ORDER TO srok_n IN cgr1 ASCENDING
	ELSE 
		SET ORDER TO srok_n IN cgr1 DESCENDING
	ENDIF 
	CASE lnOrder=10
	IF DESCENDING(TAGNO('srok_k'))
		SET ORDER TO srok_k IN cgr1 ASCENDING
	ELSE 
		SET ORDER TO srok_k IN cgr1 DESCENDING
	ENDIF 
	CASE lnOrder=5
	IF DESCENDING(TAGNO('ruk'))
		SET ORDER TO ruk IN cgr1 ASCENDING
	ELSE 
		SET ORDER TO ruk IN cgr1 DESCENDING
	ENDIF 
	CASE lnOrder=6
	IF DESCENDING(TAGNO('ruk2'))
		SET ORDER TO ruk2 IN cgr1 ASCENDING
	ELSE 
		SET ORDER TO ruk2 IN cgr1 DESCENDING
	ENDIF 
	CASE lnOrder=4
	IF DESCENDING(TAGNO('grnti'))
		SET ORDER TO grnti IN cgr1 ASCENDING
	ELSE 
		SET ORDER TO grnti IN cgr1 DESCENDING
	ENDIF 
	CASE lnOrder=12
	IF DESCENDING(TAGNO('codtype'))
		SET ORDER TO codtype IN cgr1 ASCENDING
	ELSE 
		SET ORDER TO codtype IN cgr1 DESCENDING
	ENDIF 
	CASE lnOrder=7
	IF DESCENDING(TAGNO('pfin'))
		SET ORDER TO pfin IN cgr1 ASCENDING
	ELSE 
		SET ORDER TO pfin IN cgr1 DESCENDING
	ENDIF 
	CASE lnOrder=13
	IF DESCENDING(TAGNO('pfin1'))
		SET ORDER TO pfin1 IN cgr1 ASCENDING
	ELSE 
		SET ORDER TO pfin1 IN cgr1 DESCENDING
	ENDIF 
	CASE lnOrder=14
	IF DESCENDING(TAGNO('pfin2'))
		SET ORDER TO pfin2 IN cgr1 ASCENDING
	ELSE 
		SET ORDER TO pfin2 IN cgr1 DESCENDING
	ENDIF 
	CASE lnOrder=15
	IF DESCENDING(TAGNO('pfin3'))
		SET ORDER TO pfin3 IN cgr1 ASCENDING
	ELSE 
		SET ORDER TO pfin3 IN cgr1 DESCENDING
	ENDIF 
	CASE lnOrder=16
	IF DESCENDING(TAGNO('pfin4'))
		SET ORDER TO pfin4 IN cgr1 ASCENDING
	ELSE 
		SET ORDER TO pfin4 IN cgr1 DESCENDING
	ENDIF 
	CASE lnOrder=17
	IF DESCENDING(TAGNO('ffin'))
		SET ORDER TO ffin IN cgr1 ASCENDING
	ELSE 
		SET ORDER TO ffin IN cgr1 DESCENDING
	ENDIF 
	CASE lnOrder=18
	IF DESCENDING(TAGNO('ffin1'))
		SET ORDER TO ffin1 IN cgr1 ASCENDING
	ELSE 
		SET ORDER TO ffin1 IN cgr1 DESCENDING
	ENDIF 
	CASE lnOrder=19
	IF DESCENDING(TAGNO('ffin2'))
		SET ORDER TO ffin2 IN cgr1 ASCENDING
	ELSE 
		SET ORDER TO ffin2 IN cgr1 DESCENDING
	ENDIF 
	CASE lnOrder=20
	IF DESCENDING(TAGNO('ffin3'))
		SET ORDER TO ffin3 IN cgr1 ASCENDING
	ELSE 
		SET ORDER TO ffin3 IN cgr1 DESCENDING
	ENDIF 
	CASE lnOrder=21
	IF DESCENDING(TAGNO('ffin4'))
		SET ORDER TO ffin4 IN cgr1 ASCENDING
	ELSE 
		SET ORDER TO ffin4 IN cgr1 DESCENDING
	ENDIF 
OTHERWISE
	SET ORDER TO
ENDCASE 

this.Grid1.Refresh()	
SELECT cgr1
IF TYPE('loHeader')='O'
	loHeader.FontBold=.T.
	IF DESCENDING(TAGNO(SYS(22)))
		loHeader.ForeColor = lcDesc
	ELSE
		loHeader.ForeColor = lcAsc
	ENDIF 
ENDIF 
LOCATE FOR codprog=lcTempId
IF !FOUND()
	GO TOP 
ENDIF 
this.Grid1.Refresh()


Соответственно на хедерах грида, который привязан к этой форме стоит код
Код: plsql
1.
thisform.SetOrder(this, 1)

(2,3,4 и тд)
Эту форму nir.scx, я вызываю из меню, открывается форма с заполненным гридом, который берет свою информацию из курсора cgr1, а тот в свою очередь из таблицы proj33. Суть проблемы: при открытии формы и кликах по хедерам вся информация сортируется без ошибок , как только я открываю форму добавления записей(кнопка добавить на форме nir.scx, в коде кнопки SET
Код: plsql
1.
2.
SAFETY OFF
DO FORM Form2.scx 

)
и закрываю её сразу же( с помощью крестика в правом верхнем углу формы), сортировка перестает работать, просто 0 реакции
...
Рейтинг: 0 / 0
Проблема с сортировкой
    #39321395
starsooНа активации данной формы стоит код
Код: sql
1.
2.
3.
4.
thisform.grid1.Refresh 
SELECT proj33.* ;
FROM proj33;
INTO cursor cgr1 readwrite;



Эту форму nir.scx, я вызываю из меню, открывается форма с заполненным гридом, который берет свою информацию из курсора cgr1, а тот в свою очередь из таблицы proj33. Суть проблемы: при открытии формы и кликах по хедерам вся информация сортируется без ошибок , как только я открываю форму добавления записей(кнопка добавить на форме nir.scx, в коде кнопки SET
Код: plsql
1.
2.
SAFETY OFF
DO FORM Form2.scx 

)
и закрываю её сразу же( с помощью крестика в правом верхнем углу формы), сортировка перестает работать, просто 0 реакцииВы в курсе когда и сколько раз вызывается активация формы? В которой вы грохаете и пересоздаете свой курсор. Который все вам и рушит дальше. Сколько раз и как вам еще объяснять, что НЕ НАДО каждый раз создавать курсор, что его надо создавать только 1(ОДИН) раз? Вам разве не писали, что курсор надо создавать в LOAD формы, а никак не в активации?
...
Рейтинг: 0 / 0
Проблема с сортировкой
    #39321411
starsoo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
правильный проходящий.,
Убрал все с активации, это поставил на load
Код: plsql
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.
SELECT proj33.* ;
FROM proj33;
INTO cursor cgr1 readwrite;

SELECT cgr1
  INDEX ON f TAG f ASCENDING 
   INDEX ON nir TAG nir ASCENDING 
    INDEX ON isp TAG  isp ASCENDING 
     INDEX ON codisp TAG codisp ASCENDING 
      INDEX ON ruk TAG ruk ASCENDING 
       INDEX ON ruk2 TAG ruk2 ASCENDING 
        INDEX ON grnti TAG grnti ASCENDING 
         INDEX ON codtype TAG codtype ASCENDING 
          INDEX ON pfin TAG pfin ASCENDING 
           INDEX ON pfin1 TAG pfin1 ASCENDING 
            INDEX ON pfin2 TAG pfin2 ASCENDING 
             INDEX ON pfin3 TAG pfin3 ASCENDING 
              INDEX ON pfin4 TAG pfin4 ASCENDING 
               INDEX ON ffin  TAG ffin ASCENDING 
                INDEX ON ffin1 TAG ffin1 ASCENDING 
                 INDEX ON ffin2 TAG ffin2 ASCENDING 
                  INDEX ON ffin3 TAG ffin3 ASCENDING 
                                 INDEX ON ffin4 TAG ffin4 ASCENDING 


 SET ORDER TO 
GO TOP


А переименовку полей на инит, теперь другая проблема. У меня 4 комбобокса (каждый привязан к определенному полю) на форме nir.scx. Информацию эти комбо берут из таблицы vuz.dbf, но фильтруют они таблицу находящуюся в гриде(proj33) с помощью связки полей proj33.codisp и vuz.codvuz.
Вот пример 1го из комбобоксов, код стоит на interactivechange
Код: plsql
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.
	IF thisform.CBZ2.ListIndex >0
		SELECT * FROM proj33 WHERE proj33.codisp in (SELECT codvuz FROM vuz WHERE z2=thisform.cBz2.Value) INTO cursor cgr1 readwrite
		SELECT DISTINCT oblname FROM vuz WHERE z2=thisform.cBz2.Value INTO CURSOR cb2 readwrite
		SELECT DISTINCT city FROM vuz WHERE z2=thisform.cBz2.Value INTO CURSOR cb3 readwrite
	Else
	If thisform.CBCity.ListIndex >0
		SELECT * FROM proj33 WHERE proj33.codisp in (SELECT codvuz FROM vuz WHERE city=thisform.cBcity.Value) INTO cursor cgr1 readwrite
		SELECT DISTINCT oblname FROM vuz WHERE city=thisform.cBcity.Value INTO CURSOR cb2 readwrite
		SELECT DISTINCT z2 FROM vuz WHERE city=thisform.cBcity.Value INTO CURSOR cb4 readwrite
	else
	If thisform.CBOblname.ListIndex >0
		SELECT * FROM proj33 WHERE proj33.codisp in (SELECT codvuz FROM vuz WHERE oblname=thisform.cBoblname.Value) INTO cursor cgr1 readwrite
		SELECT DISTINCT city FROM vuz WHERE oblname=thisform.CBOblname.Value INTO CURSOR cb3 readwrite
		SELECT DISTINCT z2 FROM vuz WHERE oblname=thisform.CBOblname.Value INTO CURSOR cb4 readwrite
	else
	IF thisform.CBRegion.ListIndex >0		
			SELECT * FROM proj33 WHERE proj33.codisp in (SELECT codvuz FROM vuz WHERE region=thisform.cBRegion.Value) INTO cursor cgr1 readwrite
			SELECT DISTINCT oblname FROM vuz WHERE region=thisform.CBRegion.Value INTO CURSOR cb2 readwrite
			SELECT DISTINCT city FROM vuz WHERE region=thisform.CBRegion.Value INTO CURSOR cb3 readwrite
			SELECT DISTINCT z2 FROM vuz WHERE region=thisform.CBRegion.Value INTO CURSOR cb4 readwrite
			
	ENDIF
	ENDIF
	endif 
	ENDIF


И теперь(после проделанных выше изменений) после нескольких кликов по комбо, выскакивает ошибка cannot access selected table.cb4
...
Рейтинг: 0 / 0
Проблема с сортировкой
    #39321641
starsoo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Подскажете как поправить?
...
Рейтинг: 0 / 0
Проблема с сортировкой
    #39321665
starsooУбрал все с активации, это поставил на loadУбрать можно ИЗ метода и вставить В другой метод. Код нахожится внутри методов/процедур/функций/файлов, а не на их поверхности, которой, к тому же, у них нет.фильтруют они таблицу находящуюся в гриде(proj33) Врешь. Грид у тебя показывает курсор cgr1, который хоть и получен из proj33, но больше с ней никак не связан.с помощью связки полей proj33.codisp и vuz.codvuz.
Вот пример 1го из комбобоксов,Ужас. код стоит на interactivechangeНе стоит, а написан, и не НА, а В.И теперь(после проделанных выше изменений) после нескольких кликов по комбо, выскакивает ошибка cannot access selected table.cb4Нескольких - это скольких? По одному комбо или по разным? В каком порядке?

Соберите уже ваши формы и таблицы в кучку и выложите на изучение. Невозможно лечить по описанию фотографии, когда еще и это описание диктуют по испорченному телефону.
...
Рейтинг: 0 / 0
Проблема с сортировкой
    #39321687
starsoo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
правильный прозодящий.,
В методе 1го комбо interactivechange записан такой код
Код: plsql
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.
	IF thisform.CBZ2.ListIndex >0
		SELECT * FROM proj33 WHERE proj33.codisp in (SELECT codvuz FROM vuz WHERE z2=thisform.cBz2.Value) INTO cursor cgr1 readwrite
		SELECT DISTINCT oblname FROM vuz WHERE z2=thisform.cBz2.Value INTO CURSOR cb2 readwrite
		SELECT DISTINCT city FROM vuz WHERE z2=thisform.cBz2.Value INTO CURSOR cb3 readwrite
	Else
	If thisform.CBCity.ListIndex >0
		SELECT * FROM proj33 WHERE proj33.codisp in (SELECT codvuz FROM vuz WHERE city=thisform.cBcity.Value) INTO cursor cgr1 readwrite
		SELECT DISTINCT oblname FROM vuz WHERE city=thisform.cBcity.Value INTO CURSOR cb2 readwrite
		SELECT DISTINCT z2 FROM vuz WHERE city=thisform.cBcity.Value INTO CURSOR cb4 readwrite
	else
	If thisform.CBOblname.ListIndex >0
		SELECT * FROM proj33 WHERE proj33.codisp in (SELECT codvuz FROM vuz WHERE oblname=thisform.cBoblname.Value) INTO cursor cgr1 readwrite
		SELECT DISTINCT city FROM vuz WHERE oblname=thisform.CBOblname.Value INTO CURSOR cb3 readwrite
		SELECT DISTINCT z2 FROM vuz WHERE oblname=thisform.CBOblname.Value INTO CURSOR cb4 readwrite
	else
	IF thisform.CBRegion.ListIndex >0		
			SELECT * FROM proj33 WHERE proj33.codisp in (SELECT codvuz FROM vuz WHERE region=thisform.cBRegion.Value) INTO cursor cgr1 readwrite
			SELECT DISTINCT oblname FROM vuz WHERE region=thisform.CBRegion.Value INTO CURSOR cb2 readwrite
			SELECT DISTINCT city FROM vuz WHERE region=thisform.CBRegion.Value INTO CURSOR cb3 readwrite
			SELECT DISTINCT z2 FROM vuz WHERE region=thisform.CBRegion.Value INTO CURSOR cb4 readwrite
			
	ENDIF
	ENDIF
	endif 
	ENDIF


В таком же методе 2го комбо
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
	IF thisform.CBZ2.ListIndex >0
	SELECT * FROM proj33 WHERE proj33.codisp in (SELECT codvuz FROM vuz WHERE z2=thisform.cBz2.Value) INTO cursor cgr1 readwrite
		SELECT DISTINCT region FROM vuz WHERE z2=thisform.cBz2.Value INTO CURSOR cb1 readwrite
		SELECT DISTINCT city FROM vuz WHERE z2=thisform.cBz2.Value INTO CURSOR cb3 readwrite
	Else
	If thisform.CBCity.ListIndex >0
	SELECT * FROM proj33 WHERE proj33.codisp in (SELECT codvuz FROM vuz WHERE city=thisform.cBcity.Value) INTO cursor cgr1 readwrite
		SELECT DISTINCT region FROM vuz WHERE city=thisform.cBcity.Value INTO CURSOR cb1 readwrite
		SELECT DISTINCT z2 FROM vuz WHERE city=thisform.cBcity.Value INTO CURSOR cb4 readwrite
	else
	If thisform.CBOblname.ListIndex >0
			SELECT * FROM proj33 WHERE proj33.codisp in (SELECT codvuz FROM vuz WHERE oblname=thisform.cBoblname.Value) INTO cursor cgr1 readwrite
		SELECT DISTINCT city FROM vuz WHERE oblname=thisform.CBOblname.Value INTO CURSOR cb3 readwrite
		SELECT DISTINCT z2 FROM vuz WHERE oblname=thisform.CBOblname.Value INTO CURSOR cb4 readwrite
		SELECT DISTINCT region FROM vuz WHERE oblname=thisform.CBOblname.Value INTO CURSOR cb1 readwrite
	ENDIF
	endif 
	ENDIF


На 3ем комбо
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
	IF thisform.CBZ2.ListIndex >0
		SELECT * FROM proj33 WHERE proj33.codisp in (SELECT codvuz FROM vuz WHERE z2=thisform.cBz2.Value) INTO cursor cgr1 readwrite
		SELECT DISTINCT region FROM vuz WHERE z2=thisform.cBz2.Value INTO CURSOR cb1 readwrite
		SELECT DISTINCT oblname FROM vuz WHERE z2=thisform.cBz2.Value INTO CURSOR cb2 readwrite
	Else
	If thisform.CBCity.ListIndex >0
		SELECT * FROM proj33 WHERE proj33.codisp in (SELECT codvuz FROM vuz WHERE city=thisform.cBcity.Value) INTO cursor cgr1 readwrite
		SELECT DISTINCT region FROM vuz WHERE city=thisform.cBcity.Value INTO CURSOR cb1 readwrite
		SELECT DISTINCT z2 FROM vuz WHERE city=thisform.cBcity.Value INTO CURSOR cb4 readwrite
		SELECT DISTINCT oblname FROM vuz WHERE city=thisform.cBcity.Value INTO CURSOR cb2 readwrite
	endif 
	ENDIF


На 4ом
Код: plsql
1.
2.
3.
4.
5.
6.
	IF thisform.CBZ2.ListIndex >0
		SELECT * FROM proj33 WHERE proj33.codisp in (SELECT codvuz FROM vuz WHERE Z2=thisform.cBZ2.Value) INTO cursor cgr1 readwrite
		SELECT DISTINCT region FROM vuz WHERE z2=thisform.cBz2.Value INTO CURSOR cb1 readwrite
		SELECT DISTINCT oblname FROM vuz WHERE z2=thisform.cBz2.Value INTO CURSOR cb2 readwrite
		SELECT DISTINCT city FROM vuz WHERE z2=thisform.cBz2.Value INTO CURSOR cb3 readwrite
	ENDIF


+в каждом комбо в этом же методе ниже дописан такой код, без него грид остается пустым после кликов по комбобоксам
Код: plsql
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.
thisform.grid1.RecordSource ="cgr1"
thisform.grid1.AutoFit
thisform.grid1.RecordSourceType=1
thisform.grid1.column1.header1.caption='№ Проекта'

thisform.grid1.column2.header1.caption='№ НИР'
thisform.grid1.column2.width=70
thisform.grid1.column11.header1.caption='Наименование проекта'
thisform.grid1.column3.header1.caption='Организация-исполнитель'
thisform.grid1.column3.width=150
thisform.grid1.column8.header1.caption='Код организации'
thisform.grid1.column8.width=100
thisform.grid1.column9.header1.caption='Начало срока'
thisform.grid1.column9.width=80
thisform.grid1.column10.header1.caption='Конец срока'
thisform.grid1.column10.width=80
thisform.grid1.column5.header1.caption='Руководитель'
thisform.grid1.column5.width=100
thisform.grid1.column6.header1.caption='Должность'
thisform.grid1.column6.width=130
thisform.grid1.column4.header1.caption='Код ГРНТИ'
thisform.grid1.column4.width=130
thisform.grid1.column12.header1.caption='Характер проекта'
thisform.grid1.column12.width=130
thisform.grid1.column7.header1.caption='План финансирования'
thisform.grid1.column7.width=130
thisform.grid1.column13.header1.caption='1ый Квартал'
thisform.grid1.column13.width=90
thisform.grid1.column14.header1.caption='2ой Квартал'
thisform.grid1.column14.width=90
thisform.grid1.column15.header1.caption='3ий Квартал'
thisform.grid1.column15.width=90
thisform.grid1.column16.header1.caption='4ый Квартал'
thisform.grid1.column16.width=90
thisform.grid1.column17.header1.caption='Фактическое финансирование'
thisform.grid1.column17.width=130
thisform.grid1.column18.header1.caption='1ый Квартал'
thisform.grid1.column18.width=90
thisform.grid1.column19.header1.caption='2ой Квартал'
thisform.grid1.column19.width=90
thisform.grid1.column20.header1.caption='3ий Квартал'
thisform.grid1.column20.width=90
thisform.grid1.column21.header1.caption='4ый Квартал'
thisform.grid1.column21.width=90


Теперь к проблеме: после клика по 1ому комбо и выбору там фед округа я перехожу ко 2ому и выбираю там субъект федерации.
Выбрал субъект и если записи при данном выборе отсутствуют , то он выдает ошибку record is out of range и следом за ней cannot access the selected table. cb4, жму ок и 4ый комбобокс(cb4) просто пропадает с формы и надо перезапускать полностью проект
...
Рейтинг: 0 / 0
Проблема с сортировкой
    #39321709
starsooВ методе 1го комбо interactivechange записан такой код
Код: plsql
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.
	IF thisform.CBZ2.ListIndex >0
		SELECT * FROM proj33 WHERE proj33.codisp in (SELECT codvuz FROM vuz WHERE z2=thisform.cBz2.Value) INTO cursor cgr1 readwrite
		SELECT DISTINCT oblname FROM vuz WHERE z2=thisform.cBz2.Value INTO CURSOR cb2 readwrite
		SELECT DISTINCT city FROM vuz WHERE z2=thisform.cBz2.Value INTO CURSOR cb3 readwrite
	Else
	If thisform.CBCity.ListIndex >0
		SELECT * FROM proj33 WHERE proj33.codisp in (SELECT codvuz FROM vuz WHERE city=thisform.cBcity.Value) INTO cursor cgr1 readwrite
		SELECT DISTINCT oblname FROM vuz WHERE city=thisform.cBcity.Value INTO CURSOR cb2 readwrite
		SELECT DISTINCT z2 FROM vuz WHERE city=thisform.cBcity.Value INTO CURSOR cb4 readwrite
	else
	If thisform.CBOblname.ListIndex >0
		SELECT * FROM proj33 WHERE proj33.codisp in (SELECT codvuz FROM vuz WHERE oblname=thisform.cBoblname.Value) INTO cursor cgr1 readwrite
		SELECT DISTINCT city FROM vuz WHERE oblname=thisform.CBOblname.Value INTO CURSOR cb3 readwrite
		SELECT DISTINCT z2 FROM vuz WHERE oblname=thisform.CBOblname.Value INTO CURSOR cb4 readwrite
	else
	IF thisform.CBRegion.ListIndex >0		
			SELECT * FROM proj33 WHERE proj33.codisp in (SELECT codvuz FROM vuz WHERE region=thisform.cBRegion.Value) INTO cursor cgr1 readwrite
			SELECT DISTINCT oblname FROM vuz WHERE region=thisform.CBRegion.Value INTO CURSOR cb2 readwrite
			SELECT DISTINCT city FROM vuz WHERE region=thisform.CBRegion.Value INTO CURSOR cb3 readwrite
			SELECT DISTINCT z2 FROM vuz WHERE region=thisform.CBRegion.Value INTO CURSOR cb4 readwrite
			
	ENDIF
	ENDIF
	endif 
	ENDIF


В таком же методе 2го комбо
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
	IF thisform.CBZ2.ListIndex >0
	SELECT * FROM proj33 WHERE proj33.codisp in (SELECT codvuz FROM vuz WHERE z2=thisform.cBz2.Value) INTO cursor cgr1 readwrite
		SELECT DISTINCT region FROM vuz WHERE z2=thisform.cBz2.Value INTO CURSOR cb1 readwrite
		SELECT DISTINCT city FROM vuz WHERE z2=thisform.cBz2.Value INTO CURSOR cb3 readwrite
	Else
	If thisform.CBCity.ListIndex >0
	SELECT * FROM proj33 WHERE proj33.codisp in (SELECT codvuz FROM vuz WHERE city=thisform.cBcity.Value) INTO cursor cgr1 readwrite
		SELECT DISTINCT region FROM vuz WHERE city=thisform.cBcity.Value INTO CURSOR cb1 readwrite
		SELECT DISTINCT z2 FROM vuz WHERE city=thisform.cBcity.Value INTO CURSOR cb4 readwrite
	else
	If thisform.CBOblname.ListIndex >0
			SELECT * FROM proj33 WHERE proj33.codisp in (SELECT codvuz FROM vuz WHERE oblname=thisform.cBoblname.Value) INTO cursor cgr1 readwrite
		SELECT DISTINCT city FROM vuz WHERE oblname=thisform.CBOblname.Value INTO CURSOR cb3 readwrite
		SELECT DISTINCT z2 FROM vuz WHERE oblname=thisform.CBOblname.Value INTO CURSOR cb4 readwrite
		SELECT DISTINCT region FROM vuz WHERE oblname=thisform.CBOblname.Value INTO CURSOR cb1 readwrite
	ENDIF
	endif 
	ENDIF


На 3ем комбо
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
	IF thisform.CBZ2.ListIndex >0
		SELECT * FROM proj33 WHERE proj33.codisp in (SELECT codvuz FROM vuz WHERE z2=thisform.cBz2.Value) INTO cursor cgr1 readwrite
		SELECT DISTINCT region FROM vuz WHERE z2=thisform.cBz2.Value INTO CURSOR cb1 readwrite
		SELECT DISTINCT oblname FROM vuz WHERE z2=thisform.cBz2.Value INTO CURSOR cb2 readwrite
	Else
	If thisform.CBCity.ListIndex >0
		SELECT * FROM proj33 WHERE proj33.codisp in (SELECT codvuz FROM vuz WHERE city=thisform.cBcity.Value) INTO cursor cgr1 readwrite
		SELECT DISTINCT region FROM vuz WHERE city=thisform.cBcity.Value INTO CURSOR cb1 readwrite
		SELECT DISTINCT z2 FROM vuz WHERE city=thisform.cBcity.Value INTO CURSOR cb4 readwrite
		SELECT DISTINCT oblname FROM vuz WHERE city=thisform.cBcity.Value INTO CURSOR cb2 readwrite
	endif 
	ENDIF


На 4ом
Код: plsql
1.
2.
3.
4.
5.
6.
	IF thisform.CBZ2.ListIndex >0
		SELECT * FROM proj33 WHERE proj33.codisp in (SELECT codvuz FROM vuz WHERE Z2=thisform.cBZ2.Value) INTO cursor cgr1 readwrite
		SELECT DISTINCT region FROM vuz WHERE z2=thisform.cBz2.Value INTO CURSOR cb1 readwrite
		SELECT DISTINCT oblname FROM vuz WHERE z2=thisform.cBz2.Value INTO CURSOR cb2 readwrite
		SELECT DISTINCT city FROM vuz WHERE z2=thisform.cBz2.Value INTO CURSOR cb3 readwrite
	ENDIF


А теперь посчитайте сколько раз в процитированном выше тексте используется команда
Код: sql
1.
SELECT * FROM proj33 ... INTO cursor cgr1 readwrite


?
+в каждом комбо в этом же методе ниже дописан такой код, без него грид остается пустым после кликов по комбобоксам

А чего вы ожидали после очередного пересоздания вашего любимого курсораcgr1? Сколько раз надо написать, что создание этого курсора должно быть один раз? В методе Load и нигде больше. Теперь к проблеме: после клика по 1ому комбо и выбору там фед округа я перехожу ко 2ому и выбираю там субъект федерации.
Выбрал субъект и если записи при данном выборе отсутствуют ,В каком ДАННОМ? ГДЕ отсутствуют записи? то он выдает ошибку record is out of range и следом за ней cannot access the selected table. cb4, жму ок и 4ый комбобокс(cb4) просто пропадает с формы и надо перезапускать полностью проектВыкладывайте уже всё, что просили. Задолблся загадки отгадывать.
...
Рейтинг: 0 / 0
Проблема с сортировкой
    #39321717
starsoo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
правильный проходящий.,
В 1ом комбо выбираю: приволжский
Во 2ом комбо : елабгу
В гриде записей не остается(так и должно быть) но сразу выскакивает ошибка cannot access selected table. cb4
...
Рейтинг: 0 / 0
Проблема с сортировкой
    #39321733
starsoo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Если убрать из каждого комбо
SELECT * FROM proj33 ... INTO cursor cgr1 readwrite
то фильтр просто сломается
...
Рейтинг: 0 / 0
Проблема с сортировкой
    #39321734
starsooправильный проходящий.,
В 1ом комбо выбираю: приволжский
Во 2ом комбо : елабгу
В гриде записей не остается(так и должно быть) но сразу выскакивает ошибка cannot access selected table. cb4Разумеется. Этот курсор у вас же не всегда создается.
...
Рейтинг: 0 / 0
Проблема с сортировкой
    #39321735
starsoo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
правильный проходяший.,

Как тогда поправить проблему?
...
Рейтинг: 0 / 0
Проблема с сортировкой
    #39321737
starsooЕсли убрать из каждого комбо
SELECT * FROM proj33 ... INTO cursor cgr1 readwrite
то фильтр просто сломаетсяРазумеется. И правильно. Потому что надо не перестраивать курсор, а менять значения в условиях его отбора.
...
Рейтинг: 0 / 0
Проблема с сортировкой
    #39321740
starsooправильный проходяший.,

Как тогда поправить проблему?Остановиться и наконец-то и для себя, и для пытающихся помогать вам, сформулировать основную задачу. С озвучиванием всех условий на все отборы и фильтры. После получения внятной формулировки будет понятно что дальше делать.
...
Рейтинг: 0 / 0
Проблема с сортировкой
    #39321754
starsoo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
правильный проходящий.,

Основная задача-это получить рабочую программу с работающей сортировкой с кликом по хедерам и работающей фильтрацией с помощью комбобоксов
...
Рейтинг: 0 / 0
Проблема с сортировкой
    #39321780
starsoo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Получается надо в каждом комбо SELECT * FROM proj33 ... INTO cursor cgr1 readwrite заменить на что-то
...
Рейтинг: 0 / 0
Проблема с сортировкой
    #39321793
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
starsooОсновная задача-это получить рабочую программу с работающей сортировкой с кликом по хедерам и работающей фильтрацией с помощью комбобоксов
Тебе уже несколько раз написали - давай рабочий пример кода. Скачаем, запустим. Сделай проект из одной формы, на ней 4 комбо, приложи таблицу, напиши что ткнуть чтобы повторить косяк. Весь рабочий проект не надо, только минимальный минимум повторяющий ошибку.
Объяснять толком ты не умеешь, тепатов тут нет, ХЗ что ты счел неважным и не сказал, что у тебя там понаписано кроме того что сюда попало.

Попробуй:
1. перестраивать другие комбо в LostFocus(), а не в interactivechange()
2. отвяжи курсоры от комбо (RowSourceType = 0), заполняй так
Код: sql
1.
2.
3.
4.
5.
6.
ThisForm.Combo.Clear()
SELECT DISTINCT region FROM vuz INTO CURSOR cb1 
scan
    ThisForm.Combo.AddItem(cb1.region)
endscan
use in cb1


Убирай большие куски кода под спойлер, невозможно топик читатьВ меню дополнительно - spoiler
...
Рейтинг: 0 / 0
Проблема с сортировкой
    #39321797
starsoo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dima T,

Вот проект, выберите в 1ом комбо "приволжский" и во 2ом "бирск" должна появится ошибка cannot access selected table cb4
...
Рейтинг: 0 / 0
Проблема с сортировкой
    #39321819
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Похоже фокс сглючивает от такого издевательства. Перед пересозданием курсора надо RowSource убирать
Код: sql
1.
2.
3.
		thisform.CBZ2.RowSource=''
		SELECT DISTINCT z2 FROM vuz WHERE city=thisform.cBcity.Value INTO CURSOR cb4 readwrite
		thisform.CBZ2.RowSource='cb4'
...
Рейтинг: 0 / 0
Проблема с сортировкой
    #39321826
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В алгоритме у тебя бардак. Зачем при выборе области заново заполняются регионы? При выборе города - перезаполняются области и т.д.

По-хорошему так надо перезаполнять только нижестоящие.
...
Рейтинг: 0 / 0
25 сообщений из 70, страница 1 из 3
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Проблема с сортировкой
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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