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

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
11.04.2017, 11:41
    #39436393
xax_nv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
число записей и RecordCount
Код: 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
11.04.2017, 11:42
    #39436395
xax_nv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
число записей и RecordCount
Хотел выделить красным добавленные строчки, не получилось. :(
...
Рейтинг: 0 / 0
11.04.2017, 12:48
    #39436436
__Michelle
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
число записей и RecordCount
TauriКак узнать число записей в таблице?
Код: vbnet
1.
ch = CurrentDb.OpenRecordset("SELECT Count(*) FROM Таблица1").Fields(0)
...
Рейтинг: 0 / 0
11.04.2017, 12:52
    #39436440
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
число записей и RecordCount
TauriНадо посчитать число записей в таблице.
Код: vbnet
1.
2.
Dim ch As Long
ch = CurrentDb.OpenRecordset("SELECT COUNT(*) AS cnt FROM Таблица1")!cnt
...
Рейтинг: 0 / 0
11.04.2017, 13:55
    #39436514
sdku
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
число записей и RecordCount
Об этом уже говорилось (выдержка из HELP) :
Свойство RecordCount используется для определения числа записей объекта Recordset или TableDef, к которым проводилось обращение. Свойство RecordCount не показывает, сколько записей содержится в динамическом или статическом объекте Recordset до обращения ко всем записям. После обращения к последней записи набора значение свойства RecordCount становится равным полному числу неудаленных записей в объекте Recordset или TableDef. Для принудительного обращения к последней записи следует вызвать для объекта Recordset метод MoveLast. Кроме того, определить примерное число записей, которые будут возвращены в запросе, позволяет функция Count языка SQL.
Непонятно почему не использовать: ch=Dcount("*","таблица1")
...
Рейтинг: 0 / 0
11.04.2017, 14:27
    #39436541
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
число записей и RecordCount
sdkuНепонятно почему не использовать: ch=Dcount("*","таблица1")Собственно, будет выполнен тот же самый запрос - SELECT Count(*) FROM Таблица1. Причём даже при обращении к таблице внутри самОй БД - во всяком случае файл трейса так утверждает.
...
Рейтинг: 0 / 0
11.04.2017, 14:48
    #39436556
Tauri
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
число записей и RecordCount
xax_nv, __Michelle, Akina, sdku

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

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

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

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

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


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

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


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

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

прим.: таблица состоит из 1 поля, куда и добавляется вновь-сгенерированное (в шаге1.) случайное число.
...
Рейтинг: 0 / 0
12.04.2017, 09:41
    #39437024
Odess
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
число записей и RecordCount
По первому вопросу - нужно всего лишь добавить 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
12.04.2017, 10:18
    #39437064
__Michelle
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
число записей и RecordCount
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
12.04.2017, 11:22
    #39437147
Tauri
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
число записей и RecordCount
__Michelle,

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


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