powered by simpleCommunicator - 2.0.56     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Поиск данных
23 сообщений из 23, страница 1 из 1
Поиск данных
    #35585881
Здравствуйте. подскажите, пожалуйста, как правильно осуществить поиск данных в dbf. Есть поле фамилия и нужно по первым нескольким символам найти человека, база большая и atc слишком долго ищет. Заранее, спасибо.
...
Рейтинг: 0 / 0
Поиск данных
    #35585888
vkluch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Atc - вообще ничего не ищеть. Видимо речь о Locate.
Самое быстрое SEEK при наличии INDEX
...
Рейтинг: 0 / 0
Поиск данных
    #35585897
Нет. Использован seek, но он не находит. Например: фамилия Иванов, ввели Ива. Seek не ищет. Может не сделаны какие-то set..?
...
Рейтинг: 0 / 0
Поиск данных
    #35585910
Гость_анонимНет. Использован seek, но он не находит. Например: фамилия Иванов, ввели Ива. Seek не ищет. Может не сделаны какие-то set..?
Код: plaintext
set near on
...
Рейтинг: 0 / 0
Поиск данных
    #35585912
vkluch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Привидите выражение индекса
...
Рейтинг: 0 / 0
Поиск данных
    #35585923
select 0
use 'kart.dbf' in 0 alias kart
if !file('kart.idx')
index on fam to &kart.idx
endif
set index to &kart.idx
...
Рейтинг: 0 / 0
Поиск данных
    #35585933
Боже мой, где так учать писать? На кой ляд столько макроподстановок?
Код: plaintext
1.
2.
3.
4.
5.
select  0 
use kart in  0 
if !file('kart.idx')
  index on fam to kart
endif 
set index to kart
...
Рейтинг: 0 / 0
Поиск данных
    #35585939
stoopper
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Гость_Аноним
set index to &kart.idx

А почему со знаком макроподстановки? Просто - kart.idx. Тем более странно, что не возникает ошибки программы при выполнении set index to &kart.idx
...
Рейтинг: 0 / 0
Поиск данных
    #35585942
stoopper
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
проходящий.Боже мой, где так учать писать? На кой ляд столько макроподстановок?
Код: plaintext
1.
2.
3.
4.
5.
select  0 
use kart in  0 
if !file('kart.idx')
  index on fam to kart
endif 
set index to kart


При отсутствии kart.idx строка set index to kart вывалит ошибку
...
Рейтинг: 0 / 0
Поиск данных
    #35585951
vkluch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну а где сам SEEK
...
Рейтинг: 0 / 0
Поиск данных
    #35585963
vkluchНу а где сам SEEK
_fam-вводим
select kart
set order to fam
go top
seek _fam
...
...
Рейтинг: 0 / 0
Поиск данных
    #35585999
vkluch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
CLOSE ALL 
CREATE TABLE kart (Fam C( 50 ))
INSERT INTO kart (fam) VALUES ('Сидоров')
INSERT INTO kart (fam) VALUES ('Петров')
INSERT INTO kart (fam) VALUES ('Иванов')
INSERT INTO kart (fam) VALUES ('Антонов')
INSERT INTO kart (fam) VALUES ('Баков')
INSERT INTO kart (fam) VALUES ('Ваков')
INDEX ON fam TO yourind
_fam=INPUTBOX('Введите fam ')
SEEK _fam
BROWSE NOWAIT 
...
Рейтинг: 0 / 0
Поиск данных
    #35586019
Спасибо.получилось.
...
Рейтинг: 0 / 0
Поиск данных
    #35586027
vkluch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А _fam случайно не 'Ива' + куча пробелов. Тогда никогда не найдете.
Код: plaintext
Seek alltrim(_fam) 
...
Рейтинг: 0 / 0
Поиск данных
    #35586080
stoopper проходящий.Боже мой, где так учать писать? На кой ляд столько макроподстановок?
Код: plaintext
1.
2.
3.
4.
5.
select  0 
use kart in  0 
if !file('kart.idx')
  index on fam to kart
