Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / храним проц / 12 сообщений из 12, страница 1 из 1
09.11.2004, 16:36:34
    #32774002
big-duke
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
храним проц
Чо то я туплю после праздников
Есть хр проц, вызывается через Command и кладется в курсор.
и чо то непойму : можно ли узнать кол-во записей в курсоре и absoluteposition ?
Спасибо
...
Рейтинг: 0 / 0
09.11.2004, 17:09:09
    #32774114
PA
PA
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
храним проц
Используй клиентский курсор...
...
Рейтинг: 0 / 0
10.11.2004, 01:07:19
    #32774544
Magnus23
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
храним проц
В смысле курсор на сервере в другой хранимке?

Magnus
...
Рейтинг: 0 / 0
10.11.2004, 10:48:07
    #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
10.11.2004, 10:57:20
    #32774942
big-duke
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
храним проц
2Magnus
нет, курсор в смысле ADODB.Recordset
...
Рейтинг: 0 / 0
10.11.2004, 11:10:20
    #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
10.11.2004, 11:37:55
    #32775069
big-duke
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
храним проц
мда, вообще бред какой-то.
после выполнения Execute CursorLocation - Server,CursorType - Forward.
Может я не так вызываю Execute ?
...
Рейтинг: 0 / 0
10.11.2004, 11:59:15
    #32775127
храним проц
после выполнения Execute CursorLocation - Server,CursorType - Forward.
Может я не так вызываю Execute ?


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

или использовать recordset.open
...
Рейтинг: 0 / 0
10.11.2004, 12:07:27
    #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
10.11.2004, 12:48:42
    #32775283
MVN
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
10.11.2004, 13:27:48
    #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
10.11.2004, 15:31:18
    #32775731
big-duke
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
храним проц
СПАСИБО ВСЕМ !!!
Connection.CursorLocation =adUseClient - не знал
...
Рейтинг: 0 / 0
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / храним проц / 12 сообщений из 12, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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