Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Выполнение процедуры (Excel)  [new]
Нович
Member

Откуда:
Сообщений: 58
Доброе время суток All

Есть процедура которая нумерует получепнный из вьюшки результат и бъёт его n-цать частей:
create procedure Excel
            @Dn int
As
create table #Excel
(

            idn int IDENTITY(1,1),
            pr char(24) not null,
            num char(31) null,
            nam char(32) null,
)
Insert into #Excel (pr,num, nam) 
select pr,num, nam from Excel_view 
order by pr
select * from  #Excel where idn between 1+(@Dn-1)*65535 and @Dn*65535
drop table #Excel 
go
grant exec on Excel_liz to b
Худо бедно она справляется со своей задачей, проблема с выводом на клиенте (Excel)
    Dim server As String:   server = "s"
    Dim UserId As String:   UserId = "b"
    Dim Passwo As String:   Passwo = "1"
    
    Dim con As adodb.Connection
    Dim rst, rs As adodb.Recordset
    Dim cmd As adodb.Command
    
    Set con = New adodb.Connection
    Set rs = New adodb.Recordset
    Set cmd = New adodb.Command
     
    con.Open "Provider=SQLOLEDB;Persist Security Info=False;Password=" & Passwo & ";User ID=" & UserId & ";Data Source=" & server
    Set cmd.ActiveConnection = con
    cmd.CommandText = "b.excel_liz 6"
    cmd.CommandType = adCmdStoredProc
    [color=red]Set rst = cmd.Execute[/color]

на выделенном: Ошибка синтаксиса или наруш прав доступа
15 июн 09, 13:46    [7300057]     Ответить | Цитировать Сообщить модератору
 Re: Выполнение процедуры (Excel)  [new]
Ken@t
Member

Откуда: 大地
Сообщений: 3264
Нович
Доброе время суток All
==>create procedure Excel
[/src]Худо бедно она справляется со своей задачей, проблема с выводом на клиенте (Excel)
 cmd.CommandText = "b.excel_liz 6"
на выделенном: Ошибка синтаксиса или наруш прав доступа

ЭТО ч0 ?
1 правильно обратиться к ХП
2 использовать параметры
15 июн 09, 13:50    [7300095]     Ответить | Цитировать Сообщить модератору
 Re: Выполнение процедуры (Excel)  [new]
Нович
Member

Откуда:
Сообщений: 58
Ken@t

1 правильно обратиться к ХП
2 использовать параметры


Можно подробнее по 2-му пункту?
15 июн 09, 14:18    [7300282]     Ответить | Цитировать Сообщить модератору
 Re: Выполнение процедуры (Excel)  [new]
Ken@t
Member

Откуда: 大地
Сообщений: 3264
с первым уже разобрались ? и теперь правильно указываете схемы при создании и обращении ?
со вторым ещё проще - достаточно открыть msdn, там белым по чёрному
ms-help://MS.VSCC.v90/MS.MSDNQTR.v90.en/wd_adonet/html/7d8e9a46-1af6-4a02-bf61-969d77ae07e0.htm
15 июн 09, 14:34    [7300391]     Ответить | Цитировать Сообщить модератору
 Re: Выполнение процедуры (Excel)  [new]
Нович
Member

Откуда:
Сообщений: 58
Ken@t
со вторым ещё проще - достаточно открыть msdn, там белым по чёрному
ms-help://MS.VSCC.v90/MS.MSDNQTR.v90.en/wd_adonet/html/7d8e9a46-1af6-4a02-bf61-969d77ae07e0.htm

msdn нет в наличии, что искать?
15 июн 09, 14:44    [7300459]     Ответить | Цитировать Сообщить модератору
 Re: Выполнение процедуры (Excel)  [new]
Ken@t
Member

Откуда: 大地
Сообщений: 3264
SqlParamters
15 июн 09, 14:53    [7300529]     Ответить | Цитировать Сообщить модератору
 Re: Выполнение процедуры (Excel)  [new]
caper
Member

Откуда: Москва
Сообщений: 418
типа так:

        With cmd
            .ActiveConnection = con
            .CommandType = adCmdStoredProc
            .CommandText = "b.excel_liz"
            .NamedParameters = True
            .Parameters("@Dn") = 6
            .Execute
        End With
15 июн 09, 15:02    [7300596]     Ответить | Цитировать Сообщить модератору
 Re: Выполнение процедуры (Excel)  [new]
Нович
Member

Откуда:
Сообщений: 58
caper
типа так:
        With cmd
            .ActiveConnection = con
            .CommandType = adCmdStoredProc
            .CommandText = "b.excel_liz"
            .NamedParameters = True
            .Parameters("@Dn") = 6
            .Execute
        End With


Взглянув сюда перед select into добавил в процедуре set nocount on
Рекордсет заполняется строкой:
 rs.Open cmd
MsgBox (rs.RecordCount) выдаёт -1
15 июн 09, 15:53    [7300936]     Ответить | Цитировать Сообщить модератору
 Re: Выполнение процедуры (Excel)  [new]
Нович
Member

Откуда:
Сообщений: 58
caper

        With cmd
            .ActiveConnection = con
            .CommandType = adCmdStoredProc
            .CommandText = "b.excel_liz"
            .NamedParameters = True
            .Parameters("@Dn") = 6
            .Execute
        End With


А как узнать, ещё до передачи в рекордсет вернёт ли cmd что-нибудь или нет?
15 июн 09, 16:46    [7301287]     Ответить | Цитировать Сообщить модератору
 Re: Выполнение процедуры (Excel)  [new]
Glory
Member

Откуда:
Сообщений: 104760
Нович
caper

        With cmd
            .ActiveConnection = con
            .CommandType = adCmdStoredProc
            .CommandText = "b.excel_liz"
            .NamedParameters = True
            .Parameters("@Dn") = 6
            .Execute
        End With


А как узнать, ещё до передачи в рекордсет вернёт ли cmd что-нибудь или нет?

Изобрести машину для перемещения во времени.
15 июн 09, 16:50    [7301309]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить