Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / FoxPro, Visual FoxPro Новый топик    Ответить
Топик располагается на нескольких страницах: [1] 2   вперед  Ctrl      все
 Найти далее!!!!  [new]
13спартак13
Member

Откуда:
Сообщений: 38
Помогите пожалуйста!!!!!! Что добавить в код чтобы он искал следующую запись при повторном нажатии и можноли вообще это сделать????? Очень нужно
SELECT vodom
GO TOP IN vodom
LOCATE FOR vodom.fio=ALLTRIM(thisform.text1.value)
thisform.Grid1.Refresh()
thisform.Grid1.setfocus()
IF NOT FOUND() then
=MESSAGEBOX("Òàêîãî ïëàòåëüùèêà íåòó!")
ENDIf
9 июн 10, 20:28    [8919043]     Ответить | Цитировать Сообщить модератору
 Re: Найти далее!!!!  [new]
ptol
Member

Откуда:
Сообщений: 11
попробуй использовать для поиска функцию SCAN


SCAN [NOOPTIMIZE] [Scope] [FOR lExpression1] [WHILE lExpression2]
[Commands]
[LOOP]
[EXIT]
ENDSCAN
9 июн 10, 21:14    [8919250]     Ответить | Цитировать Сообщить модератору
 Re: Найти далее!!!!  [new]
ptol
Member

Откуда:
Сообщений: 11
SELECT vodom
GO TOP IN vodom
SCAN FOR vodom.fio=ALLTRIM(thisform.text1.value)
thisform.Grid1.Refresh()
thisform.Grid1.setfocus()
IF NOT FOUND() then
=MESSAGEBOX("Oaeiai ieaoaeuueea iaoo!")
LOOP
ELSE
EXIT
ENDIF
ENDSCAN

пробуй!
9 июн 10, 21:18    [8919272]     Ответить | Цитировать Сообщить модератору
 Re: Найти далее!!!!  [new]
13спартак13
Member

Откуда:
Сообщений: 38
ptol,

Он ищет, но не по нажатию кнопки, а просто пролистывает и после каждого выдает сообщение надо что-то примудрить, помогайте плиз
9 июн 10, 21:32    [8919347]     Ответить | Цитировать Сообщить модератору
 Re: Найти далее!!!!  [new]
BMJ
Member

Откуда: Москва
Сообщений: 270
Точно не помню, CONTINUE в LOCATE посмотрите что делает.
9 июн 10, 22:14    [8919517]     Ответить | Цитировать Сообщить модератору
 Re: Найти далее!!!!  [new]
Dag
Member

Откуда:
Сообщений: 842
Опция REST в команде LOCATE или команда CONTINUE
9 июн 10, 23:31    [8919853]     Ответить | Цитировать Сообщить модератору
 Re: Найти далее!!!!  [new]
ptol
Member

Откуда:
Сообщений: 11
если я правильно понял, то ты хочешь по нажатию на одну и ту же кнопку и начинать поиск и продолжать его.

Тогда тебе нужно знать когда у тебя первое нажатие, а когда остальные, и по первому нажатию выполнять

GO TOP IN vodom

а потом

LOCATE FOR vodom.fio=ALLTRIM(thisform.text1.value) REST
thisform.Grid1.Refresh()
thisform.Grid1.setfocus()
IF NOT FOUND() then
=MESSAGEBOX("Òàêîãî ïëàòåëüùèêà íåòó!")
ENDIf

или

SCAN FOR vodom.fio=ALLTRIM(thisform.text1.value) REST
thisform.Grid1.Refresh()
thisform.Grid1.setfocus()
IF NOT FOUND() then
=MESSAGEBOX("Oaeiai ieaoaeuueea iaoo!")
ENDIF
ENDSCAN

Опция REST продолжает с текущей позиции, поэтому первый раз GO TOP IN vodom , а последующие без него.
9 июн 10, 23:33    [8919858]     Ответить | Цитировать Сообщить модератору
 Re: Найти далее!!!!  [new]
13спартак13
Member

Откуда:
Сообщений: 38
ptol,
попробовал, но он по запися не перепрыгивает с локате, а со скан тоже самое что и сначала
9 июн 10, 23:51    [8919906]     Ответить | Цитировать Сообщить модератору
 Re: Найти далее!!!!  [new]
