Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Sort to при фильтрации / 20 сообщений из 20, страница 1 из 1
18.04.2007, 20:05
    #34471066
Gena87
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Sort to при фильтрации
Проблема вот в чем:
Команда sort to .... выдает ошибку когда используется фильтрация в таблице которой сортируем
Т.е.

в программе идет
select vZip
Set filter ....
...
..
select vZip
sort to ...
и тут вылазит ошибка(
как можно исправить или заменить?
...
Рейтинг: 0 / 0
18.04.2007, 21:27
    #34471191
Cyv
Cyv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Sort to при фильтрации
Заменить всю эту кучу устаревших команд на Select-SQL.
Там тебе и фильтрация, и сортировка и много чего ещё.

Почитай чего-нибудь бумажного или электронного.
Воспользуйся Поиском на этом сайте.
...
Рейтинг: 0 / 0
18.04.2007, 22:39
    #34471256
Gena87
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Sort to при фильтрации
Точно) это же можно создать представление и с ним работать а потом закрыть просто и все) а я дурак временные файлы создавал) спасибо!)
...
Рейтинг: 0 / 0
19.04.2007, 16:52
    #34473558
Gena87
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Sort to при фильтрации
Только вот команда select игнорирует команду set filter(
...
Рейтинг: 0 / 0
19.04.2007, 17:39
    #34473761
Cyv
Cyv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Sort to при фильтрации
приведи код пожалуйста
...
Рейтинг: 0 / 0
19.04.2007, 17:55
    #34473827
Gena87
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Sort to при фильтрации
раньше у меня было так

SELECT vZip
SORT TO Temp.dbf ON cTip, cNazvanie ASCENDING

а про select-sql в книжке написано что set filter игнарирует
...
Рейтинг: 0 / 0
19.04.2007, 17:59
    #34473842
Gena87
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Sort to при фильтрации
вот так игнорирует:
SELECT ALL * ;
FROM vZip ;
ORDER BY cTip, cNazvanie ;
INTO DBF Temp.dbf ;
NOCONSOLE
...
Рейтинг: 0 / 0
19.04.2007, 18:08
    #34473872
ValeryL
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Sort to при фильтрации
Добавить
WHERE Условие фильтрацци
...
Рейтинг: 0 / 0
19.04.2007, 18:18
    #34473911
Gena87
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Sort to при фильтрации
ValeryLДобавить
WHERE Условие фильтрацци
так не получиться потому что условие фильтра задается совсем в другом месте а команда
evaluate() написано может выдавать неверные результат, да и при создании фильтра используются локальные переменные(
...
Рейтинг: 0 / 0
19.04.2007, 18:36
    #34473965
Sergey Sizov.
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Sort to при фильтрации
при создании фильтра используются локальные переменные

А вот это вот очень опрометчивое решение, так как Set Filter - настройка глобальная и может сработать в любое время, в том числе во время выхода из области видимости той самой локальной переменной, которая используется в выражении фильтра.
...
Рейтинг: 0 / 0
19.04.2007, 18:51
    #34474010
Gena87
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Sort to при фильтрации
Sergey Sizov. при создании фильтра используются локальные переменные

А вот это вот очень опрометчивое решение, так как Set Filter - настройка глобальная и может сработать в любое время, в том числе во время выхода из области видимости той самой локальной переменной, которая используется в выражении фильтра.
понял это только что)смжу и исправляю но в where всеравно условие фильтрации включить нельзя так evaluate нельзя использовать(
...
Рейтинг: 0 / 0
19.04.2007, 22:02
    #34474316
Cyv
Cyv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Sort to при фильтрации
авторсмжу и исправляю но в where всеравно условие фильтрации включить нельзя
Хочешь открою маленькую тайну - большинство здесь присутствущих
включает разные условия фильтрации в where но несколько раз на дню.

Приведи больше кода, вместе с этими несчастными переменными, и тебе
обязательно помогут.
...
Рейтинг: 0 / 0
19.04.2007, 23:24
    #34474425
Gena87
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Sort to при фильтрации
Ладно описываю все подробно)
Короче есть форма которая открывается с открытием базы и отображает там данные, на форме есть pageframe, на каждой странице page есть таблица которая отображает данные, а также на каждой странице есть возможность сделать фильтр, потом нажимаетсыя кнопка создания отчета и появляется еще одна форма в которой выбирается тип отчета и создаются отчеты.
и вот ри создании отчетов у меня идет не такая сортировка как в таблице и приходиться делать курсор с нужной сортировкой.
и вот код который в кнопке создания фильтра на главной форме
Код: plaintext
1.
2.
3.
SET FILTER TO LOWER(ALLTRIM(vZip.cNazvanie))=LOWER(ALLTRIM(thisform.pageframe1.page2.pageframe1.page2.txtNazv.Text)) ;
					&lcLog1 vZip.nCena &lcUslCena VAL(thisform.pageframe1.page2.pageframe1.page2.txtCena.Text) ;
					&lcLog2 vZip.nSklad &lcUslKol VAL(thisform.pageframe1.page2.pageframe1.page2.txtKol.Text)
&lcLog1- логическая операция
&lcUslCena-"сравнительная" операция (=,<,>,<>...)
правда переменные я тут не использую т.к. с локальными оно не работает а глобальных надо очень много создавать так как на на главной формеотображаются 5 таблиц.
фильтр делается в зависимости от того какое условие выбрано, макроподстановка это и есть знаки равно,>,<>,<>,AND,OR и т.д.
а вот при создании отчета я делаю вот так
SELECT ALL * ;
FROM vZip ;
ORDER BY cTip, cNazvanie ;
INTO CURSOR Temp READWRITE
отчет создается процедурами кототые в отдельной *.prg файле
вот такая вот проблема
если кто то поможет в данной проблеме будет здорово потому что это мой диплом дждо сдачи которого осталась неделя, а еще документация не готова...
Заранее всем спасибо)
...
Рейтинг: 0 / 0
20.04.2007, 08:25
    #34474729
