powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / поиск с конца в начало
12 сообщений из 12, страница 1 из 1
поиск с конца в начало
    #32766290
Фотография help123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Приветствую всех ....

Есть таблица с полями denter(дата ввода), vagon (№ вагона). Нужно создать поиск номеров вагонов по шаблону (Like .......). При этом чтобы поиск осуществлялся с конца таблицы - тоесть с самой позней даты denter и "назад во времени".

Подскажите как это лучше сделать....
Признателен за помощь....
...
Рейтинг: 0 / 0
поиск с конца в начало
    #32766332
Фотография Hel!Riser
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
если есть индекс по полю denter то установи SET ORDER TO MyIndex DESC и исчи как обычна.
...
Рейтинг: 0 / 0
поиск с конца в начало
    #32766381
Фотография help123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если по индексу, то можно использовать только SEEK, но дело в том что он ищет до первой правильной "находки". А как можно сделать чтобы после первой "находки" нажать есчё раз кнопку и чтобы seek искал опять с конца таблицы а дальше в начало....
если можно... то с примером кода.....
...
Рейтинг: 0 / 0
поиск с конца в начало
    #32766449
leaf
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
select min(denter) as denter,vag from table t1 where vag like (something) group by vag into curs qq1

если нужны все поля
select * from t1 where dtos(denter)+str(vag) in (select dtos(denter)+str(vag) from qq1 ) into curs rezultat
...
Рейтинг: 0 / 0
поиск с конца в начало
    #32766485
Фотография help123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
leafselect min(denter) as denter,vag from table t1 where vag like (something) group by vag into curs qq1

если нужны все поля
select * from t1 where dtos(denter)+str(vag) in (select dtos(denter)+str(vag) from qq1 ) into curs rezultat

дело в том что мне селектом не подходит - у меня в форме все контролы связаны с таблицей - нужно только поиск по фактической таблице.....
Я использовал Locate .... continue.... - почти получается - но не то - нужно чтобы с конца в начало..... и Like туда не пристроиш....
...
Рейтинг: 0 / 0
поиск с конца в начало
    #32766517
kdanylo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
help123Если по индексу, то можно использовать только SEEK, но дело в том что он ищет до первой правильной "находки". А как можно сделать чтобы после первой "находки" нажать есчё раз кнопку и чтобы seek искал опять с конца таблицы а дальше в начало....
если можно... то с примером кода.....

1) Seek действительно ищет только с начала таблицы. Но он использует индексы, а при создании индексов можно задавать порядок сортировки по взрастанию или уменьшению (Ascending (default) или Descending). То-есть для того чтобі искать с конца таблицы достаточно создать индекс по нужному полю с опцией Descending.

2) Для поиска всех строк в таблице, которые соответствуют заданному значению, используется конструкция Locate For - CONTINUE

Код: plaintext
1.
2.
3.
4.
5.
Locate for таблица.поле = значение
DO WHILE Found (таблица)
* делаем что надо
CONTINUE
ENDDO


Детали смотрите в документации.
...
Рейтинг: 0 / 0
поиск с конца в начало
    #32766564
Фотография help123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
1) Seek действительно ищет только с начала таблицы. Но он использует индексы, а при создании индексов можно задавать порядок сортировки по взрастанию или уменьшению (Ascending (default) или Descending). То-есть для того чтобі искать с конца таблицы достаточно создать индекс по нужному полю с опцией Descending.

2) Для поиска всех строк в таблице, которые соответствуют заданному значению, используется конструкция Locate For - CONTINUE

Код: plaintext
1.
2.
3.
4.
5.
Locate for таблица.поле = значение
DO WHILE Found (таблица)
* делаем что надо
CONTINUE
ENDDO


Детали смотрите в документации.

Так и делал.... а как в этой конструкции использовать Like для поиска по шаблону ... например ..... '*256'
...
Рейтинг: 0 / 0
поиск с конца в начало
    #32766574
leaf
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
у меня в форме все контролы связаны с таблицей
а ты другую форму сделай и отобрази результа запроса
что вообще-то конкретно делаешь а то не совсем понятно
похоже locate тебе не поможет
...
Рейтинг: 0 / 0
поиск с конца в начало
    #32766590
Фотография Hel!Riser
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
help123Если по индексу, то можно использовать только SEEK, но дело в том что он ищет до первой правильной "находки". А как можно сделать чтобы после первой "находки" нажать есчё раз кнопку и чтобы seek искал опять с конца таблицы а дальше в начало....
если можно... то с примером кода.....
любезный..
SET ORDER TO MyIndex DESC
сортирнет как раз в наоборот очереди и софмем при индексе не обязательно пользовать SEEK обычный LOCATE c условием в $ - и будет щастье
...
Рейтинг: 0 / 0
поиск с конца в начало
    #32766599
Фотография ВладимирМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
1.
2.
3.
4.
select MyTab
SET ORDER TO denter DESC
SCAN NOOPTIMIZE FOR Like("*256*",vagon)
* Делаем что надо
ENDSCAN

Здесь я предполагаю, что есть индекс по полю denter с именем denter
...
Рейтинг: 0 / 0
поиск с конца в начало
    #32767156
Фотография help123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ПИШУ:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
SET EXACT OFF
SELECT mparent
SET ORDER TO denter DESCENDING
DO CASE
	CASE ThisForm.category.Value = '№ вагона' && выбор значения в комбо
		IF vagon !=ALLTRIM(ThisForm.search.Value)THEN
			LOCATE FOR vagon = ALLTRIM (ThisForm.search.Value)
			locator = .T.
		ELSE
			IF locator THEN
				CONTINUE
			ELSE
				LOCATE FOR vagon = ALLTRIM (ThisForm.search.Value)
				locator = .T.
			ENDIF
		ENDIF
ENDCASE
ThisForm.Refresh 

там где
Код: plaintext
SET ORDER TO denter DESCENDING 
пишет Syntax error но только по нажатию кнопки в программе, при отладке пропускает
...
Рейтинг: 0 / 0
поиск с конца в начало
    #32767170
Фотография help123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
кстати после этого пропадает индекс denter в таблице mparent в дизайнере базы данных.........
...
Рейтинг: 0 / 0
12 сообщений из 12, страница 1 из 1
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / поиск с конца в начало
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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