powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Проблема с сортировкой
70 сообщений из 70, показаны все 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
Проблема с сортировкой
    #39321847
starsoo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dima T,

Это на каком комбо?
...
Рейтинг: 0 / 0
Проблема с сортировкой
    #39321861
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Что это? Если про это 19750097 , то так делать везде, все пересоздания курсоров привязанных к комбо обрамляй
Код: sql
1.
2.
3.
thisform.Combo.RowSource=''
SELECT ... INTO CURSOR MyCursor
thisform.Combo.RowSource='MyCursor'


Выполняя SELECT ... INTO CURSOR MyCursor ты создаешь новый одноименный курсор и закрываешь старый.
Похоже что в некоторых ситуациях фокс не может корректно обработать эту подмену курсора и сглючивает.
...
Рейтинг: 0 / 0
Проблема с сортировкой
    #39321906
Dima TОбъяснять толком ты не умеешь, тепатов тут нет, ХЗ что ты счел неважным и не сказал, что у тебя там понаписано кроме того что сюда попало.Ага, вон про код, выполняемый при нажатии кнопки "Сбросить фильтры" умолчал, а там опять идет до боли знакомое
Код: sql
1.
2.
3.
SELECT proj33.* ;
FROM proj33;
INTO cursor cgr1 READWRITE


Повбывав бы...
...
Рейтинг: 0 / 0
Проблема с сортировкой
    #39321917
starsooправильный проходящий.,

Основная задача-это получить рабочую программу с работающей сортировкой с кликом по хедерам и работающей фильтрацией с помощью комбобоксовПотрясающе информативно! Главное, сразу стали известны и понятны все условия фильтрации во всех таблицах и комбобоксах!
...
Рейтинг: 0 / 0
Проблема с сортировкой
    #39321921
starsoo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dima T, Т.е допустим вот для этих трех строк
Код: plsql
1.
2.
3.
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


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

thisform.Combo.RowSource=''
SELECT ... INTO CURSOR MyCursor
thisform.Combo.RowSource='MyCursor'
такую.
...
Рейтинг: 0 / 0
Проблема с сортировкой
    #39321945
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
starsooDima T, Т.е допустим вот для этих трех строк
Код: plsql
1.
2.
3.
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


я для каждой строки должен написать такую конструкцию?
Для каждой.
...
Рейтинг: 0 / 0
Проблема с сортировкой
    #39321949
starsoostarsoo,

thisform.Combo.RowSource=''
SELECT ... INTO CURSOR MyCursor
thisform.Combo.RowSource='MyCursor'
такую.НЕТ, здесь тоже не надо перезаполнять источник данных, теперь уже источник данных комбобокса.
В какой уже раз - все курсоры (ВСЕ!, Карл, ВСЕ!) должны создаваться 1(ОДИН! и только ОДИН!) раз в LOAD формы. И больше не пересоздаваться.
...
Рейтинг: 0 / 0
Проблема с сортировкой
    #39322011
starsoo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dima T,

такая конструкция должна получиться?
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
IF thisform.CBZ2.ListIndex >0
	thisform.cbz2.RowSource=''
		SELECT * FROM proj33 WHERE proj33.codisp in (SELECT codvuz FROM vuz WHERE z2=thisform.cBz2.Value) INTO cursor cgr1 readwrite
		thisform.Combo.RowSource='cgr1'
		SELECT DISTINCT oblname FROM vuz WHERE z2=thisform.cBz2.Value INTO CURSOR cb2 readwrite
		thisform.Combo.RowSource='cb2'
		SELECT DISTINCT city FROM vuz WHERE z2=thisform.cBz2.Value INTO CURSOR cb3 readwrite
		thisform.Combo.RowSource='cb3'
	Else
...
Рейтинг: 0 / 0
Проблема с сортировкой
    #39322022
