Rambler's Top100
Форум: MS ACCESSVBVBA MS OfficeMS SQL server
Новые сообщения: 0000

Форум: MS ACCESS

Вопросы связанные с MS ACCESS

Обновить визитку
Участники «Online»
Все участники

 
 

Доброго времени суток, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: имеются ли записи
 
 автор: час   (31.03.2010 в 16:15)   личное сообщение
 
 

Для тог, что бы проверить наличие повторяющихся записей использую

Set rst = New ADODB.Recordset
' проверка одинаковых названий префиксов
rst.Open "SELECT First(MAGAZINE_LIST_TBL.PREFICS) AS [PREFICS поле], Count(MAGAZINE_LIST_TBL.PREFICS) AS Повторы " _
& " From MAGAZINE_LIST_TBL " _
& " GROUP BY MAGAZINE_LIST_TBL.PREFICS " _
& " HAVING (((Count(MAGAZINE_LIST_TBL.PREFICS))>1))", GLB_CLIENT_CONNECTION, adOpenKeyset, adLockOptimistic
If rst.RecordCount <> 0 Then Msgbox "Имеются одинаковые ..."


Как вы считаете почему порою rst.RecordCount - врёт

  Ответить  
 
 автор: час   (31.03.2010 в 16:18)   личное сообщение
 
 

или вот вариант

Dim rst_NUMBER As ADODB.Recordset

FUN_VERIFICATION_NUMBER_CARD = True

Set rst_NUMBER = New ADODB.Recordset

rst_NUMBER.Open "SELECT CLIENT_CARDS_TBL.* " _
& " From CLIENT_CARDS_TBL " _
& " Where (((CLIENT_CARDS_TBL.NUMBER_CARD) = '" & STR_NUMBER_CARD & "'))", GLB_CLIENT_CONNECTION, adOpenKeyset, adLockOptimistic

If rst_NUMBER.RecordCount = 0 Then
    FUN_VERIFICATION_NUMBER_CARD = False
End If



То же самое

  Ответить  
 
 автор: kot_k_k   (31.03.2010 в 16:22)   личное сообщение
 
 


Свойство RecordCount используется для определения числа записей объекта Recordset или TableDef, к которым проводилось обращение.
Свойство RecordCount НЕ ПОКАЗЫВЕАТ, сколько записей содержится в динамическом или статическом объекте Recordset до обращения ко всем записям.
После обращения к последней записи набора значение свойства RecordCount становится равным полному числу неудаленных записей в объекте Recordset или TableDef.
Для принудительного обращения к последней записи следует вызвать для объекта Recordset метод MoveLast.



ты опять все забыл

  Ответить  
 
 автор: час   (31.03.2010 в 16:28)   личное сообщение
 
 

Научный подход - круто

http://www.firststeps.ru/vba/vbahelp/daohelp/r.php?104

=========================
Тока ты лучше на пальцах пояснил бы.
Я запросом выбираю записи и хочу узнать - хотяба одна запись имеется(мне не важно количество) по результатам выборки......
Если имеется - результат = True
Если записей нет - результат = False

  Ответить  
 
 автор: kot_k_k   (31.03.2010 в 16:40)   личное сообщение
 
 

продолжаем разговор:


Свойства BOF и EOF используют для проверки наличия записей в объекте Recordset, а также для сообщения о выходе за пределы объекта при перемещении от записи к записи.

Возвращаемые значения свойств BOF и EOF определяются положением указателя текущей записи.

Если любое из свойств BOF или EOF имеет значение True, текущая запись не определена.



rst.EOF=false - эсть записи
rst.EOF=true - нэт записи

  Ответить  
 
 автор: час   (31.03.2010 в 16:41)   личное сообщение
 
 


продолжаем разговор

  Ответить  
 
 автор: час   (31.03.2010 в 16:44)   личное сообщение
 
 


Если любое из свойств BOF или EOF имеет значение True, текущая запись не определена.


