Rambler's Top100
Форум: MS ACCESSVBVBA MS OfficeMS SQL server
Новые сообщения: 0000

Форум: MS ACCESS

Вопросы связанные с MS ACCESS

Обновить визитку
Участники «Online»
Все участники

 
 

Доброго времени суток, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Показ последней записи при поиске
 
 автор: rulez22   (27.12.2007 в 19:25)   личное сообщение
 
 

Access 2003/2007
Подскажите кто разбирается как сделать поиск нормально?
Проблема в том что если есть 10 Ивановых в базе то при этом поиске показывает первую запись Иванова, хотелось бы чтобы показывалась последняя запись Иванова.
Для поиска использую поле r_search вот код для поиска записи

Private Sub r_search_LostFocus()
Dim RBev As DAO.Recordset
Set RBev = CurrentDb.OpenRecordset("maindata") 'название таблицы
   Dim BW As Variant
   Dim I  As Integer
   Dim LN As Double
   Dim SN As String
   Dim ZN As String
   BW = RBev.Bookmark
   If Not IsNull(r_search) And (Trim(r_search) <> "") Then
      SN = ""
      ZN = Trim(r_search)
      LN = 0
      For I = 1 To Len(ZN)
         If (Mid(ZN, I, 1) >= "0") And (Mid(ZN, I, 1) <= "9") Then
            LN = I
         End If
      Next
      If LN = 0 Then
         RBev.Index = "tw_clientname" 'поле ИМЯ КЛИЕНТА
         RBev.Seek ">=", r_search
         r_sortedby = "Client name" 'r_sortedby информационное поле показывающее как происходил поиск по имени или по порядковому номеру или адресу
      Else
         If LN = 6 Then
            LN = Val(r_search)
            RBev.Index = "tw_bookingnumber" 'порядковый номер записи
            RBev.Seek ">=", LN
            r_sortedby = "Booking number" 'найдено по номеру записи
         Else
            RBev.Index = "tw_address" 'поиск по адресу
            RBev.Seek ">=", r_search
            r_sortedby = "Address" 'найдено по адресу
         End If
      End If
      If RBev.NoMatch Then 'если не найдено то..
         MsgBox ("Not found") 'ничего не нашли..
         RBev.Bookmark = BW
      End If
      Selectie = "SELECT * FROM maindata WHERE tw_bookingnumber = " & RBev!tw_bookingnumber
      Forms.maindata.RecordSource = Selectie
      Forms.maindata.r_search.SetFocus
   Else
      RBev.Bookmark = BW
   End If
   r_search = ""
End Sub

  Ответить  
 
 автор: час   (27.12.2007 в 19:32)   личное сообщение
 
 

А можно кусочек той таблицы, где поиск идёт
с 10 ивановыми?

  Ответить  
 
 автор: rulez22   (27.12.2007 в 20:43)   личное сообщение
 
 

Пример тут http://sir22.com/1.rar

  Ответить  
 
 автор: osmor   (28.12.2007 в 11:35)   личное сообщение
 
 

вместо seek используйте FindFirst и FindNext, тем более что SEEK не работает со связанными таблицами
Кроме тотого значительно выстрее будет открыть рекордсет с заданным условием (а не по всей таблице) и взять последнюю запись этого рекордсета.
или открыть рекодсет с условием и сортировкой в обратном порядке (т.е. что бы 10-я запись стала первой) и использовать Select top 1 ....

  Ответить  
HiProg.com - Технологии программирования
Rambler's Top100 TopList