powered by simpleCommunicator - 2.0.55     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / филтрация по 2-м комбобоксу
18 сообщений из 18, страница 1 из 1
филтрация по 2-м комбобоксу
    #36232134
asd456
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Есть 2 комбобокса. Надо делать фильтрация по значением по этим 2-м комбобокса. Если выбрать какой-то значение на 1-м комбобокса, надо делать фильтрация по этому комбобоксу. Потом если выбрать какой-то значение и на 2-м комбобокса, надо делать фильтрация по этим 2-м комбобоксу. Или наоборот, если выбрат сначала на 2-м комбобоксе делать фильтрацию сначало по этому комбобоксу.
Как можно делать такое?
...
Рейтинг: 0 / 0
филтрация по 2-м комбобоксу
    #36232871
asd456
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Помогите пожалуйста!
...
Рейтинг: 0 / 0
филтрация по 2-м комбобоксу
    #36232927
Ffffffffff
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Поищите по форуму.
Было много похожих тем.
...
Рейтинг: 0 / 0
филтрация по 2-м комбобоксу
    #36233295
LUCIAN
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
asd456,
Если фильтрацию надо сделать для таблицы Tab1 по полям Pol1 и Pol2 и эта таблица в форме отображается с помощью Grid, то в Refresh этого Grid поместить код:
Код: plaintext
1.
2.
3.
4.
5.
local fp1,fp2
fp1=thisform.combo1.value
fp2=thisform.combo2.value
sele Tab1
set filter to pol1=fp1 and pol2=fp2

В Valid combo1 и combo2 должен стоять код:Thisform.refresh
...
Рейтинг: 0 / 0
филтрация по 2-м комбобоксу
    #36233308
Фотография ВладимирМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
LUCIAN

Ваш код работать не будет. Будет сообщение об ошибке об отсутствии переменных памяти. Для такого способа фильтрации необходима макроподстановка значения фильтра.
...
Рейтинг: 0 / 0
филтрация по 2-м комбобоксу
    #36233410
LUCIAN
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ВладимирМ LUCIAN

Ваш код работать не будет. Будет сообщение об ошибке об отсутствии переменных памяти. Для такого способа фильтрации необходима макроподстановка значения фильтра.
Тогда такой код:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
local fp1,fp2
fp1=thisform.combo1.value
fp2=thisform.combo2.value
*пусть поля Pol1 и Pol2 типа С,тогда
filter="pol1="+fp1+" and  pol2="+fp2
sele Tab1
set filter to &filter
...
Рейтинг: 0 / 0
филтрация по 2-м комбобоксу
    #36233425
LUCIAN
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
LUCIAN,
Надо так
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
[src]local fp1,fp2
fp1=thisform.combo1.value
fp2=thisform.combo2.value
*пусть поля Pol1 и Pol2 типа С,тогда
filter="pol1='"+fp1+"' and  pol2="'+fp2+"'"
sele Tab1
set filter to &filter
[/SRC]
...
Рейтинг: 0 / 0
филтрация по 2-м комбобоксу
    #36234167
asd456
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Получается "Syntax error" в строке filter="pol1='"+fp1+"' and pol2="'+fp2+"'"
...
Рейтинг: 0 / 0
филтрация по 2-м комбобоксу
    #36234209
reware
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
asd456Получается "Syntax error" в строке filter="pol1='"+fp1+"' and pol2="'+fp2+"'"
Господи, запутали человека совсем.
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
fp1=thisform.combo1.value
fp2=thisform.combo2.value
*пусть поля Pol1 и Pol2 типа С,тогда
filter1="pol1=fp1"
filter2="pol2=fp2"
sele Tab1
set filter to &filter1 .AND. &filter2
GO TOP
...
Рейтинг: 0 / 0
филтрация по 2-м комбобоксу
    #36234222
asd456
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Всеравно ошибка получается.
Я сделал так:
Код: plaintext
1.
set filter to &filter1 '+.AND.+' &filter2
 
Но, в этом случае почему то фильтр работает только по 1-му комбобоксу.
...
Рейтинг: 0 / 0
филтрация по 2-м комбобоксу
    #36234350
LUCIAN
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
asd456Получается "Syntax error" в строке filter="pol1='"+fp1+"' and pol2="'+fp2+"'"
Надо так,только уберите пробелы между ',"
Код: plaintext
filter="pol1=' "+fp1+" ' and  pol2=' "+fp2+" ' "  
...
Рейтинг: 0 / 0
филтрация по 2-м комбобоксу
    #36234428
reware
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
asd456Всеравно ошибка получается.
Не знаю, что вы там делаете. Вот элементарный пример :
Код: plaintext
1.
2.
3.
4.
5.
USE dogovor && в таблице символьные поля ndog и name
z1='1'
z2='1111'
f1="ndog=z1"
f2="name=z2"
SET FILTER TO &f1 .and. &f2
...
Рейтинг: 0 / 0
филтрация по 2-м комбобоксу
    #36234455
