powered by simpleCommunicator - 2.0.56     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Помогите пожалуйста с поиском в форме!
10 сообщений из 10, страница 1 из 1
Помогите пожалуйста с поиском в форме!
    #35951684
Dmytry
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
У меня такая задача(Visual fox Pro 9)..Есть форма.В ней имеется поле Text box1, кнопка поиска(Command button1) и пустая табличка Grid1. В текстовое поле(Text box1) вводится имя(название пк игры).Потом при нажатии кнопки поиска в табличке должно появится єта запись(все данные по именам игр имеються в заранее подготовленной таблице в которую можно добавлять новые записи и удалять старые). Так вот в чем проблема:

вот код программы в кнопке поиска:

pol=thisform.text1.Value
SELECT DISTINCT Table1.number, Table1.name, Table1.gerne,;
Table1.platform, Table1.creator, Table1.publisher;
FROM data1!table1;
WHERE Table1.name=pol;
INTO CURSOR result
&&обирається курсор, в якому зберігаються результати пошуку
SELECT 'result'
&&Результати пошуку відображаються в таблиці "Результати пошуку"
thisform.grid1.RecordSource='result'
&&оновлення таблиці "Результати пошуку"
&&thisform.grid1.Refresh
&&підпис колонок в таблиці відображення результатів пошуку
thisform.grid1.column1.header1.Caption='number'
thisform.grid1.column2.header1.Caption='name'
thisform.grid1.column3.header1.Caption='gerne'
thisform.grid1.column4.header1.Caption='platform'
thisform.grid1.column5.header1.Caption='creator'
thisform.grid1.column6.header1.Caption='publisher'

&&задання ширини колонок в таблиці відображення результатів пошуку
thisform.grid1.column1.Width=40
thisform.grid1.column2.Width=200
thisform.grid1.column3.Width=150
thisform.grid1.column4.Width=150
thisform.grid1.column5.Width=150
thisform.grid1.column6.Width=150

при запуске формы появилась следующая проблема: поиск срабатывает только в том случаи, если запрашиваемое имя(название пк игры) написано полностью и правильно, словом, так как в задано в первоначальной таблице. Как можно сделать так что б пользователь, что вводит имя игры, мог ошибиться(например написать с малой буквы название или ошибиться с буквой) и результат все равно бы отобразился в таблице результатов(Grid1) формы. То есть меня интересует поиск с учетом ошибок, по одной букве начальной ну или по части имени!!!..
Подскажите пожалуйста, очень нужно..заранее огромное спасибо!!!!
Неплохо было бы .если б кто нибудь привел примеры написания такого поиска!
...
Рейтинг: 0 / 0
Помогите пожалуйста с поиском в форме!
    #35951778
GermanGM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
set ansi off
+
pol=alltrim(thisform.text1.Value)
...
...
Рейтинг: 0 / 0
Помогите пожалуйста с поиском в форме!
    #35952795
