Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Проблема с отображением реляций / 6 сообщений из 6, страница 1 из 1
11.12.2009, 16:37
    #36361847
Demy85
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с отображением реляций
Доброго времени суток. У меня проблемма с отображением реляций в следующей программе:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
96.
97.
98.
99.
100.
101.
102.
103.
104.
105.
106.
107.
108.
109.
110.
111.
112.
113.
114.
115.
116.
117.
118.
119.
120.
121.
122.
123.
124.
125.
126.
127.
128.
129.
130.
131.
********************************************************************************
LOCAL lfrmMain
lfrmMain = CREATEOBJECT('MyForm')
lfrmMain.Show( 1 )

CLOSE TABLES

********************************************************************************
DEFINE CLASS MyForm AS Form 
	
	Caption     = 'Связанные таблицы.'
	BorderStyle =  2 
	
	ADD OBJECT grdParent AS Grid WITH          ;
		Left               =  5 ,            ;
		Top                =  5 ,            ;
		Width              =  250 ,          ;
		Height             =  250 ,          ;
		AllowCellSelection = .F.,          ;
		RecordSource       = 'ParentTable'
		
	ADD OBJECT grdChild AS Grid WITH           ;
		Top                =  5 ,            ;
		Width              =  250 ,          ;
		Height             =  250 ,          ;
		AllowCellSelection = .F.,          ;
		RecordSource       = 'ChildTable'
		 
	ADD OBJECT chkMode AS MyCheckBox WITH  ;
		Left    =  5 ,                   ;
		Height  =  25 ,                  ;
		Value   = .F.,                 ;
		Caption = 'Отображать как связанные.'
		
	PROCEDURE Load
	
		SELECT  0 
		IF FILE('ParentTable.dbf')
			
			USE 'ParentTable.dbf'
			
		ELSE 
			
			CREATE DBF 'ParentTable.dbf' ( ;
				Field1 Character,      ;
				Field2 Character,      ;
				Id     Integer AUTOINC ;
			)
			
			INSERT INTO 'ParentTable' (Field1, Field2) VALUES('1', '1')
			INSERT INTO 'ParentTable' (Field1, Field2) VALUES('1', '2')
			INSERT INTO 'ParentTable' (Field1, Field2) VALUES('1', '3')
			INSERT INTO 'ParentTable' (Field1, Field2) VALUES('2', '1')
			INSERT INTO 'ParentTable' (Field1, Field2) VALUES('2', '2')
			
		ENDIF && FILE('ParentTable.dbf')

		SELECT  0 
		IF FILE('ChildTable.dbf')
			
			USE 'ChildTable.dbf'
			
		ELSE 
			
			CREATE DBF 'ChildTable.dbf' (  ;
				Field1 Character,      ;
				Field2 Character,      ;
				Id     Integer AUTOINC ;
			)
			
			INSERT INTO 'ChildTable' (Field1, Field2) VALUES('1', '1')
			INSERT INTO 'ChildTable' (Field1, Field2) VALUES('1', '1')
			INSERT INTO 'ChildTable' (Field1, Field2) VALUES('1', '2')
			INSERT INTO 'ChildTable' (Field1, Field2) VALUES('2', '1')
			INSERT INTO 'ChildTable' (Field1, Field2) VALUES('2', '1')
			INSERT INTO 'ChildTable' (Field1, Field2) VALUES('1', '1')
			
		ENDIF && FILE('ChildTable.dbf')

		IF FILE('ChildTable.idx')
			
			SET INDEX TO 'ChildTable.idx'
			
		ELSE 
			
			INDEX ON Field1 + Field2 TO 'ChildTable.idx'
			
		ENDIF && FILE('ChildTable.idx')
		
	ENDPROC && Load
	
	PROCEDURE Unload
		
		CLOSE TABLES 
		
	ENDPROC && Unload 
	
	PROCEDURE Init
		
		This.grdChild .Left = This.grdParent.Width +  10 
		
		This.Width = This.grdChild .Left + This.grdChild .Width +  5 

		This.chkMode.Top   = This.grdParent.Height +  10 
		This.chkMode.Width = This.Width -  10 
		
		This.Height = This.chkMode.Top + This.chkMode.Height +  5 
		
	ENDPROC && Init
	
ENDDEFINE && CLASS MyForm

********************************************************************************
DEFINE CLASS MyCheckBox AS CheckBox  
	
	PROCEDURE InteractiveChange 
		
		SELECT ParentTable 
		
		IF This.Value 
			
			SET RELATION TO Field1 + Field2 INTO ChildTable
		
		ELSE 
			
			SET RELATION OFF INTO ChildTable
			
		ENDIF && This.Value 
		
	ENDPROC && Click
	
ENDDEFINE && MyCheckBox 

При включении отображения таблиц как связанных все нормально. Но при обратном переключении дочерняя таблица не отображает все элементы. Помогите, возможно я что-то упустил. Заранее благодарен.
...
Рейтинг: 0 / 0
11.12.2009, 16:56
    #36361895
LUCIAN
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с отображением реляций
Demy85,
Вместо:
Код: plaintext
1.
2.
3.
DEFINE CLASS MyCheckBox AS CheckBox  
	
	PROCEDURE InteractiveChange 
Попробуйте так:
Код: plaintext
1.
2.
3.
DEFINE CLASS MyCheckBox AS CheckBox  
	
	PROCEDURE VALID
...
Рейтинг: 0 / 0
11.12.2009, 16:59
    #36361910
Demy85
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с отображением реляций
LUCIANDemy85,
Вместо:
Код: plaintext
1.
2.
3.
DEFINE CLASS MyCheckBox AS CheckBox  
	
	PROCEDURE InteractiveChange 
Попробуйте так:
Код: plaintext
1.
2.
3.
DEFINE CLASS MyCheckBox AS CheckBox  
	
	PROCEDURE VALID

Так не получается.
...
Рейтинг: 0 / 0
11.12.2009, 17:23
    #36361991
Проблема с отображением реляций
Demy85,

попробуй после переключения в дочерней таблице «дёрнуть» указатель записи, как то так:

Код: plaintext
1.
SKIP - 1  IN ChildTable
SKIP  1  IN ChildTable
...
Рейтинг: 0 / 0
11.12.2009, 17:24
    #36361995
LUCIAN
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с отображением реляций
Demy85,
Вот это подойдёт
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
DEFINE CLASS MyCheckBox AS CheckBox  
	
	PROCEDURE VALID
		
		IF This.Value 
			SELECT ChildTable
			SET INDEX TO 'ChildTable.idx'
			SELECT ParentTable
			SET RELATION TO Field1 + Field2 INTO ChildTable
		
		ELSE 
			SET RELATION OFF INTO ChildTable
			SELECT ChildTable
			SET INDEX TO 
			GO top
			Thisform.grdChild.refresh
			
		ENDIF && This.Value 
		
	ENDPROC && Click
	
ENDDEFINE && MyCheckBox 
...
Рейтинг: 0 / 0
11.12.2009, 19:16
    #36362224
Demy85
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с отображением реляций
LUCIAN,

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


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