powered by simpleCommunicator - 2.0.54     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / число записей и RecordCount
19 сообщений из 19, страница 1 из 1
число записей и RecordCount
    #39436384
Tauri
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Здравствуйте.
Надо посчитать число записей в таблице. Решил использовать конструкцию:

Dim qqq As Database
Dim www As Recordset
Dim ch As Long

Set qqq = CurrentDb
Set www = qqq.OpenRecordset("SELECT*FROM Таблица1")
ch = www.RecordCount
MsgBox ch

Не получилось.
Если записей в таблице нет, то результат всегда ноль. Всё ок.
Но, если записи в таблице есть, то результат (вне зависимости от числа записей) всегда 1. Почему?
Как узнать число записей в таблице?
...
Рейтинг: 0 / 0
число записей и RecordCount
    #39436393
Фотография xax_nv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
Dim qqq As Database
Dim www As Recordset
Dim ch As Long

Set qqq = CurrentDb
Set www = qqq.OpenRecordset("SELECT*FROM Таблица1")
[color=red]www.MoveLast[/color]
ch = www.RecordCount
[color=red]www.MoveFirst[/color]
MsgBox ch
...
Рейтинг: 0 / 0
число записей и RecordCount
    #39436395
Фотография xax_nv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Хотел выделить красным добавленные строчки, не получилось. :(
...
Рейтинг: 0 / 0
число записей и RecordCount
    #39436436
Фотография __Michelle
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
TauriКак узнать число записей в таблице?
Код: vbnet
1.
ch = CurrentDb.OpenRecordset("SELECT Count(*) FROM Таблица1").Fields(0)
...
Рейтинг: 0 / 0
число записей и RecordCount
    #39436440
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
TauriНадо посчитать число записей в таблице.
Код: vbnet
1.
2.
Dim ch As Long
ch = CurrentDb.OpenRecordset("SELECT COUNT(*) AS cnt FROM Таблица1")!cnt
...
Рейтинг: 0 / 0
число записей и RecordCount
    #39436514
Фотография sdku
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Об этом уже говорилось (выдержка из HELP) :
Свойство RecordCount используется для определения числа записей объекта Recordset или TableDef, к которым проводилось обращение. Свойство RecordCount не показывает, сколько записей содержится в динамическом или статическом объекте Recordset до обращения ко всем записям. После обращения к последней записи набора значение свойства RecordCount становится равным полному числу неудаленных записей в объекте Recordset или TableDef. Для принудительного обращения к последней записи следует вызвать для объекта Recordset метод MoveLast. Кроме того, определить примерное число записей, которые будут возвращены в запросе, позволяет функция Count языка SQL.
Непонятно почему не использовать: ch=Dcount("*","таблица1")
...
Рейтинг: 0 / 0
число записей и RecordCount
    #39436541
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sdkuНепонятно почему не использовать: ch=Dcount("*","таблица1")Собственно, будет выполнен тот же самый запрос - SELECT Count(*) FROM Таблица1. Причём даже при обращении к таблице внутри самОй БД - во всяком случае файл трейса так утверждает.
...
Рейтинг: 0 / 0
число записей и RecordCount
    #39436556
Tauri
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
xax_nv, __Michelle, Akina, sdku

Спасибо.
...
Рейтинг: 0 / 0
число записей и RecordCount
    #39436557
Фотография sdku
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Akina,
Да я только о том,что для получения результата,который хочет получить ТС,достаточно одной строчки кода:
Код: vbnet
1.
msgbox "в таблице имеется " & Dcount("*","таблица") & "записей"

(без рекордсета)
...
Рейтинг: 0 / 0
число записей и RecordCount
    #39436648
Tauri
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
sdku,

Я на http://alx-artamonov.narod.ru/index/0-13 читал, что доменные агрегатные ф-ции (Dcount, Dlookup и т.д.) сильно тормозят запросы. Это так?
...
Рейтинг: 0 / 0
число записей и RecordCount
    #39436703
Фотография sdku
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Tauri,
навряд-ли,в данном случае, будет какая-либо ощутимая разница в скорости
грубо говоря: Dcount("*","таблица1")="SELECT Count(*) FROM Таблица1"
вот если использовать третий аргумент функции и в нем доменную функцию-тогда да...
...
Рейтинг: 0 / 0
число записей и RecordCount
    #39436858
Tauri
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
sdku,

Понял. Спасибо.
...
Рейтинг: 0 / 0
число записей и RecordCount
    #39436866
Tauri
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
sdku,

Тогда такой вопрос: у меня есть простой цикл
шаг1. генерируем случайное число
шаг2. проверяем: есть ли это число в [таблица1]![поле1]
шаг3. если есть, то идём в шаг1, если нет, то идём в шаг4
шаг4. записываем это число в [таблица1]![поле1]


Какую функцию (или процедуру) лучше использовать для шага2?
...
Рейтинг: 0 / 0
число записей и RecordCount
    #39436872
Фотография __Michelle
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Tauri....шаг4. записываем это число в [таблица1]![поле1]...Во все записи?
Или в одну определенную (какую именно?) запись?
...
Рейтинг: 0 / 0
число записей и RecordCount
    #39436991
bubucha
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Taurisdku,

Тогда такой вопрос: у меня есть простой цикл
шаг1. генерируем случайное число
шаг2. проверяем: есть ли это число в [таблица1]![поле1]
шаг3. если есть, то идём в шаг1, если нет, то идём в шаг4
шаг4. записываем это число в [таблица1]![поле1]


Какую функцию (или процедуру) лучше использовать для шага2?
на счет "лучше" не скажу, это порсто один из стопицоит варианов
...
Рейтинг: 0 / 0
число записей и RecordCount
    #39437007
Tauri
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
__Michelle,

шаг4. добавляет в таблицу новую запись

прим.: таблица состоит из 1 поля, куда и добавляется вновь-сгенерированное (в шаге1.) случайное число.
...
Рейтинг: 0 / 0
число записей и RecordCount
    #39437024
Odess
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
По первому вопросу - нужно всего лишь добавить 1 строку
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
Dim qqq As Database
Dim www As Recordset
Dim ch As Long

Set qqq = CurrentDb
Set www = qqq.OpenRecordset("SELECT*FROM Таблица1")
www.MoveLast
ch = www.RecordCount
MsgBox ch



Хотя если таблица может быть пустой, то правильнее проверять так:

Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
Dim qqq As Database
Dim www As Recordset
Dim ch As Long

Set qqq = CurrentDb
Set www = qqq.OpenRecordset("SELECT*FROM Таблица1")
If  Not (www.BOF And www.EOF) Then
  www.MoveLast
  ch = www.RecordCount
Else
  ch=0
Endif
MsgBox ch
...
Рейтинг: 0 / 0
число записей и RecordCount
    #39437064
Фотография __Michelle
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Taurisdku,

Тогда такой вопрос: у меня есть простой цикл
шаг1. генерируем случайное число
шаг2. проверяем: есть ли это число в [таблица1]![поле1]
шаг3. если есть, то идём в шаг1, если нет, то идём в шаг4
шаг4. записываем это число в [таблица1]![поле1]


Какую функцию (или процедуру) лучше использовать для шага2?А хотите одним запросом все четыре шага сделать?
Код: sql
1.
2.
3.
4.
INSERT INTO Таблица1
SELECT TOP 1 Func_Rnd() AS поле1
FROM MSysObjects
WHERE Func_nRnd() Not In (SELECT поле1 FROM Таблица1);


И вот такие две вспомогательные функции создайте:
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
Option Compare Database
Option Explicit
Public nRnd As Double

Function Func_Rnd() As Double
 nRnd = Rnd(1)
 Func_Rnd = nRnd
End Function

Function Func_nRnd() As Double
 Func_nRnd = nRnd
End Function
...
Рейтинг: 0 / 0
число записей и RecordCount
    #39437147
Tauri
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
__Michelle,

Классная идея. Спасибо. Я как раз думал об использовании вложенных запросов. Только у меня нет опыта в их создании. А Вы дали хорошую подсказку. Буду разбираться. Спасибо.
...
Рейтинг: 0 / 0
19 сообщений из 19, страница 1 из 1
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / число записей и RecordCount
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]