Guest User

Untitled

a guest
May 27th, 2018
87
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. Dim SString As String
  2. Dim mark As Variant
  3.  
  4. Private Sub Список_пациентов_санатория__поиск_Click()
  5.     Dim cstring As String
  6.     Set SData = New ADODB.Recordset
  7.     SData.CursorLocation = adUseClient
  8.     SData.Open "Select * FROM [Пациенты]", CurrentProject.Connection
  9.  
  10.     cstring = Switch(Список_пациентов_санатория__найти_слово__поле_выбора.Value = "точная фраза", "'", _
  11.                      Список_пациентов_санатория__найти_слово__поле_выбора.Value = "внутри слова", "'%")
  12.     If Not (Список_пациентов_санатория__поле_поиска = "") Then
  13.         cstring = cstring & Список_пациентов_санатория__поле_поиска.Value
  14.  
  15.         cstring = cstring & Switch(Список_пациентов_санатория__найти_слово__поле_выбора.Value = "точная фраза", "'", _
  16.                                    Список_пациентов_санатория__найти_слово__поле_выбора.Value = "внутри слова", "%'")
  17.         If (Список_пациентов_санатория__поиск_по_полю__поле_выбора.Value = "Номер пациента") Or (Список_пациентов_санатория__поиск_по_полю__поле_выбора.Value = "ФИО") Then
  18.             SString = Switch(Список_пациентов_санатория__поиск_по_полю__поле_выбора.Value = "Номер пациента", "[Номер пациента]", _
  19.                              Список_пациентов_санатория__поиск_по_полю__поле_выбора.Value = "ФИО", "[ФИО]")
  20.             SString = SString & " LIKE " & cstring
  21.         End If
  22.         If (Список_пациентов_санатория__поиск_по_полю__поле_выбора.Value = "Дата рождения") Then
  23.            cstring = Список_пациентов_санатория__поле_поиска.Value
  24.             SString = "[Дата рождения]"
  25.             SString = SString & " = " & cstring
  26.         End If
  27.         If (Список_пациентов_санатория__поиск_по_полю__поле_выбора.Value = "Пол") Then
  28.             If (Список_пациентов_санатория__поле_поиска.Value = "М") Or (Список_пациентов_санатория__поле_поиска.Value = "Муж") Then
  29.                 cstring = True
  30.                 SString = "[Пол]"
  31.                 SString = SString & " = " & cstring
  32.             Else
  33.                 If (Список_пациентов_санатория__поле_поиска.Value = "Ж") Or (Список_пациентов_санатория__поле_поиска.Value = "Жен") Then
  34.                     cstring = False
  35.                     SString = "[Пол]"
  36.                     SString = SString & " = " & cstring
  37.                 End If
  38.             End If
  39.         End If
  40.         If (Trim(Список_пациентов_санатория__направление_поиска__поле_выбора.Value = "по возрастанию")) Then
  41.             SData.MoveFirst
  42.             SData.Find SString, 0, adSearchForward
  43.         Else
  44.             SData.MoveLast
  45.             SData.Find SString, 0, adSearchBackward
  46.         End If
  47.         If Not (SData.EOF) Then
  48.             Set Список_пациентов_санатория_.Form.Recordset = SData
  49.         Else
  50.             Список_пациентов_санатория__результат_поиска.Caption = "Пациенты не найдены"
  51.        End If
  52.     Else
  53.         MsgBox "Введите заначение для поиска", vbInformation, "Ошибка"
  54.     End If
  55. End Sub
  56.  
  57. Private Sub Список_пациентов_санатория__поиск_далее_Click()
  58.     If (Trim(Список_пациентов_санатория__направление_поиска__поле_выбора.Value = "по возрастанию")) Then
  59.         If Not (SData.EOF) Then
  60.             mark = SData.Bookmark
  61.             SData.Find SString, 1, adSearchForward, mark
  62.         Else
  63.             MsgBox "Поиск завершен"
  64.         End If
  65.     Else
  66.         If Not (SData.BOF) Then
  67.             mark = SData.Bookmark
  68.             SData.Find SString, 1, adSearchBackward, mark
  69.         Else
  70.             MsgBox "Поиск завершен"
  71.         End If
  72.     End If
  73. End Sub
  74.  
  75. Private Sub Список_пациентов_санатория__поиск_по_полю__поле_выбора_Change()
  76.     If (Список_пациентов_санатория__поиск_по_полю__поле_выбора.Value = "Пол") Or (Список_пациентов_санатория__поиск_по_полю__поле_выбора.Value = "Дата рождения") Then
  77.         Список_пациентов_санатория__найти_слово__поле_выбора.Value = "точная фраза"
  78.         Список_пациентов_санатория__найти_слово__поле_выбора.Enabled = False
  79.     Else
  80.         Список_пациентов_санатория__найти_слово__поле_выбора.Enabled = True
  81.     End If
  82. End Sub
  83.  
  84. Private Sub Form_Load()
  85.     Set SData = New ADODB.Recordset
  86.     SData.CursorLocation = adUseClient
  87.     SData.Open "Select * FROM [Пациенты]", CurrentProject.Connection
  88.     Set Список_пациентов_санатория__форма.Form.Recordset = SData
  89. End Sub
  90.  
  91. --------------------------------------------- тут функция фильтрации -------------------------------
  92. Private Function GetDateSexFilter() As String
  93.     Dim DateFilter As String, SexFilter As String
  94.     SexFilter = "True"
  95.     If (Список_пациентов__дата_рождения_с_начало.Value <> "") Then
  96.         DateFilter = DateFilter & " AND [Пациенты].[Дата рождения] >= #" & _
  97.             Format(Список_пациентов__дата_рождения_с_начало.Value, "mm\/dd\/yy") & "#"
  98.     End If
  99.     If (Список_пациентов__дата_рождения_по_конец.Value <> "") Then
  100.         DateFilter = DateFilter & " AND [Пациенты].[Дата рождения] <= #" & _
  101.             Format(Список_пациентов__дата_рождения_по_конец.Value, "mm\/dd\/yy") & "#"
  102.     End If
  103.     Select Case Trim(Список_пациентов__пол_пациента.Value)
  104.         Case "Муж"
  105.             SexFilter = SexFilter & " AND Пол = True"
  106.         Case "Жен"
  107.             SexFilter = SexFilter & " AND Пол = False"
  108.     End Select
  109.     GetDateSexFilter = SexFilter & DateFilter
  110. End Function
  111.  
  112. ' Сброс данных
  113. Private Sub Список_пациентов__сброс_Click()
  114.     ' Очистка элементов
  115.    Список_пациентов__дата_рождения_с_начало.SetFocus
  116.     Список_пациентов__дата_рождения_с_начало.Text = ""
  117.     Список_пациентов__дата_рождения_по_конец.SetFocus
  118.     Список_пациентов__дата_рождения_по_конец.Text = ""
  119.     Список_пациентов__пол_пациента.SetFocus
  120.     Список_пациентов__пол_пациента.Text = ""
  121.     ' Восстановление данных
  122.    Список_пациентов_санатория_.Form.Filter = ""
  123.     Список_пациентов_санатория_.Form.FilterOn = False
  124. End Sub
  125.  
  126. ' Применение фильтра
  127. Private Sub Список_пациентов__фильтр_Click()
  128.     Список_пациентов_санатория_.Form.Filter = GetDateSexFilter
  129.     Список_пациентов_санатория_.Form.FilterOn = True
  130. End Sub
Add Comment
Please, Sign In to add comment