powered by simpleCommunicator - 2.0.56     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Excell, ADO
6 сообщений из 6, страница 1 из 1
Excell, ADO
    #32689441
diml
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Вызываю в макросе процедуру из MsSQL2000, которая возвращает три набора.
(Проверял в QueryAnalyzer)
но ADO мне пишет ошибку :
Код: plaintext
1.
2.
     Err: 3704
     "Operation not allowed when the object is closed"
Т.е. как я понял она мне ничего не вернула.
Может я что не так делаю?
Вот кусок макроса:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
Dim Connection As ADODB.Connection
Dim AdoCommand As ADODB.Command
Set Connection = New ADODB.Connection

Connection.CursorLocation = adUseClient
   
 'Инф по соединению 
Dim User As String
Dim Pass As String
Dim BD As String
User = Range("E3").Value
Pass = Range("F3").Value
BD = Range("G3").Value

    Connection.CommandTimeout =  5 
    Connection.Provider = "SQLOLEDB"
    Connection.ConnectionString = "Provider=SQLOLEDB;User ID=" & User & ";Password=" & Pass & ";Initial Catalog=" & BD & ";Data Source=Folionew"
    Connection.Open

Set AdoCommand = New ADODB.Command
    AdoCommand.CommandTimeout =  120 
    AdoCommand.ActiveConnection = Connection
    AdoCommand.CommandType = adCmdStoredProc
    AdoCommand.CommandText = "dbo.P_DATA_ZP"

     'Описываем параметры процедуры 
    Dim Par1 As ADODB.Parameter
    Dim Par2 As ADODB.Parameter
    Dim Par3 As ADODB.Parameter
    
    Set Par1 = New ADODB.Parameter
    Par1.Name = "STR"
    Par1.Type = adVarChar
    Par1.Size =  1000 
    Par1.Direction = adParamInput
    Par1.Value = Range("E2").Value
    
    Set Par2 = New ADODB.Parameter
    Par2.Name = "PRN"
    Par2.Type = adInteger
    Par2.Direction = adParamInput
    Par2.Value = Val(Range("F2").Value)
    
    Set Par3 = New ADODB.Parameter
    Par3.Name = "vStartDate"
    Par3.Type = adVarChar
    Par3.Size =  20 
    Par3.Direction = adParamInput
    Par3.Value = Range("G2").Value
    
    AdoCommand.Parameters.Append Par1
    AdoCommand.Parameters.Append Par2
    AdoCommand.Parameters.Append Par3
    
    Dim RS1 As ADODB.Recordset
    Set RS1 = AdoCommand.Execute
    Range("E1").Value = RS1.RecordCount

Народ подскажите где ошибка! Я уже не знаю где копать.
...
Рейтинг: 0 / 0
Excell, ADO
    #32689551
Фотография Лох Позорный
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А кто тебя надоумил переменную типа Connection назвать Connection?
Как по твоему VB должен разбираться во всех этих Conntection'ах?
...
Рейтинг: 0 / 0
Excell, ADO
    #32689755
Фотография big-duke
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
автор
Dim RS1 As ADODB.Recordset
Set RS1 = AdoCommand.Execute

Dim RS1 As new ADODB.Recordset
...
Рейтинг: 0 / 0
Excell, ADO
    #32689860
diml
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
2 Лох Позорный :
С Connection вроде проблем небыло но для чистоты эксперимента переназвал переменную - непомогло, таже ошибка: RecordSet is closed.

2 big-duke:
Попробовал и так, непомогло, таже ошибка: RecordSet is closed.
...
Рейтинг: 0 / 0
Excell, ADO
    #32690751
Фотография Victosha
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dimlВызываю в макросе процедуру из MsSQL2000, которая возвращает три набора.
(Проверял в QueryAnalyzer)
но ADO мне пишет ошибку :
Код: plaintext
1.
2.
     Err: 3704
     "Operation not allowed when the object is closed"
Т.е. как я понял она мне ничего не вернула.
Может я что не так делаю?
Вот кусок макроса:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
 ' <...> 

    Connection.Provider = "SQLOLEDB"
    'вот в это строке не надо Provider=SQLOLEDB  
    'или предыдущая не нужна 
    Connection.ConnectionString = "Provider=SQLOLEDB;User ID=" & User & ";Password=" & Pass & ";Initial Catalog=" & BD & ";Data Source=Folionew"

 '<...> 
     'после этой строки проверь состояние - оно open? 
    Connection.Open

    '   <...>   

   'по всему судя ошибка в этой строке - перепиши как     Set AdoCommand.ActiveConnection = Connection 
    AdoCommand.ActiveConnection = Connection
 <...>



Народ подскажите где ошибка! Я уже не знаю где копать.
...
Рейтинг: 0 / 0
Excell, ADO
    #32693044
diml
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
2 Victosha:
Спасибо все заработало. У-у-у-х.
...
Рейтинг: 0 / 0
6 сообщений из 6, страница 1 из 1
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Excell, ADO
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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