чё
If rst.BOF = true then Msgbox "Записей в рекордсете нету"..... ..
так же как и
If rst.EOF = true then Msgbox "Записей в рекордсете нету"
================================================================
а ты пишешь
rst.EOF=false - эсть записи
rst.EOF=true - нэт записи
а там написано:
любое из свойств BOF или EOF имеет значение True

  Ответить  
 
 автор: kot_k_k   (31.03.2010 в 16:48)   личное сообщение
 
 

ну да,

я больше EOF полюбляю, в основном как условие в Do While ...... Loop

  Ответить  
 
 автор: час   (31.03.2010 в 16:53)   личное сообщение
 
 

А я офигеваю

После удаления последней оставшейся записи объекта Recordset свойства BOF и EOF могут сохранять 
значение False до тех пор, пока не будет предпринята попытка изменить положение указателя текущей записи.

  Ответить  
 
 автор: kot_k_k   (31.03.2010 в 17:07)   личное сообщение
 
 


Любой вызов метода Delete, даже приводящий к удалению последней записи из набора записей, не изменяет значения свойств BOF и EOF.



почему - не знаю
но если сделать Add - Update без
.Bookmark = .LastModified
- то добавленая запись не будет текущей.
возможно ноги растут от сюда или наоборот.

скорее всего во всем "виноват" сам Recordset - т.к. если после его создания изменить источник другим Recordset - он фиг увидит изменения без "перекомутации"

  Ответить  
 
 автор: час   (31.03.2010 в 17:08)   личное сообщение
 
 

Умеете Вы Котт запутывать мну....

  Ответить  
 
 автор: час   (31.03.2010 в 17:10)   личное сообщение
 
 

Я вот уже и не знаю какую функцию писать для проверки по условиям отбора записей - наличие хотя бы одной в возвращаемом наборе ......
==================================
ранее всегда считал, что Recordcount - явный показатель
Если он не равен 0 - тада записи имеются, а если равен 0 - записей нет!!!

  Ответить  
 
 автор: kot_k_k   (31.03.2010 в 17:16)   личное сообщение
 
 

вот для этого и есть EOF и BOF
хотя Recordcount =0 тоже выдает при отсутсвии строк
а как он у тебя получается = 0 если есть строки
а при открытии если строки есть =1

  Ответить  
 
 автор: час   (31.03.2010 в 17:20)   личное сообщение
 
 


а как он у тебя получается = 0 если есть строки

А вот котик - хрен его знает
Я холодным потом покрылся кода он мне два раза подряд сказал - нет такой записи , а на третий раз сказал - есть запись, и коряво так улыбнулся - скотина.

  Ответить  
 
 автор: ДрЮня   (31.03.2010 в 17:12)   личное сообщение
 
 

комментарий, корректно писать так:

If rs.EOF And rs.BOF Then
...
end if

  Ответить  
 
 автор: час   (31.03.2010 в 17:17)   личное сообщение
 
 

Привет ДрЮня!
==================
Получается - так сто ли ???

If rs.EOF And rs.BOF Then
Msgbox - "Записей нету!!"
end if 

=============================
Коттт - как считаешь - это вроде выход
Если ни вперёд ни взад записей не видать - тада капец - записей нет.......

  Ответить  
 
 автор: kot_k_k   (31.03.2010 в 17:37)   личное сообщение
 
 

оба свойства проверять стоит если после открытия Recordset могли быть произведены какие либо действия.

если просто открыл - проверил хватает одного.


В рабочей области Microsoft Jet при добавлении записи в пустой объект Recordset, свойство BOF получает значение False, а свойство EOF сохраняет значение True, указывающее, что позиция текущей записи находится в конце объекта Recordset. В рабочей области ODBCDirect оба свойства BOF и EOF получают значение False, указывающее, что позиция текущей записи находится на новой записи.


- возможная жопка - обойти использовать
.Add
.Update
.Bookmark=.LastModified
тогда EOF станет False.

  Ответить  
 
 автор: час   (01.04.2010 в 08:43)   личное сообщение
 
 

А значит, если я правильно понял

If rst.EOF = False And rst.BOF = False Then
Имеются записи
end if

или лучше ??? так...

If Not rst.EOF And Not rst.BOF Then

  Ответить  
HiProg.com - Технологии программирования
Rambler's Top100 TopList