Неправильно считает рекордкаунт

z0dium
Дата: 26.12.2011 02:00:59
Помогите разобраться. Есть форма в которой задается критерий для поиска аналогично фильтру "Содержит..". Почему RecordCount возвращает 1, хотя удовлетворяющих записей больше?

Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
Private Sub Кнопка11_Click()


Dim stLinkCriteria3 As String
Dim sSQL As DAO.Recordset

'Проверяю пусто ли поле по которому собираюсь искать совпадения
If Me![Кадастр] <> "" Then
'Если нет - проверяю на наличие записей удовлетворяющих запросу
    Set sSQL = CurrentDb.OpenRecordset("SELECT * " & _
                                        "FROM tbl_Main " & _
                                        "WHERE ((tbl_Main.Кадастр) Like '*" & Me![Кадастр] & "*')")
'Если таких записей нет - предупреждение
    If sSQL.RecordCount = 0 Then
        
        DoCmd.Beep
        If MsgBox("Совпадений не найдено. Повторить?", vbQuestion + vbYesNo, "Ошибка открытия!") = vbYes Then

            DoCmd.OpenForm "frm_Search"
        Else

            DoCmd.Close acForm, "frm_Search", acSaveNo
        End If
        
        
    Else
'Если только 1 совпадение - то в виде формы в одном представлении
        If sSQL.RecordCount = 1 Then
            stLinkCriteria3 = "кадастр like '*" & Me![Кадастр] & "*'"
            DoCmd.OpenForm "frm_Main", acFormDS, , stLinkCriteria3
        Else
'Ксли больше чем 1, то открываем в виде таблицы
            If sSQL.RecordCount > 1 Then
                stLinkCriteria3 = "кадастр like '*" & Me![Кадастр] & "*'"
                DoCmd.OpenForm "frm_Main", acFormDS, , stLinkCriteria3
            Else
            End If
        End If
    
    End If
    
Else
    DoCmd.Beep
    If MsgBox("Пустое поле. Повторить запрос?", vbQuestion + vbYesNo, "Ошибка открытия!") = vbYes Then
        
       DoCmd.OpenForm "frm_Search"
    Else

       DoCmd.Close acForm, "frm_Search", acSaveNo
    End If
    
End If
'Показывает рекордКаунт запроса
If MsgBox(sSQL.RecordCount, vbOKOnly) = vbOK Then
Else
End If
End Sub
z0dium
Дата: 26.12.2011 02:06:23
Здесь я ставлю открытие как acNormal, просто для отладки оставил табличный вид
'Если только 1 совпадение - то в виде формы в одном представлении
        If sSQL.RecordCount = 1 Then
            stLinkCriteria3 = "кадастр like '*" & Me![Кадастр] & "*'"
            DoCmd.OpenForm "frm_Main", acFormDS, , stLinkCriteria3
        Else
Владимир Саныч
Дата: 26.12.2011 02:31:07
z0dium
        If ... Then
            DoCmd.OpenForm "frm_Search"
        Else
            DoCmd.Close acForm, "frm_Search", acSaveNo
        End If

Непонятно. До этих строчек форма открыта или закрыта? Если открыта, то зачем ее открывать, а если закрыта, то зачем закрывать?

А на Ваш вопрос есть ответ в факе.
alvk
Дата: 26.12.2011 07:16:22
автор
'Если только 1 совпадение - то в виде формы в одном представлении
If sSQL.RecordCount = 1 Then
stLinkCriteria3 = "кадастр like '*" & Me![Кадастр] & "*'"
DoCmd.OpenForm "frm_Main", acFormDS, , stLinkCriteria3
Else
'Ксли больше чем 1, то открываем в виде таблицы
If sSQL.RecordCount > 1 Then
stLinkCriteria3 = "кадастр like '*" & Me![Кадастр] & "*'"
DoCmd.OpenForm "frm_Main", acFormDS, , stLinkCriteria3
Else
End If


Что 1, что больше одного. Найдите 10 отличий
z0dium
Дата: 27.12.2011 21:58:33
Владимир Саныч,

Тут выскакивает окно с вопросом (повторить ввод или нет).
Если нет, то форма закрывается. Если да - то снова открывается.

Но это не суть.

в факе? подскажите точнее, в каком разделе?

alvk,

Я во втором посте отписал, что поставил одинковое содержание на время отладки.
Суть в том, что в случае когда 1 совпадение и когда их больше значение recordcount запроса sSQL всегда = 1
qwerty112
Дата: 27.12.2011 23:47:28
z0dium
в факе? подскажите точнее, в каком разделе?

раздел называется - ФАК / MS Access :)

----
по теме

это наркомания, тянуть на клиента рекордсет со всеми записями (пусть их даже немного)
что бы посчитать количество совпадений !

count() - F1
DCount - F1
Владимир Саныч
Дата: 28.12.2011 01:03:52
z0dium
Тут выскакивает окно с вопросом (повторить ввод или нет).
Если нет, то форма закрывается. Если да - то снова открывается.

Как может открываться форма, которая уже открыта?
Окна да Окна, Око за Око
Дата: 28.12.2011 01:19:47
Владимир Саныч
z0dium
Тут выскакивает окно с вопросом (повторить ввод или нет).
Если нет, то форма закрывается. Если да - то снова открывается.

Как может открываться форма, которая уже открыта?


Скорее всего, закрывается окно с вопросом, а открытая форма появляется на виду сама.
EvAnd
Дата: 28.12.2011 01:50:20
qwerty112

это наркомания,...


Где-то я
об этом читал... :-)
Владимир Саныч
Дата: 28.12.2011 02:37:36
Окна да Окна, Око за Око
а открытая форма появляется на виду сама.

Разумеется. Вопрос, зачем в программе написано DoCmd.OpenForm.