Страницы: 1
RSS
Поиск через textbox по базе с выводом в listbox
 
Пересмотрела множество примеров с поиском по фамилии в базе данных. Кое-что смастерила сама. Но поскольку дружу с VBA всего три месяца, то своего таланта пока не хватает. Помогите пожалуйста.
В приложенном файле при нажатии на кнопку открывается форма, в которой нужно в listbox получить результат поиска. Поиск осуществляется по таблице Пациенты путем введения начальных букв фамилии в textbox.
Если в базе есть пациенты с одинаковой фамилией, то в listbox показать всех.
 
Вот.
 
Юрий, как всегда безупречно гениален и мгновенен)
Благодарю,благодарю, благодарю!
То, что нужно!
 
Мяррр )
 
Юрий М, Здравствуйте, подскажите пожалуйста, а почему когда нажимаешь на кнопку закрыть не закрывается
 
alex1210, если Вы посмотрите код формы, то увидите, что кнопке не присвоено никакого действия.

Формула массива (ФМ) вводится Ctrl+Shift+Enter
Memento mori
 
JayBhagavan, доброго времени суток, если Вам не трудно подскажите какой код можно прописать. Учусь)))
 
Код
unload me
 
Юрий М, извините еще раз за назойливость вот макрос о котором я спрашиваю, куда прописать
unload me
Код
'Dim LastRow As Long, Arr(), i As Long, x As Long
'    'UserForm_Main.Hide
'    With Sheets("Пациенты")
'        LastRow = Cells(Rows.Count, 2).End(xlUp).Row
'        Arr = Range(Cells(3, 2), Cells(LastRow, 5)).Value
'    End With
'    With ListBox1
'        For i = 1 To UBound(Arr)
'            If Arr(i, 1) <> "" Then
'                .AddItem ""
'                .List(x, 0) = Arr(i, 1)
'                .List(x, 3) = Format(Arr(i, 4), "dd/mm/yyyy")
'                .List(x, 1) = Arr(i, 2)
'                .List(x, 2) = Arr(i, 3)
'                x = x + 1
'            Else
'                Exit For
'            End If
'        Next
'   End With
'End Sub
Private Sub tbName_Change()
Dim LastRow As Long, i As Long, x As Long, Arr()
    Me.ListBox1.Clear
    With Sheets("Пациенты")
        LastRow = .Cells(Rows.Count, 2).End(xlUp).Row
        Arr = .Range(.Cells(3, 2), .Cells(LastRow, 5)).Value
    End With
    With ListBox1
        For i = 1 To UBound(Arr)
            If UCase(Arr(i, 1)) Like UCase(Me.tbName) & "*" Then
                .AddItem ""
                .List(x, 0) = Arr(i, 1)
                .List(x, 3) = Format(Arr(i, 4), "dd/mm/yyyy")
                .List(x, 1) = Arr(i, 2)
                .List(x, 2) = Arr(i, 3)
                x = x + 1
'            Else
'                Exit For
            End If
        Next
   End With
End Sub
 
alex1210,редактор ВБА, открываете форму, на форме ПКМ по кнопке, код.

Формула массива (ФМ) вводится Ctrl+Shift+Enter
Memento mori
 
Юрий М ,хорош поисковик!!! :)
Как можно в код добавить  сообщение  если такого пациента нет , что бы отобразилась  форма frmAdd(форма в проекте есть) и можно было добавлять нового пациента. Заранее благодарен.
Код
    If MsgBox("Такого
  Пациента  нет в базе данных!"
  & vbLf & "Добавить?", vbInformation + vbYesNo +
  vbDefaultButton2, "Сообщение") = vbYes Then
 
JayBhagavan, какие страшные слова)))
 
Цитата
Logistic написал:
Как можно в код добавить  сообщение  если такого пациента нет
Например, так.
 
Спасибо,то что надо Вы как всегда на высоте. :D
Еще вопрос : как выделить текущую строку  из базы данных. Когда выбрали необходимые данные , что бы выделялась стока с теми данными ,что в листбоксе.
 
Цитата
Logistic написал:
что бы выделялась стока с теми данными ,что в листбоксе.
В ЛистБоксе может быть несколько строк. На листе следует выделить ту, по которой кликнули в ЛистБоксе?
 
 Да.
На листе следует выделить ту, по которой кликнули в ЛистБоксе
 
Тогда я бы добавил ещё один столбец в ListBox и сделал этот столбец скрытым. В примере это первый столбец. В него будем заносить номер строки листа (получится что-то вроде ID записи), чтобы потом легко можно было обращаться к нужным записям.
 
Юрий М, все на  наивысшем уровне!!!Спасибо.  :D
 
Здравствуйте. Для меня оказалось готовое решение. Огромное спасибо Юрию М. и всем форумчанам за Вашу помощь и советы :)
Страницы: 1
Наверх