Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft Access Новый топик    Ответить
 Проверка на пустой запрос!  [new]
tuzz
Member

Откуда: Kiev
Сообщений: 186
День добрый!
Поскажите, плиз, как сделать так если запрос пустой то выйти дальше?
Вот такой кусочек кода:


sql04 = "SELECT NumberDoc, NumberBlank, Surname, Name AS NameMan," _
        & " OtchName, MREV, DateProd, TimeProd, Brak,DateAkt, NumberAkt, adressMREV, Persona, Price"_
        & " FROM docAkt" _
        & " WHERE (((docAkt.MREV)=1104) AND (docAkt.word)=False)"

If sql04 = Nothing Then
Exit Sub
Else
       New_AKT_04
End If

Заранее спасибо!
20 ноя 06, 16:43    [3425651]     Ответить | Цитировать Сообщить модератору
 Re: Проверка на пустой запрос!  [new]
Redrick
Member

Откуда: Питер
Сообщений: 883
Что значит пустой запрос?
Это запрос который возвращает количество записей=0?
Тогда вам надо копать в сторону DCount
20 ноя 06, 16:45    [3425670]     Ответить | Цитировать Сообщить модератору
 Re: Проверка на пустой запрос!  [new]
NikP
Member

Откуда: Владимир
Сообщений: 627
Ну я так думаю, что запрос рекордсетом открывается?
если да, то RecordCount расскажет тебе все о количестве записей в запросе
20 ноя 06, 16:47    [3425689]     Ответить | Цитировать Сообщить модератору
 Re: Проверка на пустой запрос!  [new]
tuzz
Member

Откуда: Kiev
Сообщений: 186
Redrick
Что значит пустой запрос?
Это запрос который возвращает количество записей=0?
Тогда вам надо копать в сторону DCount

Да количество строк 0.
Как?
20 ноя 06, 16:48    [3425693]     Ответить | Цитировать Сообщить модератору
 Re: Проверка на пустой запрос!  [new]
Redrick
Member

Откуда: Питер
Сообщений: 883
tuzz
Redrick
Что значит пустой запрос?
Это запрос который возвращает количество записей=0?
Тогда вам надо копать в сторону DCount

Да количество строк 0.
Как?

Повторяю выше изложенное:

автор
Ну я так думаю, что запрос рекордсетом открывается?
если да, то RecordCount расскажет тебе все о количестве записей в запросе


или

автор
DCount
20 ноя 06, 16:49    [3425709]     Ответить | Цитировать Сообщить модератору
 Re: Проверка на пустой запрос!  [new]
BULK INSERT
Member

Откуда: Ленинград
Сообщений: 4615
tuzz
Redrick
Что значит пустой запрос?
Это запрос который возвращает количество записей=0?
Тогда вам надо копать в сторону DCount

Да количество строк 0.
Как?


мдя...
20 ноя 06, 16:52    [3425727]     Ответить | Цитировать Сообщить модератору
 Re: Проверка на пустой запрос!  [new]
tuzz
Member

Откуда: Kiev
Сообщений: 186
BULK INSERT
tuzz
Redrick
Что значит пустой запрос?
Это запрос который возвращает количество записей=0?
Тогда вам надо копать в сторону DCount

Да количество строк 0.
Как?


мдя...


есть время и на такие ответы!
20 ноя 06, 16:53    [3425742]     Ответить | Цитировать Сообщить модератору
 Re: Проверка на пустой запрос!  [new]
NikP
Member

Откуда: Владимир
Сообщений: 627
вот простенький пример
    Set MyDb = CurrentDb
    MySQL = "SELECT [Zavod_Zavod] & ' тел:' & [Telephon] AS Zavod FROM tbl_Zavod WHERE (((tbl_Zavod.ID_Zavod)=" & Form_frm_Zakaz.V_Zavod & "))"
    Set TestTable = MyDb.OpenRecordset(MySQL)
    TestTable.MoveLast
    If (TestTable.RecordCount > 0) Then
а здесь все что тебе надо
    End If

    TestTable.Close
    MyDb.Close
20 ноя 06, 16:54    [3425743]     Ответить | Цитировать Сообщить модератору
 Re: Проверка на пустой запрос!  [new]
tuzz
Member

Откуда: Kiev
Сообщений: 186
NikP
вот простенький пример
    Set MyDb = CurrentDb
    MySQL = "SELECT [Zavod_Zavod] & ' тел:' & [Telephon] AS Zavod FROM tbl_Zavod WHERE (((tbl_Zavod.ID_Zavod)=" & Form_frm_Zakaz.V_Zavod & "))"
    Set TestTable = MyDb.OpenRecordset(MySQL)
    TestTable.MoveLast
    If (TestTable.RecordCount > 0) Then
а здесь все что тебе надо
    End If

    TestTable.Close
    MyDb.Close


Огромное спасибо! Получилось!
20 ноя 06, 17:18    [3425915]     Ответить | Цитировать Сообщить модератору
 Re: Проверка на пустой запрос!  [new]
