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

Форум: MS ACCESS

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

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

 
 

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

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

тема: Странно, но факт.
 
 автор: час   (31.08.2011 в 08:25)   личное сообщение
 
 

У меня до сих пор нет в арсенале функции проверки - пуста ли таблица. (ACCESS 2003)
Подкиньте идей. И нюансы.

  Ответить  
 
 автор: kot_k_k   (31.08.2011 в 09:01)   личное сообщение
 
 

EOF

  Ответить  
 
 автор: час   (31.08.2011 в 09:24)   личное сообщение
 
 

Хорошая идея, но много кода перед EOF
ПоЛУЧАЕТся

Public Function FUN_FREE_TABLE( STR_TABLE_NAME as string ) As Boolean
' проверка таблицы на пустоту
' Если  FUN_FREE_TABLE = True - таблица пуста
Dim db As Database
Dim RST As Recordset
Set db = CurrentDb
' предположим занято...
FUN_FREE_TABLE = False 
' -----------------
On error goto NAFIG

' проверяем
Set RST = db.OpenRecordset( STR_TABLE_NAME, dbOpenDynaset)
If RST.EOF Then FUN_FREE_TABLE =True

Exit Function
 NAFIG:

End  Function

  Ответить  
 
 автор: kot_k_k   (31.08.2011 в 09:50)   личное сообщение
 
 

а можно вопрос - зачем оно?
зачастую (очень) рекордсет обрабатывается циклом поставь
Do While rst.Eof=False
Loop
и всё либо будеть робить либо пойдёть дальше.

  Ответить  
 
 автор: час   (31.08.2011 в 09:52)   личное сообщение
 
 

Ды нет, мне не для этого.
Мне - что бы пользователю сказать - что "СВОБОДЕН...."
И при нажатии на кнопку - проверить стоит ли огород городить или сразу из события нажатия кнопки выйти.

If  FUN_FREE_TABLE = True Then exit sub

If  FUN_FREE_TABLE = True Then Msgbox "А ты сначала заполни таблу, а уж потом....." 

  Ответить  
 
 автор: kot_k_k   (31.08.2011 в 10:05)   личное сообщение
 
 

ну так это стандартный интерфейс общения с ......., проверяй по функции и фсё, конечно мона поиздеваться - вывести пустую форму/отчет, а потома уточнить "ФИг вам товарищЪ!"

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

есть вот вариант вычитал в инете

$result=mysql_query('select * from vasha_tablica');

Переменная $num хранит количество записей в таблице или 0 если она пустая.

  Ответить  
 
 автор: Дядя Федор   (31.08.2011 в 10:08)   личное сообщение
 
 

dcount=0

  Ответить  
 
 автор: kot_k_k   (31.08.2011 в 10:13)   личное сообщение
 
 

час - хоть круть верть, хоть верть круть. тебе от запроса и обработкой яго не отвертеться.

  Ответить  
 
 автор: Анатолий (Киев)   (31.08.2011 в 10:15)   личное сообщение
 
 

А если так?
i = CurrentDB.TableDefs("ИмяТаблицы").RecordCount

  Ответить  
 
 автор: Силblч   (31.08.2011 в 10:19)   личное сообщение
 
 

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

Попробовать так?!
If  CurrentDB.TableDefs("ИмяТаблицы").RecordCount <>0 then ...

If  CurrentDB.TableDefs("Имя_Запроса").RecordCount <>0 then ...

  Ответить  
 
 автор: Дядя Федор   (31.08.2011 в 12:41)   личное сообщение
 
 

Создать отчет. Анализировать Nodata

  Ответить  
 
 автор: Анатолий (Киев)   (31.08.2011 в 13:09)   личное сообщение
 
 

Для запроса это не подойдет.
Можно так:

If  Not CurrentDB.OpenRecordset("Имя_Запроса/Таблицы").BOF then ...

  Ответить  
 
 автор: Дядя Федор   (31.08.2011 в 13:21)   личное сообщение
 
 

А чем плохо:

Public Function bTblIsNull(sTblNname$) As Boolean
bTblIsNull = (DCount("*", sTblNname) = 0)
End Function

Public Sub tst1()
Debug.Print bTblIsNull("t1")
End Sub

  Ответить  
 
 автор: час   (31.08.2011 в 13:25)   личное сообщение
 
 


If  Not CurrentDB.OpenRecordset("Имя_Запроса/Таблицы").BOF then 


Вот это здорово!!!
Типа если нет начала у таблицы, то и нету у таблицы и конца!!
Спасибо Анатолий!

  Ответить  
 
 автор: час   (31.08.2011 в 13:27)   личное сообщение
 
 

Спасибо всем, откликнувшимся.
Public Function FUN_FREE_TABLE(STR_TABLE_NAME As String) As Boolean
' проверка таблицы/запроса на пустоту - на отсутствие записей
' Если  FUN_FREE_TABLE = True - таблица пуста
' -----------------
On Error GoTo NAFIG

' проверяем
 If Not CurrentDb.OpenRecordset(STR_TABLE_NAME).BOF Then FUN_FREE_TABLE = True

Exit Function
NAFIG:

End Function

  Ответить  
 
 автор: Explorer   (31.08.2011 в 18:14)   личное сообщение
 
 

слишком многословно :)

  Ответить  
 
 автор: Анатолий (Киев)   (31.08.2011 в 18:22)   личное сообщение
 
 

Вместо:

 If Not CurrentDb.OpenRecordset(STR_TABLE_NAME).BOF Then FUN_FREE_TABLE = True 

Короче и красивше так:

 FUN_FREE_TABLE = CurrentDb.OpenRecordset(STR_TABLE_NAME).BOF   


А чем плохо DCount? Можно, но она віполняется дольше, т.к. должна посчитать кол-во записей, а здесь это не надо.

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

ААААААА - да, точно и то и другое Boolean
---------------------
Но тада отсутствие таблицы - не обработается.

  Ответить  
 
 автор: Анатолий (Киев)   (31.08.2011 в 19:58)   личное сообщение
 
 


Но тада отсутствие таблицы - не обработается.


А вы об этом и не спрашивали.
Хотя, если добавить On Error Resume Next, то функция, ИМХО, вернет False

  Ответить  
 
 автор: Дядя Федор   (31.08.2011 в 19:04)   личное сообщение
 
 

Согласен. Можно еще "SELECT TOP 1 ..." и recordcount.
Но уже есть ваше хорошее решение...

  Ответить  
 
 автор: час   (01.09.2011 в 09:04)   личное сообщение
 
 


Ваще то во как нужно
Public Function FUN_FREE_TABLE(STR_TABLE_NAME As String) As Boolean
' проверка таблицы/запроса на пустоту - на отсутствие записей
' Если  FUN_FREE_TABLE = True - таблица пуста
' ----------------------------------------------------------
On Error Resume Next
     FUN_FREE_TABLE = False
   If CurrentDb.OpenRecordset(STR_TABLE_NAME).EOF Then FUN_FREE_TABLE = True
  Exit Function
 If CurrentDb.OpenRecordset(STR_TABLE_NAME).RecordCount = 0 Then FUN_FREE_TABLE = True
End Function

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