LUCIAN
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dmytry,
Выход из программы -выбор в combobox
Код: 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.
SELE  0 
CREATE CURSOR SP_PO (KOD_P N( 4 ),NAIM_P C( 40 ))
INSERT INTO SP_PO (KOD_P,NAIM_P) VALUES ( 1 ,'ГОТОВКО РОМУАЛЬД ИОСИФОВИЧ              ')
INSERT INTO SP_PO (KOD_P,NAIM_P) VALUES ( 2 ,'ВЕЛИЧКО ЛЮЦИАН ГРИГОРЬЕВИЧ              ')
INSERT INTO SP_PO (KOD_P,NAIM_P) VALUES ( 3 ,'ЛИСОВСКИЙ СТАНИСЛАВ ИВАНОВИЧ            ')
INSERT INTO SP_PO (KOD_P,NAIM_P) VALUES ( 4 ,'БЫЧЕК ЕВГЕHИЙ HИКОЛАЕВИЧ                ')
INSERT INTO SP_PO (KOD_P,NAIM_P) VALUES ( 6 ,'ПОЗНЯК НИКОЛАЙ ИВАНОВИЧ                 ')
INSERT INTO SP_PO (KOD_P,NAIM_P) VALUES ( 8 ,'АНИСКЕВИЧ ИВАН ИВАНОВИЧ                 ')
INSERT INTO SP_PO (KOD_P,NAIM_P) VALUES ( 9 ,'АРОДЬ ВАЦЛАВ ФРАНЦЕВИЧ                  ')
INSERT INTO SP_PO (KOD_P,NAIM_P) VALUES ( 10 ,'БЕЙ ФРАНЦ БРОНИСЛАВОВИЧ                 ')
INSERT INTO SP_PO (KOD_P,NAIM_P) VALUES ( 13 ,'БУДРА ЧЕСЛАВ АЛЬГЕДРАС                  ')
INSERT INTO SP_PO (KOD_P,NAIM_P) VALUES ( 15 ,'БОГДАН ЗДИСЛАВ ИВАНОВИЧ                 ')
INSERT INTO SP_PO (KOD_P,NAIM_P) VALUES ( 16 ,'БУРАК МАРИЯ МИХАЙЛОВНА                  ')
INSERT INTO SP_PO (KOD_P,NAIM_P) VALUES ( 17 ,'БОЛОНДЗЬ АЛЕКСАНДР АЛЕКСАНДРОВИЧ        ')
INSERT INTO SP_PO (KOD_P,NAIM_P) VALUES ( 18 ,'ВОДЕЙКО СТАНИСЛАВ МИХАЙЛОВИЧ            ')
INSERT INTO SP_PO (KOD_P,NAIM_P) VALUES ( 19 ,'ВОРОНА ВАЦЛАВ ИОСИФОВИЧ                 ')
INSERT INTO SP_PO (KOD_P,NAIM_P) VALUES ( 20 ,'ВАСИЛЕВСКИЙ СТАНИСЛАВ АНТОНОВИЧ         ')
INSERT INTO SP_PO (KOD_P,NAIM_P) VALUES ( 21 ,'ВОЛЫНЕЦ ГЕОРГИЙ АЛЕКСЕЕВИЧ              ')
INSERT INTO SP_PO (KOD_P,NAIM_P) VALUES ( 23 ,'ГЕТКО ФЕЛИКС ВАЦЛАВОВИЧ                 ')
INSERT INTO SP_PO (KOD_P,NAIM_P) VALUES ( 29 ,'ГЕЙШТОВТ БОГДАН ВАЦЛАВОВИЧ              ')
INSERT INTO SP_PO (KOD_P,NAIM_P) VALUES ( 31 ,'ЖУРАВЛЕВ АНАТОЛИЙ АНИСИМОВИЧ            ')
INSERT INTO SP_PO (KOD_P,NAIM_P) VALUES ( 34 ,'КЛЫШЕЙКО ТАДЕУШ КАРЛОВИЧ                ')
INSERT INTO SP_PO (KOD_P,NAIM_P) VALUES ( 35 ,'КАРАБАЧ НИНА ИВАНОВНА                   ')
INSERT INTO SP_PO (KOD_P,NAIM_P) VALUES ( 36 ,'КОДИС ЗОЯ ВИТОЛЬДОВНА                   ')
INSERT INTO SP_PO (KOD_P,NAIM_P) VALUES ( 37 ,'КУРИЛОВИЧ ОЛЕГ ВИКТОРОВИЧ               ')
INSERT INTO SP_PO (KOD_P,NAIM_P) VALUES ( 43 ,'МОРОЗОВ МИХАИЛ ГРИГОРЬЕВИЧ              ')
INSERT INTO SP_PO (KOD_P,NAIM_P) VALUES ( 45 ,'МАКАРЕНКО ВИКТОР ИВАНОВИЧ               ')
INSERT INTO SP_PO (KOD_P,NAIM_P) VALUES ( 47 ,'МОСКОВСКИЙ ИВАН ПЕТРОВИЧ                ')
INSERT INTO SP_PO (KOD_P,NAIM_P) VALUES ( 48 ,'МАНИКАЛО АНАТОЛИЙ ВЛАДИМИРОВИЧ          ')
INSERT INTO SP_PO (KOD_P,NAIM_P) VALUES ( 49 ,'НАЙДЕН ИВАН АНТОНОВИЧ                   ')