Cyv
Cyv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Sort to при фильтрации
Попробуй вот это

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
WITH thisform.pageframe1.page2.pageframe1.page2
	LOCAL lcWhere
	lcWhere = "LOWER(ALLTRIM(vZip.cNazvanie))=LOWER(ALLTRIM(" + .txtNazv.Text + ")) " +;
					lcLog1 + " " + LTRIM(STR(vZip.nCena)) + lcUslCena + .txtCena.Text + " " +;
					lcLog2 + " " + LTRIM(STR(vZip.nSklad)) + lcUslKol + .txtKol.Text
ENDWITH

SELECT ALL * ;
FROM vZip ;
WHERE &lcWhere ;
ORDER BY cTip, cNazvanie ;
INTO CURSOR Temp READWRITE 
...
Рейтинг: 0 / 0
20.04.2007, 08:31
    #34474736
Cyv
Cyv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Sort to при фильтрации
сорри, не проснулся ещё - поправка
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
WITH thisform.pageframe1.page2.pageframe1.page2
	LOCAL lcWhere
	lcWhere = "LOWER(ALLTRIM(vZip.cNazvanie))=LOWER(ALLTRIM(" + .txtNazv.Text + ")) " +;
					lcLog1 + " vZip.nCena " + lcUslCena + .txtCena.Text + " " +;
					lcLog2 + " vZip.nSklad " + lcUslKol + .txtKol.Text
ENDWITH

SELECT ALL * ;
FROM vZip ;
WHERE &lcWhere ;
ORDER BY cTip, cNazvanie ;
INTO CURSOR Temp READWRITE 
...
Рейтинг: 0 / 0
20.04.2007, 08:49
    #34474767
ValeryY
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Sort to при фильтрации
Общая идея состоит в том, что нужно образовать текстовую переменную, в которую записать условие фильтра. Например так:

Local lcWhereExp
lcWhereExp = 'LOWER(ALLTRIM(vZip.cNazvanie))=' +;
'LOWER(ALLTRIM(thisform.pageframe1.page2.pageframe1.page2.txtNazv.Text))' + ;
'&lcLog1 vZip.nCena &lcUslCena VAL(thisform.pageframe1.page2.pageframe1.page2.txtCena.Text)' + ;
'&lcLog2 vZip.nSklad &lcUslKol VAL(thisform.pageframe1.page2.pageframe1.page2.txtKol.Text)'

После этого записать SELECT
SELECT ALL * ;
FROM vZip ;
ORDER BY cTip, cNazvanie ;
INTO CURSOR Temp READWRITE;
WHERE EVALUATE(lcWhereExp)

Кстати откуда взялось мнение, что EVALUATE может давать неверные результаты. Ну не нравится EVALUATE, используйте макро: WHERE &lcWhereExp

Конечно, в выражении не должно быть локальных переменных lcLog1, lcLog2 и т.д. Один из вариантов.
Создайте переменные формы cLog1, cLog2 и т.д.
В программе используйте параметр - ссылку на объект Form:
*PROCEDURE PrintReport
LPARAMETRS loForm,
а в lcWhereExp вместо ThisForm - loForm, loForm.cLog1 и т.д.

Вызов из формы: DO PrintReport WITH ThisForm
...
Рейтинг: 0 / 0
20.04.2007, 13:27
    #34475877
Gena87
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Sort to при фильтрации
Спасибо буду пробовать
Наверно все таки сделаю глобальными переменные
Всем спасибо
...
Рейтинг: 0 / 0
20.04.2007, 17:56
    #34477158
Cyv
Cyv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Sort to при фильтрации
Когда ты сформируешь строку, взяв значения переменных и подставишь
эту строку куда показали, тебе эти переменные нафиг будут не нужны,
ни глобальные, ни локальные.
Ты главное идею просекИ. Это штатный подход. Так или похоже делают все.
Удачи.
...
Рейтинг: 0 / 0
20.04.2007, 18:00
    #34477176
Gena87
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Sort to при фильтрации
Все догнал Спасибо!) но тут проблема похлеще назревает) надо сделать сеть а проект почти написан уже, а до сдачи диплома 21 день...
...
Рейтинг: 0 / 0
22.04.2007, 15:20
    #34478641
Gena87
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Sort to при фильтрации
Спасибо все работает) только с маленькой поправкой в строке с названием:
Код: plaintext
1.
2.
3.
4.
5.
WITH thisform.pageframe1.page2.pageframe1.page2
		gcWhereZip="LOWER(ALLTRIM(vZip.cNazvanie))='" + LOWER(ALLTRIM(.txtNazv.Text))+ "' " +;
					lcLog1 + " vZip.nCena " + lcUslCena + .txtCena.Text + " " +;
					lcLog2 + " vZip.nSklad " + lcUslKol + .txtKol.Text
	ENDWITH
Спасибо за помощь!
...
Рейтинг: 0 / 0
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Sort to при фильтрации / 20 сообщений из 20, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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