Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - VBA

Страница: 1 |

 

  Вопрос: Access 2003. Нужен поиск по форме Добавлено: 08.10.09 10:06  

Автор вопроса:  ZagZag | ICQ: 295002202 
Hi всем, давненько я тут не был...
Вот пришлось работать в Access, сделать небольшую базу с формой и поиском.
В форме отображаются данные из связанной таблицы... эх, вставку картинок не приделали до сих пор =(

Поиск пока сделал так:
http://xmages.net/out.php/i533377_1.png
По мере ввода фильтруются фамилии, при двойном щелчке открывается вторая форма для редактирования выбранной записи
http://xmages.net/out.php/i533378_2.png

Вроде как все работает, но хочется чтобы можно было искать не только по фамилии, но и по другим критериям.
Короче, не знаю как сделать это попроще и поудобнее.
Хочется чтобы можно было вводить текст в любое поле в форме "Список" и данные фильтровались по нему (или нескольким полям), но нужно так же оставить возможность редактирования данных в этих полях...
Если кто работал с поиском в Access 2003 VBA, подскажите как вы это делали.

PS
Если интересно, вот код:
Private Sub lstResults_DblClick(Cancel As Integer)
Dim lngRecord As Long
    lngRecord = lstResults.ItemData(lstResults.ListIndex)
    
    Form_Список.Visible = True
    DoCmd.GoToRecord acDataForm, "Список", acGoTo, lngRecord
    Form_Поиск.Visible = False
End Sub

Private Sub txtFIO_Change()
Dim strWhere As String
Dim strSQL As String
    strWhere = "WHERE True "

    If Len(Me!txtFIO.Text & "") > 0 Then
        strWhere = strWhere & "And Список.FIO Like '*" & Me!txtFIO.Text & "*' "
    End If

    strSQL = "SELECT Список.id, Список.FIO FROM Список " & strWhere & ";"
    
    Me!lstResults.RowSource = strSQL
End Sub

Ответить

  Ответы Всего ответов: 3  

Номер ответа: 1
Автор ответа:
 ZagZag



ICQ: 295002202 

Вопросов: 87
Ответов: 1684
 Профиль | | #1 Добавлено: 09.10.09 09:13
Может я просто не умею просить у Гугла?
Как такая фишка вообще правильно называется?

Ответить

Номер ответа: 2
Автор ответа:
 ZagZag



ICQ: 295002202 

Вопросов: 87
Ответов: 1684
 Профиль | | #2 Добавлено: 13.10.09 09:32
Вот ведь...
  1. DoCmd.GoToRecord acDataForm, "Список", acGoTo, lngRecord

lngRecord - не ID записи из таблицы, а номер записи в таблице.
Разница в том что ID может быть любым, а номер записи - порядковый, если в таблице 2 записи, то их номера будут = 1 и 2, а ID, допустим 170 и 171. Так что VBA вернет ошибку.
Как, зная ID, получить номер записи?

Ответить

Номер ответа: 3
Автор ответа:
 ZagZag



ICQ: 295002202 

Вопросов: 87
Ответов: 1684
 Профиль | | #3 Добавлено: 13.10.09 09:48
Ага. Сам разобрался:
  1. Private Sub lstResults_DblClick(Cancel As Integer)
  2. Dim lngRecord As Long
  3.     lngRecord = lstResults.ItemData(lstResults.ListIndex)
  4.     Form_Список.Visible = True
  5.     Form_Список.Recordset.FindFirst "[id] = " & lngRecord
  6.     Form_Поиск.Visible = False
  7. End Sub

Ответить

Страница: 1 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам