powered by simpleCommunicator - 2.0.55     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Проблема с отображением реляций
6 сообщений из 6, страница 1 из 1
Проблема с отображением реляций
    #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
Проблема с отображением реляций
    #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
Проблема с отображением реляций
    #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
Проблема с отображением реляций
    #36361991
Demy85,

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

Код: plaintext
1.
SKIP - 1  IN ChildTable
SKIP  1  IN ChildTable
...
Рейтинг: 0 / 0
Проблема с отображением реляций
    #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
Проблема с отображением реляций
    #36362224
Demy85
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
LUCIAN,

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


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