Поиск записей, соответствующих введенным буквам

Работа VB и СУБД (Access, MSSQL, MySQL, Oracle и пр.)
Правила форума
При создании новой темы не забывайте указывать используемую СУБД.
irr33
Начинающий
Начинающий
 
Сообщения: 6
Зарегистрирован: 03.06.2008 (Вт) 16:37

Поиск записей, соответствующих введенным буквам

Сообщение irr33 » 16.06.2008 (Пн) 16:22

Помогите решить задачу: Имеется однотабличная разделенная форма, в которой в основном окне отображаются записи о конкретной организации, а ниже прикреплена табличка со списком всех организаций. Хотелось бы создать поле поиска, в котором вводить названия организаций. При этом, чтобы при вводе первой буквы в прикрепленной табличке оставались организации на эту букву, при вводк второй буквы в поле поиска, чтобы оставались организации с такими же двумя буквами итд. Буду очень признательна.

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Сообщение alibek » 16.06.2008 (Пн) 16:32

Мало деталей.
Что за среда, каков источник данных.
Lasciate ogni speranza, voi ch'entrate.

irr33
Начинающий
Начинающий
 
Сообщения: 6
Зарегистрирован: 03.06.2008 (Вт) 16:37

Сообщение irr33 » 16.06.2008 (Пн) 16:43

Это Access

Zenitchik
Постоялец
Постоялец
 
Сообщения: 369
Зарегистрирован: 21.12.2006 (Чт) 14:48

Сообщение Zenitchik » 17.06.2008 (Вт) 0:02

Погодите, прикрепленная табличка, это что? Подчиненная форма?

Смотрите, нужно в модуль формы - той, где у вас поле для ввода букв подписать процедуру обработки:

Код: Выделить всё
Private Sub Поле_Change()
    With Поле
        SubForm.Filter = "Столбец Like '" & .Text & "*'"
        SubForm.FilterOn = True
        .SelStart = Len(.Text)
    End With
End Sub


Поле - имя поля, в которое вы пишете буквы (обратите внимание, встречается и в имени процедуры - Поле_Change - и в ее коде - With Поле - заменить (у вас ведь оно по другому будет называться?) надо в обоих местах);
SubForm - подчиненная форма, к которой применяете фильтр;
Столбец - имя столбца, по значению которого происходит фильтрация.
Знание английского языка - затрудняет понимание кода

irr33
Начинающий
Начинающий
 
Сообщения: 6
Зарегистрирован: 03.06.2008 (Вт) 16:37

Сообщение irr33 » 17.06.2008 (Вт) 11:56

В последнем случае находится первая запись, соответствующая введенной букве, и то только воссле нажатия ввода. а как сделать соответствие отобранных записей всем буквам?

Zenitchik
Постоялец
Постоялец
 
Сообщения: 369
Зарегистрирован: 21.12.2006 (Чт) 14:48

Сообщение Zenitchik » 17.06.2008 (Вт) 14:15

Код: Выделить всё
Private Sub Поле_Change()
    With Поле
        SubForm.Form.Filter = "Столбец Like '" & .Text & "*'"
        SubForm.Form.FilterOn = True
        .SelStart = Len(.Text)
    End With
End Sub


Чуть изменил. Работает нормально.
Знание английского языка - затрудняет понимание кода

irr33
Начинающий
Начинающий
 
Сообщения: 6
Зарегистрирован: 03.06.2008 (Вт) 16:37

Сообщение irr33 » 17.06.2008 (Вт) 15:43

Спасибо большое, только почему-то все равно не работает :(

igor_m
Постоялец
Постоялец
 
Сообщения: 343
Зарегистрирован: 22.03.2002 (Пт) 12:40

когда-то работало.

Сообщение igor_m » 23.06.2008 (Пн) 23:59

Private Sub FilterNaim_KeyUp(KeyCode As Integer, Shift As Integer)
Dim i As Byte

If (KeyCode >= 32 And KeyCode <= 122) Or (KeyCode >= 192 And KeyCode <= 255) Or KeyCode = 46 Or KeyCode = 8 Then
i = Len(FilterNaim.Text)
Me.RecordSource = strQRY()
FilterNaim.SetFocus
FilterNaim.SelStart = i
FilterNaim.SelLength = 1
End If
End Sub

Смысл таков: FilterNaim-обычное текстовое поле, отслеживается нажатие клавиш. Если клавиша не значок, не цифра и т.д. формируется запрос на обновление записей формы WHERE первые 2... буквы названия такие как в этом поле и т.д. Последние строчки: когда форма обновилась, то фокус переходит на нее, нужно переместить его обратно в поле ввода в конец записи.
strQRY()-формирование строки обычного sql-запроса на основе нескольких таких полей ввода, т.е. в каждое поле вводишь какой-то критерий и динамически выборка сужается.

Zenitchik
Постоялец
Постоялец
 
Сообщения: 369
Зарегистрирован: 21.12.2006 (Чт) 14:48

Сообщение Zenitchik » 24.06.2008 (Вт) 16:11

irr33
Опишите, что у вас за формы? Какие в них поля? По какому полю должен происходить отбор?
Знание английского языка - затрудняет понимание кода

Summer.05
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 285
Зарегистрирован: 28.12.2005 (Ср) 20:19
Откуда: Москва

Re: Поиск записей, соответствующих введенным буквам

Сообщение Summer.05 » 26.01.2010 (Вт) 22:48

irr33 писал(а):Помогите решить задачу: Имеется однотабличная разделенная форма, в которой в основном окне отображаются записи о конкретной организации, а ниже прикреплена табличка со списком всех организаций. Хотелось бы создать поле поиска, в котором вводить названия организаций. При этом, чтобы при вводе первой буквы в прикрепленной табличке оставались организации на эту букву, при вводк второй буквы в поле поиска, чтобы оставались организации с такими же двумя буквами итд. Буду очень признательна.


Код: Выделить всё
Private Sub Text1_Change()
     
    If Text1 = "" Then
            Adodc1.RecordSource = "SELECT * From DB order by Name" ' DB - название базы, Name - название организации
            Adodc1.Refresh
Text1.Text = DataGrid1.ApproxCount 'отражает общее количество
    Else
            With Adodc1
               .RecordSource = "SELECT DB.Name From DB WHERE DB.Name Like '*'"
               .Recordset.Filter = "Name like '" & Text3 & "*'"
            End With
Text2.Text = DataGrid1.ApproxCount 'отражает количество отобранных
   End If   
End Sub


В Text1 надо вводить буквы...


Вернуться в Базы данных

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 27

    TopList