ptol
Member

Откуда:
Сообщений: 11
пришли форму и таблицу, поглядим
10 июн 10, 00:53    [8920070]     Ответить | Цитировать Сообщить модератору
 Re: Найти далее!!!!  [new]
ptol
Member

Откуда:
Сообщений: 11
Вот рабочий код. Я проверил

Таблицу только свою пропиши

SELECT klient
IF thisform.m_bstartfind
GO TOP IN klient
thisform.m_bstartfind = .F.
ELSE
SKIP
endif
LOCATE FOR klient.full_name= (ALLTRIM(thisform.text1.value)) rest
thisform.Grid1.Refresh()
thisform.Grid1.setfocus()
IF NOT FOUND() then
=MESSAGEBOX("Oaeiai ieaoaeuueea iaoo!")
thisform.m_bstartfind = .T.
ENDIf

Вот моя форма, пробуй

К сообщению приложен файл (Форма_поиск.exe - 105Kb) cкачать
10 июн 10, 01:33    [8920147]     Ответить | Цитировать Сообщить модератору
 Re: Найти далее!!!!  [new]
igorbik
Member

Откуда: Мск
Сообщений: 578
13спартак13,

1) Селектом выбрать в курсор сразу всех возможных клиентов
2) Курсор показать (BROWSE) и на правую кнопку навесить выбор нужного клиента

Пример кода поиска плат. поручений в таблице (исправить под свои проблемы)

SELECT * FROM PLATPOR1 WHERE PLATNUM = STROKA1 ;
INTO CURSOR SYS(2015) NOFI ;
ORDER BY PLATNUM, PLATDATE

if RECC() = 0
wait window [ Нет данных! ] nowait time 5
retu
endif

IF RECCOUNT() > 1

push key clear

ON KEY LABEL ENTER KEYBOARD CHR(23)
ON KEY LABEL RIGHTMOUSE KEYBOARD CHR(23)

BROWSE NOMODIFY nodelete nomenu ;
FIELDS PLATNUM :H= 'Номер' ,;
PLATDATE :H= 'Дата' ,;
SUMPLAT :H= 'Сумма' ;
title "Нажмите {Enter} или правую кнопку мыши для выбора"

Pop key

ENDIF

scatter memvar

select PLATPOR1
SET ORDER TO PLATID
SEEK M.PLATID
*или
*LOCATE FOR.................
10 июн 10, 08:31    [8920546]     Ответить | Цитировать Сообщить модератору
 Re: Найти далее!!!!  [new]
КонецЦикла
Member

