Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Помогите новичку с combo / 18 сообщений из 18, страница 1 из 1
24.06.2005, 11:00:33
    #33132824
tigramax
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите новичку с combo
Привет! Наформе есть 3 combo. хочется чтобы значение 1 combo ограничивало
список значений 2 combo, а тот в свою очередь ограничивает список значений для 3 combo. Возможно как-то отфильтровать значения в combo?
...
Рейтинг: 0 / 0
24.06.2005, 11:15:25
    #33132865
Андрей К
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите новичку с combo
Это не раз обсуждалось на этом форуме. Используй Поиск по слову combo
...
Рейтинг: 0 / 0
24.06.2005, 12:58:04
    #33133242
Burn
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите новичку с combo
В Valid-е первого комбо переопределяешь источник для второго, в валиде 2-го - для третьнго.
...
Рейтинг: 0 / 0
24.06.2005, 14:12:00
    #33133489
tigramax
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите новичку с combo
Может я туплю, но ничего не получается в combo1.valid вставлен следующий код:
select orgtehnika
set filter to orgtehnika.idparent=thisform.combo1.value
thisform.combo2.rowsource='orgtehnika.name'
thisform.combo2.requery
thisform.combo2.refresh
...
Рейтинг: 0 / 0
24.06.2005, 14:22:29
    #33133526
ВладимирМ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите новичку с combo
Почитай вот эту дискуссию

http://www.sql.ru/forum/actualthread.aspx?tid=194398
...
Рейтинг: 0 / 0
24.06.2005, 16:29:47
    #33133962
Burn
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите новичку с combo
Не нравится мне эта строчка:
set filter to orgtehnika.idparent=thisform.combo1.value

Не стоит для фильтров использовать объекты формы - они видны только внутри формы.
Ты уверен что в момент выдачи SET FILTER у тебя текущий алиас - orgtehnika?
Если RowSource у комбо 6 попробуй такую конструкцию:

SELECT orgtehnika
set filter to orgtehnika.idparent=<источник комбо 1>.<поле>
thisform.combo2.rowsource='orgtehnika.name'
thisform.combo2.requery
...
Рейтинг: 0 / 0
30.06.2005, 10:08:58
    #33141923
nfp
nfp
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите новичку с combo
Извините, похожая проблема но указанными средствами не решается.
На форме два TEXTBOXа b combo .
на основании данных введенных в TEXTBOXы
В valide 1-го TEXTBOX следующий код
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
SELECT OPLATAspr_doc
x1= PADL(ALLTRIM(ThisForm.Text1.Value), 3 ,' ')
x2= PADL(ALLTRIM(ThisForm.Text2.Value), 2 ,' ')
SET FILTER TO OPLATAspr_doc.N_KSSCH = x2;
				AND OPLATAspr_doc.N_KSCH = x1;
				AND OPLATAspr_doc.DK = '?'
GO TOP
ThisForm.Combo1.RowSource = 'OPLATAspr_doc.NAIM_DOC'
thisform.combo1.requery
ThisForm.Combo1.Refresh
Во втором
Код: plaintext
1.
ThisForm.Text1.Valid
Вводятся данны устанавливается фильтр, а когда фокус получает комво
выдается сообщение "переменная Х1 не найдена "
Если объявить переменные X1 и Х2 PUBLIC, то все нормально.
Не понятно: зачем комбо потребовались эти переменные.Ему указали откуда брать данные и пусть оттуда берет и какая ему разница отфильтрованы данные или нет и какие переменные участвовали в фильтре?
Может кто объяснит?
...
Рейтинг: 0 / 0
30.06.2005, 10:25:48
    #33141961
Urri
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите новичку с combo
BurnНе нравится мне эта строчка:
set filter to orgtehnika.idparent=thisform.combo1.value

Не стоит для фильтров использовать объекты формы - они видны только внутри формы.
Простое, красивое и эффективное решение:
Код: plaintext
1.
x = 'set filter to orgtehnika.idparent='+thisform.combo1.value
&x
;-)))
...
Рейтинг: 0 / 0
30.06.2005, 10:35:10
    #33141989
ВладимирМ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите новичку с combo
Если область видимости переменной не указана явно (LOCAL, PRIVATE, PUBLIC), то, по умолчанию, она получает область видимости PRIVATE. Как следствие, автоматически удаляется по завершению процедуры в которой была создана.

При формировании условия фильтра лучше использовать макроподстановки, чтобы вместо значения переменной была установлена константа:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
SELECT OPLATAspr_doc
x1= "["+PADL(ALLTRIM(ThisForm.Text1.Value), 3 ,' ')+"]"
x2= "["+PADL(ALLTRIM(ThisForm.Text2.Value), 2 ,' ')+"]"
SET FILTER TO OPLATAspr_doc.N_KSSCH = &x2 ;
		AND OPLATAspr_doc.N_KSCH = &x1 ;
		AND OPLATAspr_doc.DK = '?'
GO TOP
ThisForm.Combo1.RowSource = 'OPLATAspr_doc.NAIM_DOC'
thisform.combo1.requery()
ThisForm.Combo1.Refresh()

Здесь я предполагаю, что значения ThisForm.Text1.Value и ThisForm.Text2.Value не могут содержать в себе символов квадратных скобок. Если это не так, то надо использовать либо символы одинарных кавычек, либо символы двойных кавычек как дополнительные символы, ограничивающите строку после макроподстановки.

