Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Альтернатива CTRL-F на форме / 4 сообщений из 4, страница 1 из 1
22.09.2004, 16:09:17
    #32706929
Svetka_
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Альтернатива CTRL-F на форме
Добрый день!
А кто подскажет, как простым нажатием кнопки на форме вызвать стандартное окошко поиска, вызываемое обычно нажатием Ctrl-F, только чтоб начальные установки в нем были те, которые я задам. Т.е., например, Совпадение: с любой частью поля, поиск в: Имя поля и т.д.
...
Рейтинг: 0 / 0
23.09.2004, 00:04:53
    #32707666
Senin Viktor
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Альтернатива CTRL-F на форме
Самое правильное - написать свою форму и код обработки. Да иначе при правильно построенной бд и нельзя ничего будет найти.
...
Рейтинг: 0 / 0
23.09.2004, 10:11:38
    #32707899
АлексейЕ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Альтернатива CTRL-F на форме
...
Рейтинг: 0 / 0
23.09.2004, 10:16:19
    #32707903
Pavel
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Альтернатива CTRL-F на форме
Согласен с Виктором, родной поиск убогий. Вот к примеру как у меня это выглядит (если искомое не меняется то ищется следующее полное а затем частичное сообщение):
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
Private Sub Search(searchString As String)
    On Error Resume Next
    Static previousSearchString As String, SearchLevel As Byte
    
    If searchString = "" Then Exit Sub
    
    If previousSearchString <> searchString Then
        previousSearchString = searchString
        SearchLevel =  0 
        rs.Sort = SearchFld
    Else
        rs.MoveNext
    End If
    Do While SearchLevel <  3 
        If Find(rs, SearchFld, searchString, SearchLevel) Then
            Where2Search.Bookmark = rs.Bookmark
            Exit Do
        Else
            rs.MoveFirst
            SearchLevel = SearchLevel +  1 
        End If
    Loop
    If SearchLevel =  3  Then Beep
End Sub

Private Function Find(ByRef Recordset As ADODB.Recordset, ByRef FieldName As Variant, ByRef SearchValue As String, ByRef SearchLevel As Byte) As Boolean
    Static FilterStr As String
    Dim IsStrField As Boolean
    
    Select Case rs(SearchFld).Type
        Case adBSTR, adChar, adLongVarChar, adLongVarWChar, adVarChar, adVarWChar, adWChar
            IsStrField = True
        Case Else
            IsStrField = False
    End Select
    
    If IsStrField Then
        Select Case SearchLevel
            Case  0 
                FilterStr = FieldName & " = '" & SearchValue & "'"
            Case  1 
                FilterStr = "(" & FieldName & " Like '" & SearchValue & "%') And (" & FieldName & " <> '" & SearchValue & "')"
            Case  2 
                FilterStr = "(" & FieldName & " Like '%" & SearchValue & "%') And (" & FieldName & " <> '" & SearchValue & "')"
        End Select
        If rs.Filter <> FilterStr Then
            rs.Filter = FilterStr
        Else
            rs.MoveNext
        End If
        If rs.EOF Then
            Find = False
            rs.Filter = ""
            Exit Function
        End If
    End If
    
    Do While Not Recordset.EOF
        Select Case SearchLevel
            Case  0 
                If CStr(rs(FieldName)) = SearchValue Then
                    Find = True
                    Exit Function
                Else
                    Recordset.MoveNext
                End If
            Case  1 
                If (CStr(rs(FieldName)) Like SearchValue & "*") And (CStr(rs(FieldName)) <> SearchValue) Then
                    Find = True
                    Exit Function
                Else
                    Recordset.MoveNext
                End If
            Case  2 
                If (CStr(rs(FieldName)) Like "*" & SearchValue & "*") And (Not CStr(rs(FieldName)) Like SearchValue & "*") And (CStr(rs(FieldName)) <> SearchValue) Then
                    Find = True
                    Exit Function
                Else
                    Recordset.MoveNext
                End If
            End Select
    Loop
    
    Find = False
End Function
...
Рейтинг: 0 / 0
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Альтернатива CTRL-F на форме / 4 сообщений из 4, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]