Гость
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / поиск в таблице / 6 сообщений из 6, страница 1 из 1
28.03.2011, 06:39
    #37185071
putnik114
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
поиск в таблице
День добрый! Хочу понять Фокс на конкретных примерах. У меня есть таблица Grid 1 с данными фамилия, имя, отчествои т.д. Хочу создать форму с Grid1 и Textbox. В текст боксе набираю фамилию - в таблице видно искомое. Текстбоксов нужно 3 штук. Но сначала помогите с одним. В оболочке самого Фокса я делал так: Создавал 2 таблицы: Одна - 50 полей со всеми данными(тасамая Grid1), другая -1 поле(пусть будет Grid2). Связываю их по этому полю, замет набрав в поле Грид2 фамилию получаю в Грид1 все данные. То же самое хочу сделать уже в форме. Но я не могу понять что и где (в каких Событиях и методах)надо прописать чтобы эта форма работало. Создаю форму, добавляю Grid1 и DGrid2, в форме добавляю две таблицы, связываю их по полю fam. В таблице Grid2 ввожу фамилию и ничего. Понимаю что надо прописать и Select... но запутался в Init, Destroy, Click и прочих. Куда пишется сама процедура поиска и иная другая процедура? Спасибо что не откажете в помощи.
...
Рейтинг: 0 / 0
28.03.2011, 09:04
    #37185141
IgorNG
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
поиск в таблице
putnik114,
вторую таблицу создавать не нужно.
после ввода фамилии в textbox, при нажатии клавиши enter или созданной отдельной кнопки "Поиск" в соответствующем событии пишите свой select.
...
Рейтинг: 0 / 0
28.03.2011, 09:40
    #37185176
putnik114
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
поиск в таблице
IgorNGputnik114,
вторую таблицу создавать не нужно.
после ввода фамилии в textbox, при нажатии клавиши enter или созданной отдельной кнопки "Поиск" в соответствующем событии пишите свой select.

В этом и загвоздка (я же пишу что учусь на конкретном примере). Не знаю где правильно прописать процедуру select. Я так понимаю если создал кнопку то: ПрКнМ -Code:- а дальше? Click? И уже в тело События прописываю процедуру? А что-то где-то еще нужно прописывать?
...
Рейтинг: 0 / 0
28.03.2011, 09:44
    #37185187
IgorNG
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
поиск в таблице
putnik114,

В Click кнопки и передать фокус в grid
...
Рейтинг: 0 / 0
28.03.2011, 10:00
    #37185213
putnik114
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
поиск в таблице
IgorNG, спасибо попробую
...
Рейтинг: 0 / 0
28.03.2011, 12:23
    #37185508
LUCIAN
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
поиск в таблице
putnik114,
Запустите приведенный ниже код ,посмотрите как работает эта форма ,возможно кое какие фрагменты этого кода
будут Вам полезны
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
96.
97.
98.
99.
100.
101.
102.
103.
104.
105.
106.
107.
108.
109.
110.
111.
112.
113.
114.
115.
116.
117.
118.
119.
120.
121.
122.
123.
124.
125.
126.
127.
128.
129.
130.
131.
132.
133.
134.
135.
136.
137.
138.
139.
140.
141.
142.
143.
144.
145.
146.
147.
148.
149.
150.
151.
152.
153.
154.
155.
156.
157.
158.
159.
160.
161.
162.
163.
164.
165.
166.
167.
168.
169.
170.
171.
172.
173.
174.
175.
176.
177.
178.
179.
180.
181.
182.
183.
184.
185.
186.
187.
188.
189.
190.
191.
192.
193.
194.
195.
196.
197.
198.
199.
200.
201.
202.
203.
204.
205.
206.
207.
208.
209.
210.
211.
212.
213.
214.
215.
216.
217.
218.
219.
220.
221.
222.
223.
224.
225.
226.
227.
228.
229.
230.
231.
232.
233.
234.
235.
236.
237.
238.
239.
240.
241.
242.
243.
244.
245.
246.
247.
248.
249.
250.
251.
252.
253.
254.
255.
*СОЗДАНИЕ КУРСОРА ИЗ FIO
 