starsoo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Вот код для 1го комбо
Код: 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.
	IF thisform.CBZ2.ListIndex >0
	thisform.cbz2.RowSource=''
		SELECT * FROM proj33 WHERE proj33.codisp in (SELECT codvuz FROM vuz WHERE z2=thisform.cBz2.Value) INTO cursor cgr1 readwrite
		thisform.cbz2.RowSource='cgr1'
		SELECT DISTINCT oblname FROM vuz WHERE z2=thisform.cBz2.Value INTO CURSOR cb2 readwrite
		thisform.cbz2.RowSource='cb2'
		SELECT DISTINCT city FROM vuz WHERE z2=thisform.cBz2.Value INTO CURSOR cb3 readwrite
		thisform.cbz2.RowSource='cb3'
	Else
	If thisform.CBCity.ListIndex >0
	thisform.cbcity.RowSource=''
		SELECT * FROM proj33 WHERE proj33.codisp in (SELECT codvuz FROM vuz WHERE city=thisform.cBcity.Value) INTO cursor cgr1 readwrite
		thisform.cbcity.RowSource='cgr1'
		SELECT DISTINCT oblname FROM vuz WHERE city=thisform.cBcity.Value INTO CURSOR cb2 readwrite
		thisform.cbcity.RowSource='cb2'
		SELECT DISTINCT z2 FROM vuz WHERE city=thisform.cBcity.Value INTO CURSOR cb4 readwrite
		thisform.cbcity.RowSource='cb4'
	else
	If thisform.CBOblname.ListIndex >0
	thisform.CBOblname.RowSource=''
		SELECT * FROM proj33 WHERE proj33.codisp in (SELECT codvuz FROM vuz WHERE oblname=thisform.cBoblname.Value) INTO cursor cgr1 readwrite
			hisform.CBOblname.RowSource='cgr1'
		SELECT DISTINCT city FROM vuz WHERE oblname=thisform.CBOblname.Value INTO CURSOR cb3 readwrite
			thisform.CBOblname.RowSource='cb3'
		SELECT DISTINCT z2 FROM vuz WHERE oblname=thisform.CBOblname.Value INTO CURSOR cb4 readwrite
				thisform.CBOblname.RowSource='cb4'
	else
	IF thisform.CBRegion.ListIndex >0	
	thisform.CBRegion.RowSource=''	
			SELECT * FROM proj33 WHERE proj33.codisp in (SELECT codvuz FROM vuz WHERE region=thisform.cBRegion.Value) INTO cursor cgr1 readwrite
				thisform.CBRegion.RowSource='cgr1'	
			SELECT DISTINCT oblname FROM vuz WHERE region=thisform.CBRegion.Value INTO CURSOR cb2 readwrite
				thisform.CBRegion.RowSource='cb2'	
			SELECT DISTINCT city FROM vuz WHERE region=thisform.CBRegion.Value INTO CURSOR cb3 readwrite
				thisform.CBRegion.RowSource='cb3'	
			SELECT DISTINCT z2 FROM vuz WHERE region=thisform.CBRegion.Value INTO CURSOR cb4 readwrite
				thisform.CBRegion.RowSource='cb4'	

			
	ENDIF
	ENDIF
	endif 
	ENDIF

...
Рейтинг: 0 / 0
Проблема с сортировкой
    #39322034
starsooВот код для 1го комбо
У нас теперь есть твой код, зачем здесь эти портянки? Что нам этим сообщить хочешь?
...
Рейтинг: 0 / 0
Проблема с сортировкой
    #39322059
starsoo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
правильный проходящий.,

Хочу узнать правильно ли я преобразовал его
...
Рейтинг: 0 / 0
Проблема с сортировкой
    #39322069
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
starsooDima T,

такая конструкция должна получиться?
НЕТ. Перед селектом надо убрать RowSource у того комбо, который использует этот курсор, затем вернуть. И так с каждым комбо.
Код: sql
1.
2.
3.
4.
5.
6.
7.
		thisform.cboblname.RowSource=''
		SELECT DISTINCT oblname FROM vuz WHERE z2=thisform.cBz2.Value INTO CURSOR cb2 readwrite
		thisform.cboblname.RowSource='cb2'

		thisform.cbCity.RowSource=''
		SELECT DISTINCT city FROM vuz WHERE z2=thisform.cBz2.Value INTO CURSOR cb3 readwrite
		thisform.cbCity.RowSource='cb3'