Ёжик`
Member

Откуда:
Сообщений: 5992
tuzz
NikP
вот простенький пример
    Set MyDb = CurrentDb
    MySQL = "SELECT [Zavod_Zavod] & ' тел:' & [Telephon] AS Zavod FROM tbl_Zavod WHERE (((tbl_Zavod.ID_Zavod)=" & Form_frm_Zakaz.V_Zavod & "))"
    Set TestTable = MyDb.OpenRecordset(MySQL)
    TestTable.MoveLast
    If (TestTable.RecordCount > 0) Then
а здесь все что тебе надо
    End If

    TestTable.Close
    MyDb.Close


Огромное спасибо! Получилось!

Ошибку поймать как нефиг делать
Dim sql as String, rs as RecordSet
sql = "SELECT .... ;" 'Тута сформированная строка запроса
Set rs = CurrentDB.OpenRecordset(sql)
If not rs.EOF Then
    а здесь все что тебе надо
End If
rs.Close
Set rs = Nothing
20 ноя 06, 19:24    [3426551]     Ответить | Цитировать Сообщить модератору
 Re: Проверка на пустой запрос!  [new]
Vadim108
Member

Откуда:
Сообщений: 46
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, почему???????????????
21 ноя 06, 14:20    [3429838]     Ответить | Цитировать Сообщить модератору
 Re: Проверка на пустой запрос!  [new]
rok
Member

Откуда: Краснодар
Сообщений: 310
Vadim108
у меня не работает, если значение скопировать строки sSql в конструктор запросов, то записей больше 0, а rs.RecordCount=0, почему???????????????

RecordCount не возвращает число записей до обращения к последней записи Recordsetа
Только после MoveLast RecordCount становится равным числу записей.
21 ноя 06, 14:45    [3430004]     Ответить | Цитировать Сообщить модератору
 Re: Проверка на пустой запрос!  [new]
Vadim108
Member

Откуда:
Сообщений: 46
ставлю movelast, movenext,movefirst

непомогло
21 ноя 06, 14:57    [3430089]     Ответить | Цитировать Сообщить модератору
 Re: Проверка на пустой запрос!  [new]
rok
Member

Откуда: Краснодар
Сообщений: 310
Vadim108
ставлю movelast, movenext,movefirst

непомогло

у метода Requery есть один необязательный аргумент "новыйЗапрос" - может дело в нем?
Вот выдержка из Helpа
Синтаксис
наборЗаписей.Requery новыйЗапрос
Метод Requery нельзя применять к объектам Recordset типа динамических или статических
наборов записей, у которых свойство Restartable имеет значение False.  
Однако если указан необязательный аргумент новыйЗапрос, 
то свойство Restartable игнорируется.
Весь Help процитировать не могу
Свойство Restartable по умолчанию False, а необязательный аргумент не указан
21 ноя 06, 15:58    [3430662]     Ответить | Цитировать Сообщить модератору
 Re: Проверка на пустой запрос!  [new]
Vadim108
Member

Откуда:
Сообщений: 46
без requery тоже не работает
21 ноя 06, 16:01    [3430690]     Ответить | Цитировать Сообщить модератору
 Re: Проверка на пустой запрос!  [new]
Karfaqen
Member

Откуда:
Сообщений: 7010
Вот так работает правильно?:
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)
21 ноя 06, 16:09    [3430767]     Ответить | Цитировать Сообщить модератору
 Re: Проверка на пустой запрос!  [new]
kah2
Member

Откуда: Москва
Сообщений: 53
Vadim108
ставлю movelast, movenext,movefirst

непомогло


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

If RecordCount = ...


On Error'ы нужны, если на самом деле число записей равно 0, чтобы при Move'ах не делал ошибки
21 ноя 06, 16:41    [3431038]     Ответить | Цитировать Сообщить модератору
 Re: Проверка на пустой запрос!  [new]
kah2
Member

Откуда: Москва
Сообщений: 53
ой, надо так

If rs.RecordCount = ...
21 ноя 06, 16:43    [3431050]     Ответить | Цитировать Сообщить модератору
 Re: Проверка на пустой запрос!  [new]
ILL HEAD
Member [заблокирован]

Откуда:
Сообщений: 8498
возможно я БАНален
но мувы при отсутствии записей сильно ругаются
идите туда куда вас посылают
21 ноя 06, 16:50    [3431125]     Ответить | Цитировать Сообщить модератору
 Re: Проверка на пустой запрос!  [new]
kah2
Member

Откуда: Москва
Сообщений: 53
ILL HEAD
возможно я БАНален
но мувы при отсутствии записей сильно ругаются
идите туда куда вас посылают


Повторяю для особо нервных и невнимательных:
On Error'ы нужны, если на самом деле число записей равно 0, чтобы при Move'ах не делал ошибки
21 ноя 06, 16:57    [3431183]     Ответить | Цитировать Сообщить модератору
 Re: Проверка на пустой запрос!  [new]
LeonM
Member

Откуда: Bayern, Deutschland
Сообщений: 598
Function NumRec(qname As String) As Long
    Dim rs As New ADODB.Recordset
    rs.Open "SELECT Count(*) AS n FROM " & qname & ";", CurrentProject.Connection, adOpenDynamic, adLockReadOnly
    NumRec = rs!n
    rs.Close
End Function
21 ноя 06, 17:31    [3431464]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft Access Ответить