Проверка на пустой запрос!

Vadim108
Дата: 21.11.2006 14:20:48
Dim sSql As String
Dim cnn As ADODB.Connection
Dim rs As ADODB.Recordset
Set cnn = CurrentProject.Connection
Set rs = New ADODB.Recordset

cnn.CursorLocation = adUseClient
sSql = "SELECT Events_term.Name, Events_term.Value, Events_term.id_firm, Events_term.id_firm " & _
        "FROM Events_term WHERE (((Events_term.Value) Like '\\*') AND ((Events_term.id_firm) Is Null));"
rs.Open sSql, cnn, adOpenDynamic, adLockOptimistic
rs.Requery
If rs.RecordCount > 0 Then

у меня не работает, если значение скопировать строки sSql в конструктор запросов, то записей больше 0, а rs.RecordCount=0, почему???????????????
rok
Дата: 21.11.2006 14:45:54
Vadim108
у меня не работает, если значение скопировать строки sSql в конструктор запросов, то записей больше 0, а rs.RecordCount=0, почему???????????????

RecordCount не возвращает число записей до обращения к последней записи Recordsetа
Только после MoveLast RecordCount становится равным числу записей.
Vadim108
Дата: 21.11.2006 14:57:55
ставлю movelast, movenext,movefirst

непомогло
rok
Дата: 21.11.2006 15:58:20
Vadim108
ставлю movelast, movenext,movefirst

непомогло

у метода Requery есть один необязательный аргумент "новыйЗапрос" - может дело в нем?
Вот выдержка из Helpа
Синтаксис
наборЗаписей.Requery новыйЗапрос
Метод Requery нельзя применять к объектам Recordset типа динамических или статических
наборов записей, у которых свойство Restartable имеет значение False.  
Однако если указан необязательный аргумент новыйЗапрос, 
то свойство Restartable игнорируется.
Весь Help процитировать не могу
Свойство Restartable по умолчанию False, а необязательный аргумент не указан
Vadim108
Дата: 21.11.2006 16:01:33
без requery тоже не работает
Karfaqen
Дата: 21.11.2006 16:09:48
Вот так работает правильно?:
Dim SQL$
Dim db As DAO.Database
Dim ds As DAO.Recordset

SQL = "SELECT ... FROM ... WHERE ..."
Set db = CurrentDb
Set ds = db.OpenRecordset(SQL)

ds.MoveLast
Msgbox CStr(ds.RecordCount)
kah2
Дата: 21.11.2006 16:41:52
Vadim108
ставлю movelast, movenext,movefirst

непомогло


Всегда делаю так и все работает:
On Error Resume Next
rs.MoveFirst
rs.MoveLast
rs.MoveFirst
On Error Goto 0

If RecordCount = ...


On Error'ы нужны, если на самом деле число записей равно 0, чтобы при Move'ах не делал ошибки
kah2
Дата: 21.11.2006 16:43:32
ой, надо так

If rs.RecordCount = ...
ILL HEAD
Дата: 21.11.2006 16:50:35
возможно я БАНален
но мувы при отсутствии записей сильно ругаются
идите туда куда вас посылают
kah2
Дата: 21.11.2006 16:57:19
ILL HEAD
возможно я БАНален
но мувы при отсутствии записей сильно ругаются
идите туда куда вас посылают


Повторяю для особо нервных и невнимательных:
On Error'ы нужны, если на самом деле число записей равно 0, чтобы при Move'ах не делал ошибки