endif 
set index to kart


При отсутствии kart.idx строка set index to kart вывалит ошибку
Во-первых, код мной только слегда подправлен и я не задавал его логику.
Во-вторых, а что делает конструкция перед set index? Уж не создает ли новый при отсутствии kart.idx?
...
Рейтинг: 0 / 0
Поиск данных
    #35586357
stoopper
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
проходящий. stoopper проходящий.Боже мой, где так учать писать? На кой ляд столько макроподстановок?
Код: plaintext
1.
2.
3.
4.
5.
select  0 
use kart in  0 
if !file('kart.idx')
  index on fam to kart
endif 
set index to kart


При отсутствии kart.idx строка set index to kart вывалит ошибку
Во-первых, код мной только слегда подправлен и я не задавал его логику.
Во-вторых, а что делает конструкция перед set index? Уж не создает ли новый при отсутствии kart.idx?

ВИНОВАТ'C! Конечно, не сообразил.. Тоже как-то набросился только на макрос.
...
Рейтинг: 0 / 0
Поиск данных
    #35586483
BMJ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
BMJ
Гость
Не проще?
1. Получить значение для поиска
2. SELE * from table where fam=ishem
и не думать о наличии индексов.
И еще,
sele 0
use in 0 (первое излишне)
...
Рейтинг: 0 / 0
Поиск данных
    #35586972
Фотография AndreTM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BMJНе проще?
1. Получить значение для поиска
2. SELE * from table where fam=ishem
и не думать о наличии индексов.
И еще,
sele 0
use in 0 (первое излишне)
Скорее, излишне второе, ибо далее идет index по активному алиасу.
И с Select тоже, ведь, нужно-то еще и перейти к этой записи, а seek по индексу
и так использует Рашмор. Ну, можно, конечно, сделать
Код: plaintext
1.
2.
3.
select recno() from kart where fam=_fam into array tmp
if _tally> 0 
 go (tmp( 1 , 1 ))
endif
но смысл?
...
Рейтинг: 0 / 0
Поиск данных
    #35587029
Galyamov Rinat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
> Автор: BMJ
> Не проще?
> 1. Получить значение для поиска
> 2. SELE * from table where fam=ishem
> и не думать о наличии индексов.

Конечно проще.

Но думать о наличии индексов и их качестве НУЖНО ВСЕГДА!!! Не смотря на
"проще не думать"


Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Поиск данных
    #35587054
BreDen
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Galyamov Rinat
> Автор: BMJ
> Не проще?
> 1. Получить значение для поиска
> 2. SELE * from table where fam=ishem
> и не думать о наличии индексов.

Конечно проще.

Но думать о наличии индексов и их качестве НУЖНО ВСЕГДА!!! Не смотря на
"проще не думать"


Posted via ActualForum NNTP Server 1.4

Да ко всему не забывайте что наличием нормального индекса на поле fam и select быстрее будет делаться.
Это я так просто поумничать напоследок
...
Рейтинг: 0 / 0
Поиск данных
    #35598467
miv32
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
SELECT * from table where fam like '%ishem%'
Тогда будет искать по вхождению.
И лучше с учетом регистра.
Типа ishem=UPPER(ishem)

Тогда SELECT * from table where upper(fam) like '%ishem%'
...
Рейтинг: 0 / 0
Поиск данных
    #35598511
Фотография Игорь Горбонос
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
> Автор: miv32
> Тогда SELECT * from table where upper(fam) like '%ishem%' .

Наверное lower?


--
С уважением Горбонос Игорь Леонидович

Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Поиск данных
    #35598532
miv32
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Это уж как угодно, лишь бы был одинаковый. :)
UPPER - верхний регистр
LOWER - нижний.
И, как справедливо выше написали - ALLTRIM для поля и перементой.
Фокс, к сожалению, не ОРАКЛ. Приходится следить.
...
Рейтинг: 0 / 0
23 сообщений из 23, страница 1 из 1
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Поиск данных
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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