...
Рейтинг: 0 / 0
Проблема с сортировкой
    #39322090
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
По хорошему надо SET FILTER использовать.
Примерно так: делаешь метод SetFilter() и вызываешь его из каждого комбо в InteractiveChange()
кодв Init()
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
SELECT DISTINCT region FROM vuz INTO CURSOR cb1 READWRITE nofilter
thisform.CBRegion.RowSource='cb1'

SELECT DISTINCT oblname, region FROM vuz INTO CURSOR cb2 READWRITE nofilter
thisform.CBOblname.RowSource='cb2'

SELECT DISTINCT city, oblname, region FROM vuz INTO CURSOR cb3 READWRITE nofilter
thisform.CBCity.RowSource='cb3'


В SetFilter()
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
DO CASE
	CASE !EMPTY(ThisForm.cboblname.Value)
		* Фильтр по области
		SET FILTER TO cb3.oblname = cb2.oblname IN cb3
	
	CASE !EMPTY(ThisForm.cBRegion.Value)
		* Фильтр по регионам
		SET FILTER TO cb2.region = cb1.region IN cb2
		SET FILTER TO cb3.region = cb1.region IN cb3
	
	OTHERWISE
		* нет фильтра
		SET FILTER TO IN cb2
		SET FILTER TO IN cb3
ENDCASE


остальные таблицы добавь по аналогии
...
Рейтинг: 0 / 0
Проблема с сортировкой
    #39322113
starsoo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
А по поводу задания по фильтрам: есть таблица vuz.dbf, собственно там вся информация по вузам, где находится, какой профиль, сокращенное название и тд. И 2ая таблица proj33.dbf в ней скажем так инфомрация по финансированию этих вузов. Таблицы могут быть связаны полями proj33.codisp и vuz.codvuz. На форме nir.scx каждый комбо соответствует своему полю из таблицы vuz. Допустим я выбираю на форме nir в комбо фед округов "центральный" и он мне должен отобразить в гриде информацию по финансам вузов, которые находятся в центральном фед округе. В свою очередь остальные 3 комбобокса должны подстроиться под 1ый, т.е должны содержать информацию центрального фед округа(т.е все комбо должны быть связаны между собой)
...
Рейтинг: 0 / 0
Проблема с сортировкой
    #39322146
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В гриде у тебя курсор cgr1, добавь туда регион, город, область и фильтруй cgr1 по этим полям точно так же.
Код: sql
1.
2.
3.
SELECT proj33.*, vuz.region, vuz.oblname ... ;
   FROM proj33 join vuz on proj33.codisp = vuz.codvuz;
   INTO cursor cgr1 readwrite


Только гриду надо будет Refesh() вызвать чтобы он перерисовался.

Навигацию пропиши в InteractiveChange(). Например CBOblname.InteractiveChange()
Код: sql
1.
2.
3.
ThisForm.SetFilter()
thisform.CBRegion.Value = cb2.region && Устанавливаем регион выбранной области
thisform.CBCity.Value = '' && Убираем ранее выбранный город
...
Рейтинг: 0 / 0
Проблема с сортировкой
    #39322150
Dima TПо хорошему надо SET FILTER использовать. Не надо.
Если в Инит формы записать (не забыв вычистить load jn всех упоминаний эоб этих курсорах)

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
With This
	.CBRegion.RowSource='cb1'
	.CBOblname.RowSource='Select Distinct oblname From vuz Where Region=Thisform.CBRegion.Value Or Empty(Thisform.CBRegion.Value) Into Cursor cb2'
	.CBOblname.RowSourceType = 3 
	.CBCity.RowSource='Select Distinct city From vuz Where OblName=Thisform.CBOblname.Value Or Empty(Thisform.CBOblname.Value) Into Cursor cb3'
	.CBCity.RowSourceType = 3 
	.CBZ2.RowSource='Select Distinct z2 From vuz Where City=Thisform.CBCity.Value Or Empty(Thisform.CBCity.Value) Into Cursor cb4'
	.CBCity.RowSourceType = 3 
endwith


, то в любимых InteractiveChange комбобоксов надо всё выкинуть и вписать
Код: sql
1.
2.
3.
4.
5.
with Thisform
  .CBOblname.Requery()
  .CBCity.Requery()
  .CBZ2.Requery()
endwith


