Есть таблица, в ней нужно провести поиск по нескольким полям. При этом одно поле зависит от другого. Как это сделать указано в это примере (..\15 Формы\la_from.accdb\02. Поиск по нескольким полям).
'==============================================================
' Поиск по дате
Private Sub Дата_AfterUpdate()
Dim rst As Recordset, frm As Form
On Error GoTo 999
Set frm = Me.формаПоиск.Form 'Выбираем форму
Set rst = frm.RecordsetClone 'Выбираем таблицу
rst.FindFirst "([Дата]=#" Format(Me.Дата, "mm\/dd\/yyyy") "#)"
If rst.NoMatch = False Then
frm.Bookmark = rst.Bookmark
Me.Книга = rst!Книга
Else
MsgBox "Нет данных!"
End If
Exit Sub
999:
MsgBox Err.Description vbNewLine "Введите правильно данные?"
End Sub
'==============================================================
' Начать поиск после обновления
Private Sub Книга_AfterUpdate()
recordFind
End Sub
'==============================================================
' Поиск по дате и книге
Private Sub recordFind()
Dim rst As Recordset, frm As Form, s As String
On Error GoTo 999
Set frm = Me.формаПоиск.Form 'Выбираем форму
Set rst = frm.RecordsetClone 'Выбираем таблицу
s = "([Дата]=#" Format(Me.Дата, "mm\/dd\/yyyy") _
"#) and (Книга='" Me.Книга "')"
rst.FindFirst s
If rst.NoMatch = False Then
frm.Bookmark = rst.Bookmark
Else
MsgBox "Нет данных!"
End If
Exit Sub
999:
MsgBox "Введите правильно данные?"
End Sub
'==============================================================
' Поиск по шаблону
Private Sub Шаблон_AfterUpdate()
Dim rst As Recordset, frm As Form, s As String
On Error GoTo 999
Set frm = Me.формаПоиск.Form 'Выбираем форму
Set rst = frm.RecordsetClone 'Выбираем таблицу
rst.FindFirst "([Книга] Like '" Me.Шаблон "')=True"
If rst.NoMatch = False Then
frm.Bookmark = rst.Bookmark
Else
MsgBox "Нет данных!"
End If
Exit Sub
999:
MsgBox "Введите правильно данные?"
End Sub
'==============================================================
' Запрос по книге
Private Sub Книга_Enter()
Me.Книга.RowSource = "SELECT Книга FROM [1-Мои книги] WHERE (((Дата)=[Forms]![Example 01]![Дата]));"
'Me.Книга.Requery 'Изменить запрос
End Sub
Сторнирование - это возврат денежных средств, отображается красным цветом. Смотрите как это можно сделать из VBA (..\15 Формы\la_from.accdb\01. Сторнирование бухгалтерских операций)
With [Form_Пример 01 пдч].Сумма
.Format = "0.00;0.00[Red]" 'Красный цвет в поле
End With
02. Есть таблица, в ней нужно провести поиск по нескольким полям. При этом задача должна решаться так, ввели 1 символ, таблица изменилаcь и показала все записи, где есть эта фраза (..\15 Формы\la_from.accdb\03. Контекстный поиск)
Option Compare Binary
Option Explicit
'Option Compare Text
'***************************************************************
' 3. Пример. Как создать контекстный поиск в Access
' (смотрите также пример 2) ?
'***************************************************************
'==============================================================
' Открытие формы
Private Sub Form_Open(Cancel As Integer)
Me.myFind3.Form.RecordSource = "SELECT Книга FROM [1-Мои книги]"
End Sub
'==============================================================
' Поиск с отбором книг
Private Sub myBooks_Change()
Dim s As String
s = Me.myBooks.Text 'Определяем текст
With Me.myFind3.Form 'Выбираем форму
If Len(s) 0 Then
s = " WHERE Left([Книга]," Len(s) ") = '" s "'"
Else
s = ";"
End If
.RecordSource = "SELECT Книга FROM [1-Мои книги]" s
.Requery 'Меняем запрос
End With
End Sub
'==============================================================
' Контекстный поиск по книге
Private Sub Books_Change()
Dim rst As Recordset, frm As Form, s As String
On Error GoTo 999
Set frm = Me.myFind3.Form 'Выбираем форму
Set rst = frm.RecordsetClone 'Выбираем таблицу
rst.FindFirst "([Книга] Like '" Me.Books.Text "*')=True"
If rst.NoMatch = False Then
frm.Bookmark = rst.Bookmark
End If
Exit Sub
999:
MsgBox "Введите правильно данные?"
End Sub