powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Кол-во записей в запросе, как быстрее?
17 сообщений из 17, страница 1 из 1
Кол-во записей в запросе, как быстрее?
    #32065034
Sfagnum
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Есть SQL выражение сформированное в VBA типа "SELECT DISTINCT ... FROM ... WHERE ... ;" надо проверить пустой этот запрос или нет. Просто проверить я могу, но хотелось бы узнать мнение специалистов по поводу - какой из методов самый быстрый применительно к Access97.

Таблицы могут быть прилинкованы, линкуются dbf, MS Access и MS SQL 2000 таблицы, а также используется свои родные, не то чтобы всё зараз, но вариации бывают.

Заранее благодарен,
Sfagnum.
...
Рейтинг: 0 / 0
Кол-во записей в запросе, как быстрее?
    #32065178
Фотография Zenia
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я делаю так:
Msgbox CurrentDB.OpenRecordset("SELECT DISTINCT ... FROM ... WHERE ... ;").RecordCount
...
Рейтинг: 0 / 0
Кол-во записей в запросе, как быстрее?
    #32065181
sFx_2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
через рекордсет. пример:
Set rst=openrecordset("SQL_STRING")
if rst.eof then

end if
...
Рейтинг: 0 / 0
Кол-во записей в запросе, как быстрее?
    #32065200
ДиД
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
для собственных быстрее и проще будет dcount() или dlookup()
для прилинкованных
if not(rst.eof and rst.bof) then
здесь есть хоть одна запись
end if
хотя можете проверить сами, что будет быстрее.
RecordCount работает правильно только в однопользовательской среде.
...
Рейтинг: 0 / 0
Кол-во записей в запросе, как быстрее?
    #32065208
Sfagnum
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Протестил оба варианта с помощью способа показанного здесь вариант
Код: plaintext
CurrentDB.OpenRecordset( "SELECT DISTINCT ... FROM ... WHERE ... ;" ).RecordCount
работает у меня быстрее
...
Рейтинг: 0 / 0
Кол-во записей в запросе, как быстрее?
    #32065217
ДиД
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Пардон, я все время забываю про DAO. То, что я написал, относилось к ADO. Еще раз повторюсь: надо все проверять, т.к. время выполнения разными способами у всех было разное. У одних работало одно быстрее, у других - другое. тоже в свое время делал замеры выбирал, что быстрее. через какое-то время опять проводил эксперименты и почему-то все было по-другому.
...
Рейтинг: 0 / 0
Кол-во записей в запросе, как быстрее?
    #32065221
Sfagnum
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
То ДиД

Насколько я в курсе dcount() & dlookup() не работает непосредственно с SQL строкой, если я плохо осведомлён покажите пожалуста как это сделать.

и ещё вопросик, я в теории слабоват в коленках, я пишу клиента для конкретного человека, на серваке все таблички, которыми пользуется разный народ, какая у меня среда - однопользовательская или как?
...
Рейтинг: 0 / 0
Кол-во записей в запросе, как быстрее?
    #32065376
ДиД
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
dcount("[Код]","Таблица","[Таблица]![Название]=Forms!Форма1!Поле1") то же самое и для dlookup. Условия могут быть более сложными, но все точно такое же как и в запросе.
По второму вопросу у Вас многопользовательская.
...
Рейтинг: 0 / 0
Кол-во записей в запросе, как быстрее?
    #32065455
Sfagnum
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Насчёт dcount, получается так:
Код: plaintext
CurrentDb.CreateQueryDef  "Temp" , SQLStr

потом считаем DCount'ом
Код: plaintext
CurrentDb.QueryDefs.Delete  "Temp" 

Я Вас правильно понял?
...
Рейтинг: 0 / 0
Кол-во записей в запросе, как быстрее?
    #32065471
ДиД
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
последний вопрос вообще не понял.
...
Рейтинг: 0 / 0
Кол-во записей в запросе, как быстрее?
    #32065533
Sfagnum
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дело в том, что где то там в начале я упоминал, что мне надо узнать есть ли записи в запросе (здесь начинается путанное объяснения), но самого запроса ещё в природе не существует есть только SQL строка сгенерированная непосредственно в VBA коде, т.е. насколько я понял для того чтобы посчитать кол-во записей с помощь DCount'а надо сперва создать запрос на основе данной SQL строки.