SELE  0 
CREATE CURSOR CFIO (TN C( 5 ),FIO C( 40 ))
INSERT INTO CFIO (TN,FIO) VALUES ('2632 ','0                                       ')
INSERT INTO CFIO (TN,FIO) VALUES ('2473 ','АБРАМЧИК МИХАИЛ ИВАНОВИЧ                ')
INSERT INTO CFIO (TN,FIO) VALUES ('1864 ','АВЕРЬЯНОВ ДМИТРИЙ ПАВЛОВИЧ              ')
INSERT INTO CFIO (TN,FIO) VALUES ('1209 ','АГАРЕВИЧ МЕЧЕСЛАВ ИОСИФОВИЧ             ')
INSERT INTO CFIO (TN,FIO) VALUES ('1254 ','АДАМОВИЧ ВИКТОР МЕЧИСЛАВОВИЧ            ')
INSERT INTO CFIO (TN,FIO) VALUES ('2263 ','АЗЕВИЧ СВЕТЛАНА ИВАНОВНА                ')
INSERT INTO CFIO (TN,FIO) VALUES ('1443 ','АЛЕТАРОВИЧ ЮРИЙ ЛЮЦИЯНОВИЧ              ')
INSERT INTO CFIO (TN,FIO) VALUES ('1801 ','АМБРОС АНТОН АНТОНОВИЧ                  ')
INSERT INTO CFIO (TN,FIO) VALUES ('1302 ','АНАЦКО ЗЕКФРИД КАЗИМИРОВИЧ              ')
INSERT INTO CFIO (TN,FIO) VALUES ('938  ','АПАНАС МАРИЯ СТАНИСЛАВОВНА              ')
INSERT INTO CFIO (TN,FIO) VALUES ('2803 ','АРОДЬ ВИКТОР СТАНИСЛАВОВИЧ              ')
INSERT INTO CFIO (TN,FIO) VALUES ('2572 ','АСТАПЕНКО ДЕНИС АЛЕКСАНДРОВИЧ           ')
INSERT INTO CFIO (TN,FIO) VALUES ('2111 ','АШУРОК АЛЕКСАНДР СТАНИСЛАВОВИЧ          ')
INSERT INTO CFIO (TN,FIO) VALUES ('1317 ','БАБИЧ СЕРГЕЙ ИВАНОВИЧ                   ')
INSERT INTO CFIO (TN,FIO) VALUES ('10   ','БЕЙ ФРАНЦ БРОНИСЛАВОВИЧ                 ')
INSERT INTO CFIO (TN,FIO) VALUES ('1346 ','БИЧЕЛЬ ВИКТОР ТАДЕУШЕВИЧ                ')
INSERT INTO CFIO (TN,FIO) VALUES ('2512 ','БЛИЗНЕВСКИЙ ИВАН ИВАНОВИЧ               ')
INSERT INTO CFIO (TN,FIO) VALUES ('1033 ','БОГАТКО ИВАН ИВАНОВИЧ                   ')
INSERT INTO CFIO (TN,FIO) VALUES ('1437 ','БРАНЧЕЛЬ СЕРГЕЙ ЕВГЕНЬЕВИЧ              ')
INSERT INTO CFIO (TN,FIO) VALUES ('1152 ','БУРАК ЮРИЙ ВЛАДИМИРОВИЧ                 ')
INSERT INTO CFIO (TN,FIO) VALUES ('3245 ','БЫЛИНСКИЙ ГЕННАДИЙ ЮРЬЕВИЧ              ')
INSERT INTO CFIO (TN,FIO) VALUES ('1716 ','БЭЧКО МИХАИЛ ИВАНОВИЧ                   ')
INSERT INTO CFIO (TN,FIO) VALUES ('1043 ','ВАЛЮК РЕГИНА ВИКТОРОВНА                 ')
INSERT INTO CFIO (TN,FIO) VALUES ('2827 ','ВДОВИЧЕНКО АНАТОЛИЙ АНДРЕЕВИЧ           ')
INSERT INTO CFIO (TN,FIO) VALUES ('1006 ','ВЕНСКО ЮРИЙ ВЛАДИМИРОВИЧ                ')
INSERT INTO CFIO (TN,FIO) VALUES ('2124 ','ВИЛЬБИК ГЕННАДИЙ АНТОНОВИЧ              ')
INSERT INTO CFIO (TN,FIO) VALUES ('2854 ','ВНУКЕВИЧ АНАТОЛИЙ СТАНИСЛАВОВИЧ         ')
INSERT INTO CFIO (TN,FIO) VALUES ('1350 ','ВОЙДАК АНДРЕЙ ЧЕСЛАВОВИЧ                ')
INSERT INTO CFIO (TN,FIO) VALUES ('3935 ','ВРУБЛЕВСКАЯ ЕЛЕНА МАРЬЯНОВНА            ')
INSERT INTO CFIO (TN,FIO) VALUES ('3423 ','ВЫСОЦКИЙ ИОСИФ ЕВГЕНЬЕВИЧ               ')
INSERT INTO CFIO (TN,FIO) VALUES ('1852 ','ВЯЖЕЛЬ ВАЛЬДЕМИР ЗЕНОНОВИЧ              ')
INSERT INTO CFIO (TN,FIO) VALUES ('1399 ','ГАЙКЕВИЧ ГЕННАДИЙ ЛЮЦИЯНОВИЧ            ')
INSERT INTO CFIO (TN,FIO) VALUES ('1725 ','ГЕРБЕДЬ ВИКТОР ИВАНОВИЧ                 ')
INSERT INTO CFIO (TN,FIO) VALUES ('1515 ','ГИЦЕВИЧ ГЕНРИХ БОЛЕСЛАВОВИЧ             ')
INSERT INTO CFIO (TN,FIO) VALUES ('2441 ','ГЛУССКИЙ ЕВГЕНИЙ МИХАЙЛОВИЧ             ')
INSERT INTO CFIO (TN,FIO) VALUES ('1    ','ГОТОВКО РОМУАЛЬД ИОСИФОВИЧ              ')