К сведению:

Если в функции PADL() третий параметр не указан, то строка будет дополняться слева символами пробела. Т.е. в данном случае можно ограничиться записью вида

PADL(ALLTRIM(ThisForm.Text1.Value),3)
...
Рейтинг: 0 / 0
30.06.2005, 11:59:58
    #33142234
nfp
nfp
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите новичку с combo
Спасибо! Заработало !!!
Но всеже непонятно такое поведение combo и фильтра.
1 Допустим я ввел в сооветствующие текстовые поля символьные значения
91 и 2
после выполнения команд

x1= "["+PADL(ALLTRIM(ThisForm.Text1.Value),3,' ')+"]"
x2= "["+PADL(ALLTRIM(ThisForm.Text2.Value),2,' ')+"]"

получим значения
х1="[ 91]" а х2= "[ 2]" а в таблице соответствующие значения " 91" и " 2"
и как они будут равными?
2 ВладимирМ
Если область видимости переменной не указана явно (LOCAL, PRIVATE, PUBLIC), то, по умолчанию, она получает область видимости PRIVATE. Как следствие, автоматически удаляется по завершению процедуры в которой была создана.

Это ежу понятно . И я бы не возражал еслибы вижел ругался в случае когда переменные объявлены в textbox а используются в combo
Но у меня в combo x1 ни кде не упоминается

nfp
Не понятно: [зачем комбо потребовались эти переменные.Ему указали откуда брать данные и пусть оттуда берет и какая ему разница отфильтрованы данные или нет и какие переменные участвовали в фильтре?
...
Рейтинг: 0 / 0
30.06.2005, 12:06:34
    #33142253
Sergey Sizov.
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите новичку с combo
Условие в Set filter проверяется при каждом перемещении по записям. Для отображения нужных тебе записей нужно пройтись по ним? А при Requery() или Refresh() нужно пройтись? А где это происходит? А где определены переменные?
...
Рейтинг: 0 / 0
30.06.2005, 13:50:11
    #33142664
nfp
nfp
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите новичку с combo
Блин ! Точно! Чтото мы забыли что условие фильтра проверяется каждый раз.
Все правильно.
Но тогд аеще вопрос по этой -же программе.

Первоначально мы в фильтре вместо переменых х1 и х2 писали
PADL(ALLTRIM(ThisForm.Text1.Value),3,' ') и PADL(ALLTRIM(ThisForm.Text2.Value),2,' ')
на сомво выдавалась ошибка

THISFORM can only be used within a method

А тут почему я не прав ? Ведь значение объекта известно в пределах всей формы, а я из нее не вышел и перед фильтром указана область в которой накладывать фильтр .
...
Рейтинг: 0 / 0
30.06.2005, 14:06:58
    #33142734
ВладимирМ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите новичку с combo
Где именно происходит процесс вычисления условия фильтра? Т.е. вот указатель переходит на новую запись, тут происходит вычисление выражения фильтра для этой записи, но где именно это происходит? В методе формы?
...
Рейтинг: 0 / 0
30.06.2005, 14:40:02
    #33142863
nfp
nfp
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите новичку с combo
ВладимирМ
Где именно происходит процесс вычисления условия фильтра? Т.е. вот указатель переходит на новую запись, тут происходит вычисление выражения фильтра для этой записи, но где именно это происходит? В методе формы?

Все там же- в Valid для Textbox1. Это тот же пример
...
Рейтинг: 0 / 0
30.06.2005, 14:47:58
    #33142894
ВладимирМ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите новичку с combo
nfp ВладимирМ
Где именно происходит процесс вычисления условия фильтра? Т.е. вот указатель переходит на новую запись, тут происходит вычисление выражения фильтра для этой записи, но где именно это происходит? В методе формы?

Все там же- в Valid для Textbox1. Это тот же пример
С какой стати? То, что переменные проверяются ВНЕ этого события тебя ведь не удивляет. Разве ты перемещаешся по записям таблицы внутри события Valid?

Выражение фильтра вычисляется какждый раз при перемещении по записям таблицы. Это происходит ВНЕ твоего события VALID. Но почему ты решил, что это происходит в каком-либо методе формы?
...
Рейтинг: 0 / 0
01.07.2005, 08:28:39
    #33144145
nfp
nfp
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите новичку с combo
To ВладимирМ
Т.е в Valid TEXTBOXа я только задаю условия для фильтра. Когда фокус получает combo идет "запрос" на фильтрацию а сама фильтрация происходит
вообще вне формы где неизвестны значения объектов формы ?
Так?
...
Рейтинг: 0 / 0
01.07.2005, 09:38:16
    #33144235
Sergey Sizov.
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите новичку с combo
2 nfp:

ДА! Ты можешь выйти из формы и уничтожить ее, а set filter будет действовать. Он как бы привязан к таблице, на которую он наложен. И еще раз напоминаю, что условие проверяется при КАЖДОМ перемещении по таблице, даже неявном, как, например, при отрисовке содержимого комбо или листбокса.
...
Рейтинг: 0 / 0
01.07.2005, 10:44:35
    #33144414
nfp
nfp
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите новичку с combo
Спасибо!
В принципе это все должно быть понятно и раньше. Но теперь должно запомниться надолго (лучше на всегда) . Вообше с фильтрами стараюсь не работать.
...
Рейтинг: 0 / 0
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Помогите новичку с combo / 18 сообщений из 18, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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