asd456
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
LUCIAN, спасибо, получился.
...
Рейтинг: 0 / 0
филтрация по 2-м комбобоксу
    #36254954
asd456
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
LUCIAN
Надо так,только уберите пробелы между ',"
Код: plaintext
filter="pol1=' "+fp1+" ' and  pol2=' "+fp2+" ' "  


Нет, что-то опять не правильно работает. Правильно работает только тогда когда на обе комбобоксе выбрано значение.
Надо делать фильтрацию по значению и по 1-му комбобоксу (какой выбран), и по значению по 2-м комбобоксу (если выбран обе комбобокс).
Помогите пожалуйста, как можно это делать?
...
Рейтинг: 0 / 0
филтрация по 2-м комбобоксу
    #36276241
asd456
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Я этот вопрос постарался решить в таком виде (потому что не мог использувать показанными здесь кодами), т.е., хотел все варианты отдельно писать. Но, всеравно не мог подобрать все варианты, напирмер, если выбран какой-то комбобокс, но другой не выбран, в этом случае фильтр не работает.

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
publ fp1, fp2, a1, a2
t1=thisform.text5.value
t2=thisform.text6.value
IF MK= 1 
    fp1=ALLTRIM(thisform.text1.value)
    fp2=alltrim(thisform.text2.value)

   IF a1<> 0  AND a2<> 0 
	filter="TTOD(qebul_ed)>=t1 and TTOD(qebul_ed)<=t2 and dx=dx1 and  mushteri_a=fp1 and kuryer_adc=fp2"
   ENDIF
	
   IF a1<> 0  AND a2= 0 
	filter="TTOD(qebul_ed)>=t1 and TTOD(qebul_ed)<=t2 and dx=dx1 and mushteri_a=fp1"
   ENDIF

    IF a2<> 0  AND a1= 0 
	filter="TTOD(qebul_ed)>=t1 and TTOD(qebul_ed)<=t2 and dx=dx1 and    kuryer_adc=fp2" 
    ENDIF
	sele baza
set filt to ?filter
	GO TOP
ENDIF
...
Рейтинг: 0 / 0
филтрация по 2-м комбобоксу
    #36277325
asd456
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Eсли выбран какой-то комбобокс, но другой не выбран, в этом случае фильтр не работает.
Помогите пожалуйста.
...
Рейтинг: 0 / 0
филтрация по 2-м комбобоксу
    #36278098
LUCIAN
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
asd456Eсли выбран какой-то комбобокс, но другой не выбран, в этом случае фильтр не работает.
Помогите пожалуйста.
SET FILTER TO я не использую,следующий код я выдрал и переделал под фильтрацию,для того чтобы
он заработал необходимо чтобы предшествовала команда PUBLIC FRAG1,FRAG2 например в Load формы

Код: 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.
	PROCEDURE combo1.Init
		THIS.VALUE=PADR("  ВСЕ", 50 )
		THIS.RowSourceType= 3 
		THIS.RowSource='SELECT DIST PADR("  ВСЕ",LEN(POLUC))  FROM DOKP UNION SELECT DIST POLUC FROM DOKP ORDER BY 1 INTO CURSOR  CPOL'
	ENDPROC


	PROCEDURE combo2.Init
		THIS.VALUE=PADR("  ВСЕ", 50 )
		THIS.RowSourceType= 3 
		THIS.RowSource='SELECT DIST PADR("  ВСЕ",LEN(OTPR))  FROM DOKP UNION SELECT DIST OTPR FROM DOKP ORDER BY 1 INTO CURSOR  COTP'
	ENDPROC

	PROCEDURE combo1.Valid
		frag1=THIS.VALUE
		This.Parent.REFRESH
	ENDPROC

	PROCEDURE combo2.Valid
		frag2=THIS.VALUE
		This.Parent.REFRESH
	ENDPROC


	PROCEDURE grddokp.Refresh
	SELECT DOKP
	SET FILTER TO (FRAG1=PADR("  ВСЕ", 50 ) OR POLUC=FRAG1 ) AND (FRAG2=PADR("  ВСЕ", 50 ) OR OTPR=FRAG2 )
...
Рейтинг: 0 / 0
филтрация по 2-м комбобоксу
    #36278108
LUCIAN
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
LUCIAN,

вдогонку В LOAD формы код
Код: plaintext
1.
2.
3.
PUBLIC FRAG1,FRAG2
FRAG1=PADR("  ВСЕ", 50 )
FRAG2=PADR("  ВСЕ", 50 )
...
Рейтинг: 0 / 0
18 сообщений из 18, страница 1 из 1
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / филтрация по 2-м комбобоксу
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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