PUBLIC oform1

oform1=NEWOBJECT("form1")
oform1.Show
RETURN


	**************************************************
*-- Form:         form1 (d:\zar\p_fio_tn.scx)
*-- ParentClass:  form
*-- BaseClass:    form
*-- Time Stamp:   10/04/10 10:40:03 AM
*
DEFINE CLASS form1 AS form


	Height =  260 
	Width =  343 
	Desktop = .T.
	DoCreate = .T.
	AutoCenter = .T.
	BorderStyle =  2 
	Caption = "Поиск работника по первым буквам или таб.№"
	ControlBox = .F.
	FontSize =  10 
	MaxButton = .F.
	MinButton = .F.
	WindowType =  1 
	WindowState =  0 
	sym = ("")
	kodt = ""
	Name = "Form1"
	wsp = .F.
	cfilter = .F.
	cfilterold = .F.


	ADD OBJECT list1 AS listbox WITH ;
		BoundColumn =  1 , ;
		ColumnCount =  2 , ;
		ColumnWidths = "52,256", ;
		RowSourceType =  3 , ;
		RowSource = "SELECT TN,FIO FROM CFIO ORDER BY FIO INTO CURSOR CNAM", ;
		ControlSource = "THISFORM.KODT", ;
		FirstElement =  1 , ;
		Height =  202 , ;
		IncrementalSearch = .F., ;
		Left =  1 , ;
		NumberOfElements =  0 , ;
		TabIndex =  2 , ;
		Top =  0 , ;
		Width =  336 , ;
		Name = "List1"


	ADD OBJECT txtsearch AS textbox WITH ;
		Height =  23 , ;
		Left =  4 , ;
		TabIndex =  1 , ;
		Top =  233 , ;
		Width =  334 , ;
		Name = "txtSearch"


	ADD OBJECT label1 AS label WITH ;
		WordWrap = .F., ;
		Caption = "Вводите таб.№ или 1-ые буквы ФИО:", ;
		Height =  18 , ;
		Left =  8 , ;
		Top =  209 , ;
		Width =  211 , ;
		TabIndex =  3 , ;
		BackColor = RGB( 255 , 255 , 128 ), ;
		Name = "Label1"


	ADD OBJECT text1 AS textbox WITH ;
		Height =  23 , ;
		Left =  46 , ;
		Top =  233 , ;
		Visible = .F., ;
		Width =  290 , ;
		Name = "Text1"


	PROCEDURE Unload
		RETURN THISFORM.KODT
	ENDPROC


	PROCEDURE Load
		PERB=""
	ENDPROC


	PROCEDURE list1.InteractiveChange
		WITH ThisForm.txtSearch
			.Value = RTRIM(CNAM.FIO)
			.SelStart =  1 
			.SelLength = LEN( .Value  )
		*	.SETFOCUS 
		ENDWITH
		*inkey( . 1  )
	ENDPROC


	PROCEDURE list1.Valid
		RELEASE THISFORM
	ENDPROC


	PROCEDURE txtsearch.Valid
		IF LASTKEY()= 13  AND NOT EMPTY(THIS.VALUE)
			SELE CNAM
			GO TOP
			THISFORM.KODT=CNAM.TN
			THISFORM.List1.VALID
		ENDIF
	ENDPROC


	PROCEDURE txtsearch.InteractiveChange
		Local lcSofar, lnSelect, lnSelStart, lnSelLength,PERB,cField
		cField='FIO'
		With This
				IF .SelStart >  0 
		*	IF ( LASTKEY() >  31  AND LASTKEY() <  256  ) OR ( LASTKEY() =  7  )
					*** Get the value typed in so far
					lnSelStart = Iif( Lastkey() #  127 , .SelStart, .SelStart -  1  )

					*** Handle and empty value in the text box
					If lnSelStart =  0 
						.Value = ''
						.SelStart =  0 
						Go Bottom In CFIO
						Skip In CFIO
					Else
						lcSofar =  Left( .Value, lnSelStart )
						.Value = lcSofar

						*** Use seek to find the record if a tag was provided
			*				lnSelect = Select()
							Select CFIO
							GO TOP

							*** And locate the specified record
						IF BETWEEN(LEFT(This.Value, 1 ),"0","9")
							cField='TN'
							IF NOT USED('CTN')
								SELECT * FROM CFIO ORDER BY TN INTO CURSOR CTN
							ENDIF
							SELECT CTN
							This.Width= 44 
							ThisForm.Text1.Visible=.T.
						ELSE
							cField='FIO'
							SELECT CFIO
							This.Width= 334 
							ThisForm.Text1.Visible=.F.
						ENDIF

						Locate For Upper( Alltrim( Eval (cField ) ) ) = Upper( lcSofar )
							If Found()
								.Value = Eval( cField )
								ThisForm.Text1.VALUE=FIO
							Endif
			*				Select ( lnSelect )
							*

					Endif

					*** Highlight the portion of the value after the insertion point
					.SelStart = lnSelStart
					lnSelLength = Len( .Value ) - lnSelStart
					If lnSelLength >  0 
						.SelLength =  lnSelLength
					Endif

					*** If we need to refresh the parent container (usually a form or a page, do it here
		*!*				If .lRefreshParent
		*!*					.RefreshParent()
		*!*				Endif

					*** If we have refreshed the controls in the parent container, there are timing issues to overcome
					*** Even though .SelStart and .SelLength have the correct values at this point, the search box
					*** does not appear highlighted correctly without this delay
		*			=Inkey(. 1 )
		*	ENDIF 
			PERB=IIF(TYPE('lcSofar')='L','',Upper( lcSofar ))
		ELSE
			PERB=UPPER(RTRIM(.VALUE))
		ENDIF
		Endwith
		ThisForm.List1.RowSource='SELECT TN,FIO FROM CFIO WHERE (PERB=="" OR LEFT('+CFIELD+',LEN(PERB))=PERB) AND NOT EMPTY('+CFIELD+') ORDER BY '+CFIELD+' INTO CURSOR CNAM'
		THISFORM.List1.REQUERY


	ENDPROC


	PROCEDURE txtsearch.When
			THIS.SelStart =  0 
			THIS.SelLength = LEN(THIS.Value  )
		*
	ENDPROC


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


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