Просто оветьте прав или нет, если я не прав то покажите как это делается на основе SQL выражения.
...
Рейтинг: 0 / 0
Кол-во записей в запросе, как быстрее?
    #32065554
ДиД
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Что такое запрос? Это то, что Вы хотите выбрать из таблицы. dcount() Вам может выбрать. если он что-то нашел, то значение будет >0. если нет - null.
...
Рейтинг: 0 / 0
Кол-во записей в запросе, как быстрее?
    #32065572
Mel
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Mel
Гость
А SELECT Count(*) FROM Tbl не поможет?
...
Рейтинг: 0 / 0
Кол-во записей в запросе, как быстрее?
    #32065577
Я пользуюсь таким куском:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
Function RecCount(strSQL As String) As Long
' Функция определяет количество полей в заданной таблице
    Dim strWhere As String
    Dim rst As New ADODB.Recordset
    If Nz(strSQL, "") = "" Then
        RecCount = -1
        Exit Function
    End If
    strWhere = "SELECT Count(*) As Total FROM (" & strSQL & ")"
    On Error Resume Next
    rst.Open strWhere, CurrentProject.Connection, adOpenForwardOnly, adLockReadOnly
    If Err.Number <> 0 Then
        RecCount = -1
        Exit Function
    End If
    ' Перейти в конец набора записей и вернуть порядковый номер
    ' текущей записи
    RecCount = Nz(rst.Fields( "Total" ).Value,  0 )
    rst.Close
    Set rst = Nothing
End Function


Жрет все без всяких проблем.
...
Рейтинг: 0 / 0
Кол-во записей в запросе, как быстрее?
    #32065646
Sfagnum
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
To Дмитрий Басовский:

Спасибо, обязательно попробую

То ДиД:

Согласен в простейшем случае оно так, но мне чаще надо использовать несколько таблиц/запросов в качестве ресурса, отсюда и проистекает мой назойливый не совсем понятный вопрос
...
Рейтинг: 0 / 0
Кол-во записей в запросе, как быстрее?
    #32065653
Sfagnum
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
протестил 4 варианта\r
1 место с подовляющим отрывом знимает метод от "Дмитрия Басовского", с одним нюансом CurrentProject я заменил на CurrentDB, т.к. CurrentProject у меня не распознавался возможно из-за того что у меня MS ActiveX Data Objects Library v. 2.5 и ниже\r
\r
2-4 места с небольшой разницей занимают методы в следующе порядке\r
\r
2: \r
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
Function CheckSQKStr2(SQLStr As String) As Boolean\r
Dim rst As Recordset\r
  Set rst = CurrentDb.OpenRecordset(SQLStr)\r
  If Not (rst.EOF And rst.BOF) Then\r
    CheckSQKStr2 = True \'здесь есть хоть одна запись\'\r
  Else\r
    CheckSQKStr2 = False\r
  End If\r
  rst.Close\r
  Set rst = Nothing\r
End Function
\r
3: \r
Код: plaintext
1.
2.
3.
4.
5.
6.
Function CheckSQKStr3(SQLStr As String) As Boolean\r
  If CurrentDb.OpenRecordset(SQLStr).RecordCount >  0  Then\r
    CheckSQKStr3 = True\r
  Else\r
    CheckSQKStr3 = False\r
  End If\r
End Function
\r
4: \r
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
Function CheckSQLStr4(SQLStr As String) As Boolean\r
  CurrentDb.CreateQueryDef  "Temp" , SQLStr\r
  If IsNull(DCount( "[MODEL]" ,  "Temp" )) Then\r
    CheckSQLStr4 = False\r
  Else\r
    CheckSQLStr4 = True\r
  End If\r
  CurrentDb.QueryDefs.Delete  "Temp" \r
End Function
\r
\r
Всем спасибо за оказанную помощь.\r
\r
С уважением\r
Sfagnum
...
Рейтинг: 0 / 0
Кол-во записей в запросе, как быстрее?
    #32065668
Фотография AlexJuice
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
'Функция определяет количество полей в заданной таблице

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


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