PUBLIC oform1

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

DEFINE CLASS form1 AS form


	Height =  240 
	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 =  2 , ;
		ColumnCount =  2 , ;
		ColumnWidths = "256,52", ;
		RowSourceType =  3 , ;
		RowSource = "SELECT NAIM_P,STR(KOD_P,4) FROM SP_PO  WHERE NOT EMPTY(NAIM_P) order by NAIM_P INTO CURSOR CFIO", ;
		ControlSource = "THISFORM.KODT", ;
		FirstElement =  1 , ;
		Height =  202 , ;
		IncrementalSearch = .F., ;
		Left =  0 , ;
		NumberOfElements =  0 , ;
		TabIndex =  2 , ;
		Top =  1 , ;
		Width =  336 , ;
		Name = "List1"


	ADD OBJECT txtsearch AS textbox WITH ;
		Height =  23 , ;
		Left =  222 , ;
		TabIndex =  1 , ;
		Top =  211 , ;
		Width =  100 , ;
		Name = "txtSearch"


	ADD OBJECT label1 AS label WITH ;
		WordWrap = .T., ;
		Caption = "Вводите первые буквы фамилии или фрагмент в форме(*.....):", ;
		Height =  32 , ;
		Left =  8 , ;
		Top =  206 , ;
		Width =  207 , ;
		TabIndex =  3 , ;
		BackColor = RGB( 255 , 255 , 128 ), ;
		Name = "Label1"


	PROCEDURE Unload
		*RETURN INT(VAL(THISFORM.KODT))
		RETURN THISFORM.KODT
	ENDPROC


	PROCEDURE Load
		PERB=""
	ENDPROC


	PROCEDURE list1.Valid
		RELEASE THISFORM
	ENDPROC


	PROCEDURE txtsearch.InteractiveChange
		LOCAL PERB
		PERB=""
		IF LEFT(This.Value, 1 ) = "*"
			ThisForm.List1.RowSource='SELECT NAIM_P,STR(KOD_P,4) FROM SP_PO WHERE PERB=="" OR AT(UPPER(ALLTRIM(PERB)),NAIM_P)>0 ORDER BY NAIM_P INTO CURSOR CFIO'
		   IF LEN(ALLTRIM(This.Value)) >  1 
		   	  PERB=RIGHT(ALLTRIM(This.Value),LEN(ALLTRIM(This.Value))- 1 )
		   ELSE
			  PERB=""
		   ENDIF
		ELSE
			PERB=UPPER(RTRIM(This.Value))
			ThisForm.List1.RowSource="SELECT NAIM_P,STR(KOD_P,4) FROM SP_PO  WHERE NOT EMPTY(NAIM_P) AND LEFT(NAIM_P,LEN(PERB))=PERB ORDER BY NAIM_P INTO CURSOR CFIO"
		ENDIF
		THISFORM.List1.REQUERY
		*!*	ThisForm.LIST1.SetFocus
		*!*	This.SetFocus
	ENDPROC


ENDDEFINE
*
*-- EndDefine: form1
**************************************************
...
Рейтинг: 0 / 0
Помогите пожалуйста с поиском в форме!
    #35953131
Dmytry
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
УРааааа!!!!!... все получилось!!!...Спасибо Вам ОГРОМНОЕ ПРИ ОГРОМНОЕ!!!!)))))
...
Рейтинг: 0 / 0
Помогите пожалуйста с поиском в форме!
    #35954028
Dmytry
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Пожалуйста помогите еще разочек!!!!....Суть задания не изменилась, н отепер ьвместо символиных значений(названий) используются числовые данные!.
Вот код программы:

SET ANSI OFF
pol1=VAL(ALLTRIM(thisform.text1.Value))
pol2=VAL(ALLTRIM(thisform.text2.Value))
pol3=VAL(ALLTRIM(thisform.text3.Value))
pol4=VAL(ALLTRIM(thisform.text4.Value))
SELECT DISTINCT syst.number, syst.name, syst.cpu_hrz,;
syst.ram_mb, syst.video_mb;
FROM glavnaya!syst;
WHERE syst.name=pol1 ;
AND syst.cpu_hrz=pol2 ;
AND syst.ram_mb=pol3 ;
AND syst.video_mb=pol4 ;
INTO CURSOR result
&&обирається курсор, в якому зберігаються результати пошуку
SELECT 'result'
&&Результати пошуку відображаються в таблиці "Результати пошуку"
thisform.grid1.RecordSource='result'
&&оновлення таблиці "Результати пошуку"
&&thisform.grid1.Refresh
&&підпис колонок в таблиці відображення результатів пошуку
thisform.grid1.column1.header1.Caption='номер'
thisform.grid1.column2.header1.Caption='название игры'
thisform.grid1.column3.header1.Caption='Процессор(Гц)'
thisform.grid1.column4.header1.Caption='Память(Мб)'
thisform.grid1.column5.header1.Caption='Видеопамять(Мб)'


&&задання ширини колонок в таблиці відображення результатів пошуку
thisform.grid1.column1.Width=40
thisform.grid1.column2.Width=200
thisform.grid1.column3.Width=150
thisform.grid1.column4.Width=150
thisform.grid1.column5.Width=150

При компиляции пишет "Operator/operant type mismatch".. то есть несоответстве типов но только не могу понять где(((..подскажите очень нужно!
...
Рейтинг: 0 / 0
Помогите пожалуйста с поиском в форме!
    #35954250
AK-Shah
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dmytry,


Как я понял, у тебя есть таблица syst, в которой:

number (числовое) - ID игры
name (СИМВОЛЬНОЕ) - название игры
cpu_hrz (числовое) - частота процессора
ram_mb (числовое) - объем оперативной памяти
video_mb (числовое) - объем видеопамяти

Переменной pol1 ты присваиваешь числовое значение (см. 2 строку кода)
pol1=VAL(ALLTRIM(thisform.text1.Value))

В запросе (в части WHERE):
syst.name=pol1

Однако, name, как мне кажется должно быть символьным полем, ибо это есть название игры
thisform.grid1.column2.header1.Caption='название игры'

P.S. Насколько я понимаю, в запросе не должны присутствовать параметры игры (ID, название и т.д.), ибо IMHO задача как-раз выбрать ВСЕ игры, удовлетворяющие заданным техническим условиям. Впрочем, я могу и ошибаться... :)
...
Рейтинг: 0 / 0
Помогите пожалуйста с поиском в форме!
    #35954617
Dmytry
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Я убрал VAL c pol1=VaL(ALLTRIM(thisform.text1.Value))..но и єто не помогло(((...ошибка все равно та же!...в чем может быть еще причина?
...
Рейтинг: 0 / 0
Помогите пожалуйста с поиском в форме!
    #35954622
alextashk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dmytry,

проверь что возращают
thisform.text1.Value
thisform.text2.Value
thisform.text3.Value
thisform.text4.Value
Например Герцы могут возращатся в числовом типе
...
Рейтинг: 0 / 0
Помогите пожалуйста с поиском в форме!
    #35957011
Dmytry
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Я проверил все "thisform.text.Value"...И вроде уловил одно дело(закономерность)...они все должны быть одного типа!!.По крайней мере когда я из конструкции SELECT в выше упомянутом коде программы убрал строчку pol=alltrim(thisform.text1.Value)..всё заработало!..А вот теперь наплывает другой вопрос..У меня следующий запрос имеет и цифры(дата и еще и количество дисков) и символьные поля...так вот что мне делать разбивать это т запрос на два или как то все можно совместить все в один запрос??..Подскажите пожалуйста неопытному пользователю!!!
...
Рейтинг: 0 / 0
Помогите пожалуйста с поиском в форме!
    #35957447
AK-Shah
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dmytry,

> И вроде уловил одно дело(закономерность)...они все должны быть одного типа!!

Нет, не уловил. Ибо нет закономерностей с "одним типом данных".
В одном запросе легко и непринужденно можно выбирать данные разных типов. Читай Базияна и Клепинина. Читай HELP. Заглядывай в FAQ forum.foxclub.ru
...
Рейтинг: 0 / 0
10 сообщений из 10, страница 1 из 1
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Помогите пожалуйста с поиском в форме!
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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