И вуа ля, значения комбобоксов фильтруются.
Код кнопки "Сбросить фильтры" превращается в
Код: sql
1.
2.
3.
4.
5.
6.
With Thisform
  Store -1 To .cbCity.ListIndex, .cbregion.ListIndex, .cboblname.ListIndex, .cbz2.ListIndex
  .cboblname.Requery()
  .cbCity.Requery()
  .cbz2.Requery()
Endwith


Фильрация любимого cgr1 таким образом не сработает ибо у грида нет метода requery().

Сейчас немного освобожусь и нарисую курсорадаптер для него.
...
Рейтинг: 0 / 0
Проблема с сортировкой
    #39322223
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
правильный проходящий.Dima TПо хорошему надо SET FILTER использовать. Не надо.
Надо. При 64-128 Мб оперативки на борту и тормозным HDD я бы с тобой согласился, но на современных компах, где браузер безбожно тормозит без свободного гига оперативки - не соглашусь. Этот гиг есть практически везде и грех им не пользоваться.

SET FILTER по курсору и Requery() к исходной таблице стоят по-разному. Если курсор целиком живет в памяти, то скорость доступа 3-5 Гб/сек, а если таблица где-то в сети, и еще как share открыта, то можно раз в 100-500 медленнее получить данные. И потом SET FILTER это отложенное выполнение, не ткнули в комбо - ничего не отработало, а твои Requery() отработают каждый раз.
...
Рейтинг: 0 / 0
Проблема с сортировкой
    #39322301
starsoo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
правильный проходящий.,

Вы сделаете?
...
Рейтинг: 0 / 0
Проблема с сортировкой
    #39322844
starsooправильный проходящий.,

Вы сделаете?Сделал. Но вылез один редкий глюк грида. И вот хочу вашу формочку использовать для демонстрации народу сего глюка и совместного поиска обхода этого глюка.
Поехали на фоксклуб.
...
Рейтинг: 0 / 0
Проблема с сортировкой
    #39322906
starsoo,
нв фоксклубе ssa создал новую тему Некоторые особенности грида... . В ней выложена ваша форма и ваши порезанные данные (их было слишком много :) )
Можете взять оттуда форму и посмотреть как все работает. При этом надо учесть все, что написано в той теме про глюк грида.
...
Рейтинг: 0 / 0
Проблема с сортировкой
    #39322918
starsoo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
правильный проходящий.,

Да, я заметил уже
...
Рейтинг: 0 / 0
Проблема с сортировкой
    #39322920
starsoo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
А порезали данные, в смысле просто удалили часть записей из табилцы proj33?
...
Рейтинг: 0 / 0
Проблема с сортировкой
    #39322921
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Грид странная штука. После обновления курсорадаптера гриду Refresh() надо делать.
...
Рейтинг: 0 / 0
Проблема с сортировкой
    #39322925
starsooА порезали данные, в смысле просто удалили часть записей из табилцы proj33?Из обоих.
...
Рейтинг: 0 / 0
Проблема с сортировкой
    #39322927
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Есть еще вариант, после каждого oCAD.CursorRefresh() ставить фокус на грид, тогда без Refresh() работает
...
Рейтинг: 0 / 0
Проблема с сортировкой
    #39322929
starsoo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
А еще можно будет сделать, чтобы фильтрацию можно было начинать с любого комбо?
...
Рейтинг: 0 / 0
Проблема с сортировкой
    #39322933
Dima TЕсть еще вариант, после каждого oCAD.CursorRefresh() ставить фокус на грид, тогда без Refresh() работаетНи фига, тут тоже с Refresh(). Просто он тут неявный. Его неявно вызывает SetFocus() грида.
...
Рейтинг: 0 / 0
Проблема с сортировкой
    #39322934
starsooА еще можно будет сделать, чтобы фильтрацию можно было начинать с любого комбо?В общем-то можно, вопрос в нужности. Ведь придется все поиски начинать со сброса фильтров.
...
Рейтинг: 0 / 0
Проблема с сортировкой
    #39322936
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
правильный проходящий.Dima TЕсть еще вариант, после каждого oCAD.CursorRefresh() ставить фокус на грид, тогда без Refresh() работаетНи фига, тут тоже с Refresh(). Просто он тут неявный. Его неявно вызывает SetFocus() грида.
Нет. Возможно это какой-то внутренний refresh, который оба вызывают. Пропиши SetFocus() после каждого oCAD.CursorRefresh(), а в Refresh() грида
Код: sql
1.
WAIT WINDOW (TIME()) NOWAIT NOCLEAR 


