Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / поиск с конца в начало / 12 сообщений из 12, страница 1 из 1
03.11.2004, 11:37
    #32766290
help123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
поиск с конца в начало
Приветствую всех ....

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

Подскажите как это лучше сделать....
Признателен за помощь....
...
Рейтинг: 0 / 0
03.11.2004, 11:51
    #32766332
Hel!Riser
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
поиск с конца в начало
если есть индекс по полю denter то установи SET ORDER TO MyIndex DESC и исчи как обычна.
...
Рейтинг: 0 / 0
03.11.2004, 12:10
    #32766381
help123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
поиск с конца в начало
Если по индексу, то можно использовать только SEEK, но дело в том что он ищет до первой правильной "находки". А как можно сделать чтобы после первой "находки" нажать есчё раз кнопку и чтобы seek искал опять с конца таблицы а дальше в начало....
если можно... то с примером кода.....
...
Рейтинг: 0 / 0
03.11.2004, 12:31
    #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
03.11.2004, 12:48
    #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
03.11.2004, 12:57
    #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
03.11.2004, 13:09
    #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
03.11.2004, 13:13
    #32766574
leaf
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
поиск с конца в начало
у меня в форме все контролы связаны с таблицей
а ты другую форму сделай и отобрази результа запроса
что вообще-то конкретно делаешь а то не совсем понятно
похоже locate тебе не поможет
...
Рейтинг: 0 / 0
03.11.2004, 13:18
    #32766590
Hel!Riser
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
поиск с конца в начало
help123Если по индексу, то можно использовать только SEEK, но дело в том что он ищет до первой правильной "находки". А как можно сделать чтобы после первой "находки" нажать есчё раз кнопку и чтобы seek искал опять с конца таблицы а дальше в начало....
если можно... то с примером кода.....
любезный..
SET ORDER TO MyIndex DESC
сортирнет как раз в наоборот очереди и софмем при индексе не обязательно пользовать SEEK обычный LOCATE c условием в $ - и будет щастье
...
Рейтинг: 0 / 0
03.11.2004, 13:21
    #32766599
ВладимирМ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
поиск с конца в начало
Код: plaintext
1.
2.
3.
4.
select MyTab
SET ORDER TO denter DESC
SCAN NOOPTIMIZE FOR Like("*256*",vagon)
* Делаем что надо
ENDSCAN

Здесь я предполагаю, что есть индекс по полю denter с именем denter
...
Рейтинг: 0 / 0
03.11.2004, 16:43
    #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
03.11.2004, 16:49
    #32767170
help123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
поиск с конца в начало
кстати после этого пропадает индекс denter в таблице mparent в дизайнере базы данных.........
...
Рейтинг: 0 / 0
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / поиск с конца в начало / 12 сообщений из 12, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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