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

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

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

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

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

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

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

Приведи больше кода, вместе с этими несчастными переменными, и тебе
обязательно помогут.
...
Рейтинг: 0 / 0
Sort to при фильтрации
    #34474425
Gena87
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ладно описываю все подробно)
Короче есть форма которая открывается с открытием базы и отображает там данные, на форме есть 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
Sort to при фильтрации
    #34474729
Cyv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Попробуй вот это

Код: 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
Sort to при фильтрации
    #34474736
Cyv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
сорри, не проснулся ещё - поправка
Код: 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
Sort to при фильтрации
    #34474767
ValeryY
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Общая идея состоит в том, что нужно образовать текстовую переменную, в которую записать условие фильтра. Например так:

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
Sort to при фильтрации
    #34475877
Gena87
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Спасибо буду пробовать
Наверно все таки сделаю глобальными переменные
Всем спасибо
...
Рейтинг: 0 / 0
Sort to при фильтрации
    #34477158
Cyv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Когда ты сформируешь строку, взяв значения переменных и подставишь
эту строку куда показали, тебе эти переменные нафиг будут не нужны,
ни глобальные, ни локальные.
Ты главное идею просекИ. Это штатный подход. Так или похоже делают все.
Удачи.
...
Рейтинг: 0 / 0
Sort to при фильтрации
    #34477176
Gena87
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Все догнал Спасибо!) но тут проблема похлеще назревает) надо сделать сеть а проект почти написан уже, а до сдачи диплома 21 день...
...
Рейтинг: 0 / 0
Sort to при фильтрации
    #34478641
Gena87
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Спасибо все работает) только с маленькой поправкой в строке с названием:
Код: 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
20 сообщений из 20, страница 1 из 1
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Sort to при фильтрации
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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