и потыкай
...
Рейтинг: 0 / 0
Проблема с сортировкой
    #39322939
starsoo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
правильный проходящий.starsooА еще можно будет сделать, чтобы фильтрацию можно было начинать с любого комбо?В общем-то можно, вопрос в нужности. Ведь придется все поиски начинать со сброса фильтров.
Просто изначально так и было
...
Рейтинг: 0 / 0
Проблема с сортировкой
    #39322940
Dima Tправильный проходящий.пропущено...
Ни фига, тут тоже с Refresh(). Просто он тут неявный. Его неявно вызывает SetFocus() грида.
Нет. Возможно это какой-то внутренний refresh, который оба вызывают.Угу, именно про это и речь. А не про то, что ты подумал. :)
...
Рейтинг: 0 / 0
Проблема с сортировкой
    #39322944
starsooправильный проходящий.пропущено...
В общем-то можно, вопрос в нужности. Ведь придется все поиски начинать со сброса фильтров.
Просто изначально так и былоИ было очень неудобно.
Но если есть желание, то можно и переделать. Самостоятельно. Направление мысли дано.
...
Рейтинг: 0 / 0
Проблема с сортировкой
    #39322967
starsoo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
правильный проходящий.,

А как вы поправили глюк с гридом?
...
Рейтинг: 0 / 0
Проблема с сортировкой
    #39323016
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
starsooправильный проходящий.,

А как вы поправили глюк с гридом?
я же написал, после каждого oCAD.CursorRefresh() поставь
Код: sql
1.
ThisForm.Grid1.Refresh()



PS Ты или писать учись или программиста найми. Тут за тебя никто твою работу бесплатно работать не будет. Тут помогают учиться.
...
Рейтинг: 0 / 0
Проблема с сортировкой
    #39323140
starsoo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Как мне переделать кнопку добавления записей? В редактировании просто добавил строчку
Код: plsql
1.
nir.DataEnvironment.oCAD.CursorRefresh() 


Добавление происходит путем нажатия на форме на кнопку добавление (код do form form2)
Изначально на кнопке добавить (на форме добавления) был такой код
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
*!*	SELECT proj33
*!*	APPEND BLANK 
*!*	replace codprog WITH thisform.t1.value
*!*	replace f WITH thisform.t2.value
*!*	replace isp WITH thisform.t3.value
*!*	replace grnti WITH thisform.t4.value
*!*	replace ruk WITH thisform.t5.value
*!*	replace ruk2 WITH thisform.t6.value
*!*	replace pfin WITH VAL(thisform.t7.value)
*!*	replace codisp WITH thisform.t8.value
*!*	replace srok_n WITH thisform.t9.value
*!*	replace srok_k WITH thisform.t10.value
*!*	replace nir WITH thisform.t11.value
*!*	replace codtype WITH thisform.t12.value
*!*	replace pfin1 WITH VAL(thisform.t13.value)
*!*	replace pfin2 WITH VAL(thisform.t14.value)
*!*	replace pfin3 WITH VAL(thisform.t15.value)
*!*	replace pfin4 WITH VAL(thisform.t16.value)
*!*	replace ffin WITH VAL(thisform.t17.value)
*!*	replace ffin1 WITH VAL(thisform.t18.value)
*!*	replace ffin2 WITH VAL(thisform.t19.value)
*!*	replace ffin3 WITH VAL(thisform.t20.value)
*!*	replace ffin4 WITH VAL(thisform.t21.value)


Попробовал заменить на INSERT INTO proj33 (codprog) VALUES ("1") , нажимаю добавить, перехожу на сновную форму nir и там добавленной записи не видно, закрываю проект, открываю отдельно таблицу и там запись есть, открываю проект заново и там записи в гриде нет
...
Рейтинг: 0 / 0
Проблема с сортировкой
    #39323231
