Гость
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Как узнать количество строк результата выполнения запроса / 23 сообщений из 23, страница 1 из 1
13.07.2011, 20:05
    #37350563
Macro
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как узнать количество строк результата выполнения запроса
Добрый вечер.

Подскажите пожалуйста как из VBA узнать сколько строк возвращает запрос, который так же выполняется из VBA.

Запрос формируется на основе выбранной записи из списка на форме
MySql = "SELECT T1.ID, T2.ID, T2.Name FROM T1 INNER JOIN T2 ON T1.ID = T2.T1Id WHERE T1.ID =" & Me.Spisok.Column(0, Me.Spisok.ItemsSelected)
MyCounter = CurrentProject.Connection.Execute(MySql).RecordCount

К сожалению, в результате -1 (

Помогите.
...
Рейтинг: 0 / 0
13.07.2011, 21:00
    #37350601
studieren
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как узнать количество строк результата выполнения запроса
Перед "RecordCount" надо было использовать метод "MoveLast".


Код: plaintext
1.
2.
3.
4.
5.
MySql = "SELECT T1.ID, T2.ID, T2.Name FROM T1 INNER JOIN T2 ON T1.ID = T2.T1Id WHERE T1.ID =" & _
    Me.Spisok.Column( 0 , Me.Spisok.ItemsSelected)
With CurrentProject.Connection.Execute(MySql)
    .MoveLast
    MyCounter = .RecordCount
End With
...
Рейтинг: 0 / 0
13.07.2011, 21:00
    #37350602
mds_world
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как узнать количество строк результата выполнения запроса
Код: plaintext
MyCounter = UBound(CurrentProject.Connection.Execute(MySql).GetRows,  2 ) +  1 
...
Рейтинг: 0 / 0
13.07.2011, 22:01
    #37350627
Macro
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как узнать количество строк результата выполнения запроса
Огромное спасибо!
...
Рейтинг: 0 / 0
13.07.2011, 22:42
    #37350653
Guest33
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как узнать количество строк результата выполнения запроса
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
?currentproject.Connection.Execute("select * from t").RecordCount   
- 1  
?currentproject.AccessConnection.Execute("select * from t").RecordCount   
  3  
?currentproject.Connection.CursorLocation =adUseServer 
True
?currentproject.AccessConnection.CursorLocation =adUseClient 
True
...
Рейтинг: 0 / 0
13.07.2011, 23:18
    #37350678
Macro
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как узнать количество строк результата выполнения запроса
Спасибо всем за ответы.
А существует ли возможность перебрать значения записей запроса по одному или нескольким полям?

То есть у меня в запросе получилось три записи. Нужно циклом их перебрать и выполнить определенные действия с каждой записью определенного поля или групы полей прямо в цикле.

Можно ли это делать в VBA без использования контролов на форме (например того же списка) или еще чего подобного?
...
Рейтинг: 0 / 0
13.07.2011, 23:34
    #37350688
Владимир Саныч
Модератор форума
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как узнать количество строк результата выполнения запроса
movenext F1
...
Рейтинг: 0 / 0
14.07.2011, 00:21
    #37350748
Macro
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как узнать количество строк результата выполнения запроса
Владимир Санычmovenext F1

Спасибо, хотя F1 у меня несколько криво помогает ((, но остальной интернет не подкачал.

Пришел к такому решению.

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
    Set db = CurrentDb
    Set rst = db.OpenRecordset(MySql)
    rst.MoveFirst
    Coma = False
    While Not rst.EOF
        If Coma Then
            Perecheni = Perecheni & ", "
        End If
        Perecheni = Perecheni & rst.Fields( 1 )
        rst.MoveNext
        Coma = True
    Wend
               
    Set rst = Nothing

Может кривовато, но работает.
...
Рейтинг: 0 / 0
14.07.2011, 00:29
    #37350761
nord-woolf
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как узнать количество строк результата выполнения запроса
Macro,
ADODB.Recordset метод GetString
...
Рейтинг: 0 / 0
14.07.2011, 09:18
    #37350959
Macro
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как узнать количество строк результата выполнения запроса
nord-woolfMacro,
ADODB.Recordset метод GetString

Только вот у меня даже тут:
Dim Rst As ADODB.Recordset

стопорится (

"User-Defined type not defined"
ЧТо я ему не прописал не пойму, у всех работает, а мой что то не хочет (
...
Рейтинг: 0 / 0
14.07.2011, 10:06
    #37351014
BrykAlien
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как узнать количество строк результата выполнения запроса
...
Рейтинг: 0 / 0
14.07.2011, 10:17
    #37351032
Macro
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как узнать количество строк результата выполнения запроса
BrykAlien,

Подключал и 2.8 и 6.0 - не работает.
У меня акс 2010
...
Рейтинг: 0 / 0
14.07.2011, 10:20
    #37351043
Macro
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как узнать количество строк результата выполнения запроса
MacroBrykAlien,

Подключал и 2.8 и 6.0 - не работает.
У меня акс 2010

Все таки запустил. Спасибо.

Кстати есть разница использовать версию 2.8 иили 6.0
Я в том смысле, чего будет достаточно
...
Рейтинг: 0 / 0
14.07.2011, 10:20
    #37351044
ё
ё
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как узнать количество строк результата выполнения запроса
MacroBrykAlien,

Подключал и 2.8 и 6.0 - не работает.
У меня акс 2010
и при подключенной библиотеке - такая же ошибка ?
автор"User-Defined type not defined"
...
Рейтинг: 0 / 0
14.07.2011, 10:22
    #37351046
Macro
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как узнать количество строк результата выполнения запроса
ёMacroBrykAlien,

Подключал и 2.8 и 6.0 - не работает.
У меня акс 2010
и при подключенной библиотеке - такая же ошибка ?
автор"User-Defined type not defined"

Да, выдавал и при включенной ((
наверное глюк был
...
Рейтинг: 0 / 0
14.07.2011, 10:30
    #37351061
Macro
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как узнать количество строк результата выполнения запроса
А что скажете по поводу
"Невозможно использование подключения для выполнения операции. Оно закрыто или не допускается в данном контексте"

Код: plaintext
1.
Dim rs As New ADODB.Recordset
rs.Open MySql

на строке rs.Open MySql

запрос самый простой
видел еще в одной теме такую ошибку, там так и не решили
...
Рейтинг: 0 / 0
14.07.2011, 10:37
    #37351073
ё
ё
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как узнать количество строк результата выполнения запроса
MacroА что скажете по поводу
"Невозможно использование подключения для выполнения операции. Оно закрыто или не допускается в данном контексте"

Код: plaintext
1.
Dim rs As New ADODB.Recordset
rs.Open MySql

на строке rs.Open MySql

запрос самый простой
видел еще в одной теме такую ошибку, там так и не решили
вы параметры у rs.Open посмотрели бы сначала ...
rs.Open MySql, CurrentProject.Connection, ...
...
Рейтинг: 0 / 0
14.07.2011, 10:45
    #37351088
BrykAlien
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как узнать количество строк результата выполнения запроса
Пример...
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
Dim RS As ADODB.Recordset
Set RS = New ADODB.Recordset
RS.ActiveConnection = CurrentProject.Connection
RS.Source = "<SQL>"
RS.Open
While Not RS.EOF
    DoEvents
    RS.MoveNext
Wend
RS.Close
Set RS = Nothing
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
26.07.2018, 17:22
    #39679780
Rikozenit
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как узнать количество строк результата выполнения запроса
mds_world
Код: vbnet
1.
MyCounter = UBound(CurrentProject.Connection.Execute(MySql).GetRows, 2) + 1


Отлично считает кол-во строк в запросе, но только, если их >0.
Если запрос не содержит строк, то выдаёт ошибку:
bof или eof имеет значение true либо текущая запись удалена. Для выполнения операции требуется текущая запись.

Мой код условно:
Код: vbnet
1.
2.
SQL = "SELECT ФИО from Сотрудники where Дата_рождения Is Not Null"
l = UBound(CurrentProject.Connection.Execute(SQL).GetRows, 2) + 1


Подскажите, как перехватить состояние отсутствия строк в отчёте?
...
Рейтинг: 0 / 0
26.07.2018, 19:00
    #39679835
alecko
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как узнать количество строк результата выполнения запроса
Код: vbnet
1.
2.
3.
4.
5.
dim Prov
Prov=DCount("[ФИО]","Сотрудники","[Дата_рождения] Is Not Null")
If nz(Prov,0)=0 then
' отловили как отсутствие строк вообще, так и отсутствие строк удовлетворяющих критерию
end if

,
в отчете есть событие Nodata
...
Рейтинг: 0 / 0
26.07.2018, 19:01
    #39679836
Serg197311
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как узнать количество строк результата выполнения запроса
Создать рекордсет и на EOF его проверить????? Первое что в голову пришло.....
...
Рейтинг: 0 / 0
26.07.2018, 19:10
    #39679843
mds_world
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как узнать количество строк результата выполнения запроса
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
SQL = "SELECT ФИО from Сотрудники where Дата_рождения Is Not Null"
With CurrentProject.Connection.Execute(SQL)
  If Not .EOF And Not .BOF Then 'Проверяем рекордсет на наличие записей
    'Есть данные в рекордсете
    l = UBound(.GetRows, 2) + 1
  Else
    'Пустой рекордсет. Что-то делаем в этом случае
    l=0
  End If
End With
...
Рейтинг: 0 / 0
27.07.2018, 08:46
    #39679983
Rikozenit
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как узнать количество строк результата выполнения запроса
mds_world, спасибо огромное!
А я пробовал что-то похожее написать, но не зная матчасти, конечно, ничего не вышло)
Если есть возможность - ткните где поизучать про вот эти моменты
Код: vbnet
1.
With CurrentProject.Connection.Execute(SQL)

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


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