Поиск записи: вывести сообщение о завершении поиск

Ukraina
Дата: 10.09.2005 01:48:31
Господа!
Для поиска записи использую код:

DoCmd.SelectObject acForm, "Phones" 
DoCmd.FindRecord Me.P, acAnywhere, , , False, acCurrent, False 
Me.SetFocus 

Код работает, но вот незадачка: когда поиск завершен, то не выводит никакого сообщения...
Как можно вывести сообщение об этом, а то в данном случае ничего не происходит и все замирает на последней найденой записи?
Владимир Саныч
Дата: 10.09.2005 12:19:56
msgbox?
Украина
Дата: 10.09.2005 20:00:17
Саныч!
Це понятно, что меседжбоксом, но вот я не понял, как перехватить "нечто", что покажет, что перебор записей закончен? Т.е. например получить некий код завершения перехода по записям и если он таков, то вывести сообщение!?

Т.е. нужно получить некое условие канчания...
Владимир Саныч
Дата: 10.09.2005 20:28:01
А что перехватывать-то? Там же одна строчка кода. Пошло на следующую строчку - значит, закончило предыдущую.
Ukraina
Дата: 10.09.2005 21:50:26
Саныч!
Судя по всему до меню туго доходит (у меня и справка есть...)
А как перехватить момент, что на новую строчку уже не переходит. Возможно есть нечто, просто я привык, что например конец файла это EOF и я ставлю условие, типа если EOF тогда делай тотто; или типа если Фалсе то то-то, иначе это-то...
А здесь я не вижу как использовать заканчивание перехода
Саныч! Ну ты меня столько раз вытаскивал из страшных ситуаций, может опять повторишь свой подвиг? Подскажи (кодом), что значит
Пошло на следующую строчку - значит, закончило предыдущую
Владимир Саныч
Дата: 11.09.2005 00:07:08
Ukraina
А как перехватить момент, что на новую строчку уже не переходит. Возможно есть нечто, просто я привык, что например конец файла это EOF и я ставлю условие, типа если EOF тогда делай тотто; или типа если Фалсе то то-то, иначе это-то...

У тебя там что, цикл, что ли? Ты не всю программу привел?

Ukraina
А здесь я не вижу как использовать заканчивание перехода

В конце концов, занеси в переменную значение ключа до этой команды, а после сравни: если ключ изменился, значит перешло.

Ukraina
Подскажи (кодом),

.-- -. .. -- .- -. .. .
.--. . .-. . -.. .- ..--
-.- --- -..

Ukraina
что значит
Пошло на следующую строчку - значит, закончило предыдущую

Вообще-то я имел в виду следующее:
DoCmd.FindRecord Me.P, acAnywhere, , , False, acCurrent, False 'первая строчка
MsgBox "Команда FindRecord исполнена!" 'вторая строчка
Ukraina
Дата: 11.09.2005 01:30:53
Говорил мне командир: Изучай азбуку Морзе - Пригодится!!! А я не слушался... Как далеко смотрел тот полковник!!! А ведь там наверно и есть решение проблемы...

В принципе идею понял, сейчас попробую
Ukraina
Дата: 11.09.2005 01:57:21
Скорее всего вопрос задал некооректно. Исправляюс и надеюсь это поможет...

Для поиска использую всплывающую форму, где есть строка шаблона поиска и две кнопки "Найти" и "Найти далее" (в общем аналог акцессовской системы поиска CTRL+F)

Private Sub KD_Click() ' Кнопка "Далее"

DoCmd.SelectObject acForm, mCallingForm.Name
DoCmd.FindRecord Me.P, acAnywhere, , , False, acCurrent, False

End Sub

Private Sub KS_Click() ' кнопка "Найти"

DoCmd.SelectObject acForm, mCallingForm.Name
DoCmd.FindRecord Me.P, acAnywhere, , , True, acCurrent

P.SetFocus ' строка шаблона поиска
KS.Visible = False
KD.Visible = True
    
End Sub

Код прекрасно работает и ищет по записям нужной формы в нужном поле. Но когда поиск закончен, то никаких изменений не происходит, просто все остается на последней найденой записи.
Очень хотелось бы, когда поиск завершен, то вышло бы сообщение "Поиск записей завершен, больше ничего не найдено", ну типа так (если возможно)

if НичегоБольшеНеНайдено then
MsgBox "Ничего не найдено!!!"
exit sub
else
DoCmd.SelectObject acForm, "Phones" 
DoCmd.FindRecord Me.P, acAnywhere, , , False, acCurrent, False 
Me.SetFocus 
'т.е. продолжаем поиск
End if
(понимаю глупость алгоритма кода, не судите, это просто так, для красоты)

Одним словом, как уловить момент отсутствия найденого или последнюю найденую запись?
Ukraina
Дата: 11.09.2005 02:11:31
Попробовал так код, вроде работает

z = mCallingForm.ActiveControl

DoCmd.SelectObject acForm, mCallingForm.Name
DoCmd.FindRecord Me.P, acAnywhere, , , False, acCurrent, False

z1 = mCallingForm.ActiveControl

If z = z1 Then
MsgBox "Все! больше нету!"
End If
Т.е. сравнивает значение активного поля до поиска и после.
Может есть более дешевый способ?
Букмарки
Дата: 11.09.2005 02:57:35
Мы?