powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / храним проц
12 сообщений из 12, страница 1 из 1
храним проц
    #32774002
Фотография big-duke
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Чо то я туплю после праздников
Есть хр проц, вызывается через Command и кладется в курсор.
и чо то непойму : можно ли узнать кол-во записей в курсоре и absoluteposition ?
Спасибо
...
Рейтинг: 0 / 0
храним проц
    #32774114
Фотография PA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Используй клиентский курсор...
...
Рейтинг: 0 / 0
храним проц
    #32774544
Фотография Magnus23
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В смысле курсор на сервере в другой хранимке?

Magnus
...
Рейтинг: 0 / 0
храним проц
    #32774914
Processor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Используй параметр RecordsAffected:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
Execute Method (ADO Connection)
Executes the specified query, SQL statement, stored procedure, or provider-specific text.

Syntax
For a non–row-returning command string:

connection.Execute CommandText, RecordsAffected, Options 
For a row-returning command string:

Set recordset = connection.Execute (CommandText, RecordsAffected, Options)
Return Value
Returns a Recordset object reference.

Parameters
CommandText 
A String value that contains the SQL statement, table name, stored procedure, a URL, or provider-specific text to execute. 
RecordsAffected 
Optional. A Long variable to which the provider returns the number of records that the operation affected. 
...
Рейтинг: 0 / 0
храним проц
    #32774942
Фотография big-duke
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2Magnus
нет, курсор в смысле ADODB.Recordset
...
Рейтинг: 0 / 0
храним проц
    #32774979
Фотография big-duke
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 processor
вот что пишет msdn про RecordsAffected

RecordsAffected does not return the number of records returned by a result-returning query or stored procedure.For this information, use the RecordCount property.

А вот это он пишет про RecordCount

The cursor type of the Recordset object affects whether the number of records can be determined. The RecordCount property will return -1 for a forward-only cursor, the actual count for a static or keyset cursor, and either -1 or the actual count, depending on the data source, for a dynamic cursor.

А что что у меня
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
    Dim RecCount As Long

    Set myApp.Service.gCommand = New ADODB.Command
   
   
   With myApp.Service.gCommand
        Set .ActiveConnection = myApp.Service.gConnection
        .CommandText = "Report3_Ag"
        .CommandType = adCmdStoredProc
        .CommandTimeout =  60 
    End With

    Set rstAg = New ADODB.Recordset
    rstAg.CursorLocation = adUseClient
    rstAg.CursorType = adOpenKeyset
        
    Set rstAg = myApp.Service.gCommand.Execute(RecCount, Array(Direction, _
    Format(StartDate, "YYYYMMDD"), Format(EndDate, "YYYYMMDD")))
Ну и получаю -1 в RecCount и rstAg.RecordCount
Причем перебрал все типы CursorLocation кроме adOpenForwardOnly
...
Рейтинг: 0 / 0
храним проц
    #32775069
Фотография big-duke
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
мда, вообще бред какой-то.
после выполнения Execute CursorLocation - Server,CursorType - Forward.
Может я не так вызываю Execute ?
...
Рейтинг: 0 / 0
храним проц
    #32775127
после выполнения Execute CursorLocation - Server,CursorType - Forward.
Может я не так вызываю Execute ?


там, кажется, надо установить connection.CursorLocation

или использовать recordset.open
...
Рейтинг: 0 / 0
храним проц
    #32775153
Processor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
big-dukeМожет я не так вызываю Execute ?
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
   With cmd 
        .CommandType = adCmdStoredProc
        .CommandText = FP.sp_Name                          '"sp_S_ORG_SelWithMask"
        .Parameters.Refresh      'именно здесь надо ставить Refresh:
        DoEvents                 'и это входит в нек-рое противоречие
    End With                     'с логикой: ведь РЕАЛЬНЫЕ параметры
    cmd( 1 ).Value = s             'sp задаются ПОСЛЕ Refresh!!!
    cmd( 1 ).Size = Len(s)         'Команда подготовлена.
После чего запускаем команду на выполнение.
А здесь и на мой взгляд присутствует несоответствие порядка следования параметров:
Код: plaintext
1.
    Set rstAg = myApp.Service.gCommand.Execute(RecCount, Array(Direction, _
    Format(StartDate, "YYYYMMDD"), Format(EndDate, "YYYYMMDD")))
...
Рейтинг: 0 / 0
храним проц
    #32775283
MVN
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Нужно делать так:
big-dukeА что что у меня
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
    Dim RecCount As Long

    Set myApp.Service.gCommand = New ADODB.Command
   
   
   With myApp.Service.gCommand
        Set .ActiveConnection = myApp.Service.gConnection
'----------------------------------------------------------------------
'Свойства рекордсета не влияют на получение набора записей, а наследуют их
        Set .ActiveConnection.CursorLocation = adUseClient
'----------------------------------------------------------------------
        .CommandText = "Report3_Ag"
        .CommandType = adCmdStoredProc
        .CommandTimeout =  60 
    End With

    Set rstAg = New ADODB.Recordset
    rstAg.CursorLocation = adUseClient
    rstAg.CursorType = adOpenKeyset
        
    Set rstAg = myApp.Service.gCommand.Execute(RecCount, Array(Direction, _
    Format(StartDate, "YYYYMMDD"), Format(EndDate, "YYYYMMDD")))
Ну и получаю -1 в RecCount и rstAg.RecordCount
Причем перебрал все типы CursorLocation кроме adOpenForwardOnly
...
Рейтинг: 0 / 0
храним проц
    #32775396
Фотография ziktuw
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
big-duke Set rstAg = New ADODB.Recordset
rstAg.CursorLocation = adUseClient
rstAg.CursorType = adOpenKeyset

Создался новый рекордсет.

big-duke
Set rstAg = myApp.Service.gCommand.Execute(RecCount, Array(Direction, _
Format(StartDate, "YYYYMMDD"), Format(EndDate, "YYYYMMDD")))

Создался новый рекордсет и ссылка на новый рекордсет присвоилась переменной rstAg. Предыдущий созданный рекордсет похерен вместе со своими настройками.

Либо используй rstAg.Open, либо укажи настройки курсора объектe коннекта до исполнения Execute.
...
Рейтинг: 0 / 0
храним проц
    #32775731
Фотография big-duke
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
СПАСИБО ВСЕМ !!!
Connection.CursorLocation =adUseClient - не знал
...
Рейтинг: 0 / 0
12 сообщений из 12, страница 1 из 1
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / храним проц
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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