starsoo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Видимо какое-то свйоство КА на апдейт поставить нужно
...
Рейтинг: 0 / 0
Проблема с сортировкой
    #39323236
starsoo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Попробовал так
Код: plsql
1.
2.
3.
4.
SELECT cgr1
	APPEND BLANK 
	replace codprog WITH thisform.t1.value
		nir.grid1.Refresh()


Но добавление не идет в таблицу proj33
...
Рейтинг: 0 / 0
Проблема с сортировкой
    #39323276
starsooВидимо какое-то свйоство КА на апдейт поставить нужноНужно. Ибо пока еще ничего не настроено.
...
Рейтинг: 0 / 0
Проблема с сортировкой
    #39323277
starsooПопробовал так
Код: plsql
1.
2.
3.
4.
SELECT cgr1
	APPEND BLANK 
	replace codprog WITH thisform.t1.value
		nir.grid1.Refresh()


Но добавление не идет в таблицу proj33Разумеется. Еще ничего для обратной связи не настроено.
...
Рейтинг: 0 / 0
Проблема с сортировкой
    #39323304
starsoo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
правильный проходящий.,

Надо добавить
BufferModeOverride = 5
TABLEUPDATE(.T.)
?
...
Рейтинг: 0 / 0
Проблема с сортировкой
    #39323347
starsoo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Попробовал такой код на кнопку добавить написать
Код: plsql
1.
2.
3.
4.
5.
6.
7.
INSERT INTO   proj33 (codprog) VALUES ("йцук")
SELECT proj33
SET MULTILOCKS ON 
			CURSORSETPROP('Buffering', 5, 'proj33' )
		TaBLEUPDATE(.T.)
nir.grid1.Refresh()
nir.DataEnvironment.oCAD.CursorRefresh()


Все также, в таблицу добавляет, а в проекте, в гриде её нет даже полсе перезапуска
...
Рейтинг: 0 / 0
Проблема с сортировкой
    #39327841
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.
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.
With This
	.CBRegion.RowSource='Select Distinct region From vuz where ;
	((OblName=Thisform.CBOblname.Value) Or Empty(Thisform.CBOblname.Value)) and ;
	(City=Thisform.CBCity.Value Or Empty(Thisform.CBCity.Value)) ;
	and (z2=Thisform.CBZ2.Value Or Empty(Thisform.CBZ2.Value)) ;
	Into Cursor cb1'
	.CBRegion.RowSourceType = 3
	.CBOblname.RowSource='Select Distinct oblname From vuz Where (region=Thisform.CBRegion.Value Or Empty(Thisform.CBRegion.Value)) and ;
	 (z2=Thisform.CBZ2.Value Or Empty(Thisform.CBZ2.Value)) and (City=Thisform.CBCity.Value Or Empty(Thisform.CBCity.Value)) ;
	 Into Cursor cb2'
	.CBOblname.RowSourceType = 3
	
	.CBCity.RowSource='Select Distinct city From vuz Where (z2=Thisform.CBZ2.Value Or Empty(Thisform.CBZ2.Value)) ;
	 and (region=Thisform.CBRegion.Value Or Empty(Thisform.CBRegion.Value)) and (OblName=Thisform.CBOblname.Value ;
	 Or Empty(Thisform.CBOblname.Value)) Into Cursor cb3'
	.CBCity.RowSourceType = 3
	
	.CBZ2.RowSource='Select z2 From vuz where ;
	((OblName=Thisform.CBOblname.Value) Or Empty(Thisform.CBOblname.Value)) and ;
	(City=Thisform.CBCity.Value Or Empty(Thisform.CBCity.Value)) ;
	and (Region=Thisform.CBRegion.Value Or Empty(Thisform.CBRegion.Value)) ;
	Into Cursor cb4'
    .CBZ2.RowSourceType = 3 
    *******************
    .CBCod.RowSource='Select distinct codprog From proj33 ;   
    into Cursor cb5'
    .CBCod.RowSourceType = 3      
   **************************
	.DataEnvironment.AddObject('oCad', 'cursoradapter')
	With .DataEnvironment.oCad As CursorAdapter
		TEXT to .SelectCmd NOSHOW FLAGS 1 PRETEXT 15
		SELECT * FROM proj33 WHERE (codprog=?thisform.cbCod.Value or EMPTY(?thisform.cbcod.Value)) AND proj33.codisp in
		(
			SELECT codvuz FROM vuz
			WHERE (region=?thisform.cBRegion.Value or Empty(?thisform.cBRegion.Value))
			 and (oblname=?thisform.cBoblname.Value or Empty(?thisform.cBoblname.Value))
			 and (city=?Thisform.CBCity.Value or Empty(?Thisform.CBCity.Value))
			 and (z2=?thisform.cBz2.Value or Empty(?thisform.cBz2.Value)) 
		)
		ENDTEXT