Откуда:
Сообщений: 273
SELECT <таблица поиска>
lnRecno = RECNO()
ON KEY LABEL F3 DO f3
LOCATE FOR <условие для поиска>
IF !FOUND()
PUSH KEY CLEAR
MESSAGEBOX(Ничего не нашли!', 64, 'Внимание!')
GO lnRecno
ELSE
WAIT WINDOW 'Продолжение поиска - F3' NOWAIT
ENDIF

ну и где-нибудь определяем процедуру f3

PROCEDURE f3
LOCAL lnRecno
lnRecno = RECNO()
CONTINUE
WAIT WINDOW Продолжение поиска - F3' NOWAIT
IF !FOUND()
MESSAGEBOX('Поиск окончен!', 64, 'Внимание!')
GO lnRecno
PUSH KEY CLEAR
ENDIF
10 июн 10, 11:04    [8921524]     Ответить | Цитировать Сообщить модератору
 Re: Найти далее!!!!  [new]
13спартак13
Member

Откуда:
Сообщений: 38
Всем большое спасибо все помагли!!!!!!!!!!!!!
10 июн 10, 11:58    [8922230]     Ответить | Цитировать Сообщить модератору
 Re: Найти далее!!!!  [new]
13спартак13
Member

Откуда:
Сообщений: 38
ptol,

А еще помогите пожалуйста m_bstartfind это что такое у меня его не находит
10 июн 10, 12:24    [8922536]     Ответить | Цитировать Сообщить модератору
 Re: Найти далее!!!!  [new]
13спартак13
Member

Откуда:
Сообщений: 38
КонецЦикла,

А куда процедуру разместить
10 июн 10, 12:49    [8922844]     Ответить | Цитировать Сообщить модератору
 Re: Найти далее!!!!  [new]
ВОВАН-ШАМАН
Guest
Ну ответили же уже! Команда Continue после Locate продолжает поиск!
Пока не встретится Eof()
Откуда только долбоёбы берутся со своими советами...
10 июн 10, 15:11    [8924431]     Ответить | Цитировать Сообщить модератору
 Re: Найти далее!!!!  [new]
ptol
Member

Откуда:
Сообщений: 11
13спартак13,

открой форму которую скачал и зайди в метод Init
m_bstartfind - это пользовательская переменная класса form
10 июн 10, 17:01    [8925797]     Ответить | Цитировать Сообщить модератору
 Re: Найти далее!!!!  [new]
КонецЦикла
Member

Откуда:
Сообщений: 273
ну, например, добавляешь в проект файл mylibs.prg, в который и вставляешь процедуру f3
а в стартовом файле своей проги добавляешь строчку
SET PROCEDURE TO mylibs ADDITIVE
11 июн 10, 09:20    [8928564]     Ответить | Цитировать Сообщить модератору
 Re: Найти далее!!!!  [new]
13спартак13
Member

Откуда:
Сообщений: 38
ptol,

Блина у меня пишет что функция не найдена m_startfind или я что то не правильно делаю но в инете я тож написал
11 июн 10, 10:56    [8929174]     Ответить | Цитировать Сообщить модератору
 Re: Найти далее!!!!  [new]
13спартак13
Member

Откуда:
Сообщений: 38
13спартак13,

ptol , большое вам спасибо, очень выручили
11 июн 10, 13:15    [8930693]     Ответить | Цитировать Сообщить модератору
 Re: Найти далее!!!!  [new]
Wasilich
Member

Откуда:
Сообщений: 17
ВОВАН-ШАМАН
Ну ответили же уже! Команда Continue после Locate продолжает поиск!
Пока не встретится Eof()
Откуда только долбоёбы берутся со своими советами...

Обычно, ШАМАНЫ это ЧУКЧИ. Оно и понятно. Они сразу умниками рождаются. И лексика у них от рождения.
15 июн 10, 12:01    [8942175]     Ответить | Цитировать Сообщить модератору
 Re: Найти далее!!!!  [new]
reware
Member

Откуда: Хабаровск
Сообщений: 585
13спартак13
Помогите пожалуйста!!!!!! Что добавить в код чтобы он искал следующую запись при повторном нажатии и можноли вообще это сделать????? Очень нужно

Создайте на своей форме ещё одну кнопочку "Искать дальше", а в её методе Click пропишите CONTINUE.
15 июн 10, 22:02    [8947052]     Ответить | Цитировать Сообщить модератору
 Re: Найти далее!!!!  [new]
tanglir
Member

Откуда:
Сообщений: 28966
Wasilich
ВОВАН-ШАМАН
Ну ответили же уже! Команда Continue после Locate продолжает поиск!
Пока не встретится Eof()
Откуда только долбоёбы берутся со своими советами...

Обычно, ШАМАНЫ это ЧУКЧИ. Оно и понятно. Они сразу умниками рождаются. И лексика у них от рождения.
не кормите троллей, они от этого только жиреют
15 июн 10, 22:13    [8947101]     Ответить | Цитировать Сообщить модератору
 Re: Найти далее!!!!  [new]
reware
Member

Откуда: Хабаровск
Сообщений: 585
Wasilich

Обычно, ШАМАНЫ это ЧУКЧИ. Оно и понятно. Они сразу умниками рождаются. И лексика у них от рождения.

А здесь вообще модератор есть ? Это вообще SQL.RU или передача Тины Канделаки ?
15 июн 10, 22:58    [8947277]     Ответить | Цитировать Сообщить модератору
 Re: Найти далее!!!!  [new]
tanglir
Member

Откуда:
Сообщений: 28966
reware, модератор куда-то исчез, его уже почти неделю здесь не было.
16 июн 10, 03:51    [8947745]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: [1] 2   вперед  Ctrl      все
Все форумы / FoxPro, Visual FoxPro Ответить