*ssa*			INTO cursor cgr1 readwrite
		.Alias = 'cgr1'
		.DataSourceType="NATIVE"
*!*			Tables=proj33	
*!*			SET MULTILOCKS ON 
*!*			SELECT proj33
*!*			SendUpdates = .T.

		
				
		If Not .CursorFill()
			Messagebox('Что-то не так')
			Aerror(arrerr)
		Else
			Index On codprog+F Tag codprog
			Index On F Tag F
			Index On nir Tag nir
			Index On isp Tag  isp
			Index On codisp Tag codisp
			Index On ruk Tag ruk
			Index On ruk2 Tag ruk2
			Index On grnti Tag grnti
			Index On codtype Tag codtype
			Index On pfin Tag pfin
			Index On pfin1 Tag pfin1
			Index On pfin2 Tag pfin2
			Index On pfin3 Tag pfin3
			Index On pfin4 Tag pfin4
			Index On ffin  Tag ffin
			Index On ffin1 Tag ffin1
			Index On ffin2 Tag ffin2
			Index On ffin3 Tag ffin3
			Index On ffin4 Tag ffin4
			Set Order To
			Go Top
		Endif
	Endwith
	With .Grid1
*ssa*		.RecordSource=''
		.RecordSource="cgr1"
		.AutoFit()
		.RecordSourceType=4 && 1 
		SendUpdates = .T.

		*****************************
*!*			CURSORSETPROP('Buffering', 5, 'cgr1' )
*!*			TaBLEUPDATE(.T.)
*!*			
		*************************
		.column1.header1.Caption='№ Проекта'
		.column2.header1.Caption='№ НИР'
		.column2.Width=70
		.column11.header1.Caption='Наименование проекта'
		.column3.header1.Caption='Организация-исполнитель'
		.column3.Width=150
		.column8.header1.Caption='Код организации'
		.column8.Width=100
		.column9.header1.Caption='Начало срока'
		.column9.Width=80
		.column10.header1.Caption='Конец срока'
		.column10.Width=80
		.column5.header1.Caption='Руководитель'
		.column5.Width=100
		.column6.header1.Caption='Должность'
		.column6.Width=130
		.column4.header1.Caption='Код ГРНТИ'
		.column4.Width=130
		.column12.header1.Caption='Характер проекта'
		.column12.Width=130
		.column7.header1.Caption='План финансирования'
		.column7.Width=130
		.column13.header1.Caption='1ый Квартал'
		.column13.Width=90
		.column14.header1.Caption='2ой Квартал'
		.column14.Width=90
		.column15.header1.Caption='3ий Квартал'
		.column15.Width=90
		.column16.header1.Caption='4ый Квартал'
		.column16.Width=90
		.column17.header1.Caption='Фактическое финансирование'
		.column17.Width=130
		.column18.header1.Caption='1ый Квартал'
		.column18.Width=90
		.column19.header1.Caption='2ой Квартал'
		.column19.Width=90
		.column20.header1.Caption='3ий Квартал'
		.column20.Width=90
		.column21.header1.Caption='4ый Квартал'
		.column21.Width=90
	Endwith
Endwith

...
Рейтинг: 0 / 0
Проблема с сортировкой
    #39330438
asdor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А ты попробуй погуглить "записать этот грид в таблицу"
Думаю будешь удивлен. Мне кажется это не тривиальная задача!!!)))

Примерно так. Все знают как налить воду в бутылку.
А вот как потом, эту бутылку в воде...
Ну разве что просто выкинуть.

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


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