Excel -> сохраненная процедура MS SQL Server ?

Работа VB и СУБД (Access, MSSQL, MySQL, Oracle и пр.)
Правила форума
При создании новой темы не забывайте указывать используемую СУБД.
Зелёный
Новичок
Новичок
 
Сообщения: 33
Зарегистрирован: 25.06.2003 (Ср) 15:52
Откуда: Russia

Excel -> сохраненная процедура MS SQL Server ?

Сообщение Зелёный » 03.07.2003 (Чт) 18:23

Здравствуйте!
Подскажите пожалуйста, как работать из Excel с сохраненной процедурой MS SQL Server-a? Подключил я ADODB, соединился с MS SQL Server, а дальше что? Никогда ранее не сталкивался с работой VB->СУБД, а посему извините за ламерский вопрос.
Заранее всем благодарен....

Зелёный
Новичок
Новичок
 
Сообщения: 33
Зарегистрирован: 25.06.2003 (Ср) 15:52
Откуда: Russia

Сообщение Зелёный » 04.07.2003 (Пт) 11:44

Господа!
Никто не знает, как из VB обращаться к сохраненной процедуре на сервере? :?:
Я горю!!!

Dantes
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 153
Зарегистрирован: 19.10.2002 (Сб) 14:46
Откуда: Russia

Сообщение Dantes » 04.07.2003 (Пт) 17:02

Код: Выделить всё
    Dim cnnSQL As New ADODB.Connection
    Dim rsSQL As ADODB.Recordset
    Dim cmdSQL As New ADODB.Command

    cnnSQL.Open strSQLCnnString '< - коннекшн стринг к базе
    cmdSQL.CommandText = SQLStoredProcedureName '< - имя хранимой процедурки
    cmdSQL.CommandType = adCmdStoredProc
    cmdSQL.ActiveConnection = cnnSQL
    Set rsSQL = cmdSQL.Execute

Только на сколько я помню, коннект к базе надо осуществлять посредством ODBC - драйвера...

Зелёный
Новичок
Новичок
 
Сообщения: 33
Зарегистрирован: 25.06.2003 (Ср) 15:52
Откуда: Russia

Сообщение Зелёный » 04.07.2003 (Пт) 17:09

Спасибо большое! :)

Cyrax
Cyberninja
Cyberninja
Аватара пользователя
 
Сообщения: 891
Зарегистрирован: 25.04.2002 (Чт) 21:20
Откуда: Magnitogorsk, Russia

Сообщение Cyrax » 04.07.2003 (Пт) 17:12

Dantes писал(а):
Код: Выделить всё
    Dim cnnSQL As New ADODB.Connection
    ......

Только на сколько я помню, коннект к базе надо осуществлять посредством ODBC - драйвера...

зачем...? чтоб сильнее тормозило? в ADO есть родной провайдер для MS SQL Server
называется он Microsoft OLE DB Provider for SQL Server
для свойства ADODB.Connection.Provider нужно указывать строку SQLOLEDB.1
Ты это ему расскажи. Я уже пять болтов отвинтил, и конца не видно... (озадаченно) А это в какую сторону тянуть? Ну-ка... Ага, этот был лишний, этот вообще не отсюда, и этот... Точно, два болта.

Welcome to IRC

Dantes
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 153
Зарегистрирован: 19.10.2002 (Сб) 14:46
Откуда: Russia

Сообщение Dantes » 04.07.2003 (Пт) 17:18

Cyrax писал(а):зачем...? чтоб сильнее тормозило? в ADO есть родной провайдер для MS SQL Server
называется он Microsoft OLE DB Provider for SQL Server

Ну не отработает хранимка через OLE DB провайдер, НЕ ОТРАБОТАЕТ... :evil: Если покажешь маленький кусочек рабочего кода, запускающего хранимую процедуру и коннектящийся к БД через OLE DB, буду благодарен за просветление.... У меня в своё время такая проблема была, получилось решить её только, когда стал коннектиться к базе через ODBC. Ну понятно, версия MDAC должна быть также соответствующей...

Зелёный
Новичок
Новичок
 
Сообщения: 33
Зарегистрирован: 25.06.2003 (Ср) 15:52
Откуда: Russia

Сообщение Зелёный » 04.07.2003 (Пт) 17:38

Я тут эту проблему решил немного иначе, но через ОLE DB
Работающий пример (это, правда VBA Excel):
1) Connect
Код: Выделить всё
Public cnnMSSQL As ADODB.Connection
Public dbOpen As Boolean

Sub ConnectToServer()
         
         Dim DBName As String
         Dim ServerName As String
         Dim UserName As String
         Dim UserPassword As String
         
         DBName = Range("BB3").Value
         ServerName = Range("BB2").Value
         UserName = Range("BB4").Value
         UserPassword = Range("BB5").Value
           
         Dim ConnectStr As String
     
         ConnectStr = ""
     
        'Формирование строки соединения
         ConnectStr = ConnectStr & "Provider=SQLOLEDB;"
         ConnectStr = ConnectStr & "Initial Catalog=" + DBName + ";"
         ConnectStr = ConnectStr & "Data Source=" & ServerName & ";"
         If ConnectionLogin Then
            ConnectStr = ConnectStr & "User Id=" & UserName & ";"
            ConnectStr = ConnectStr & "Password=" & UserPassword & ";"
         End If

        'Соединяемся с БД
         Set cnnMSSQL = New ADODB.Connection
        On Error GoTo DBConnectNot
         
         If ConnectionLogin Then
            cnnMSSQL.Open ConnectionString:=ConnectStr
         Else
            cnnMSSQL.Open ConnectionString:=ConnectStr,    UserID:=UserName, Password:=UserPassword
         End If
         dbOpen = True
         GoTo Ends
DBConnectNot:
         dbOpen = False
          ' здесь код на ошибку
Ends:
End Sub


2) Disconnect
Код: Выделить всё
Private Sub Workbook_BeforeClose(Cancel As Boolean)
     If dbOpen = True Then
           cnnMSSQL.Close
           dbOpen = False
           Set cnnMSSQL = Nothing
     End If
End Sub

3) Пример работы с простенькой конкретной Созраненной процедурой на удаление одной строки
Код: Выделить всё
Sub DeleteTablesRow(ByVal Finplanmonth_id As Integer)
  If dbOpen = False Then
     MsgBox "Нет соединения с базой данных ."
     Exit Sub
  End If

  Dim SQL As String
  SQL = "Exec dbo.p_FINPLANMONTH_self_delete " & Finplanmonth_id
  cnnMSSQL.Execute (SQL)
  On Error Resume Next
End Sub


Все работает!!!! :D

Cyrax
Cyberninja
Cyberninja
Аватара пользователя
 
Сообщения: 891
Зарегистрирован: 25.04.2002 (Чт) 21:20
Откуда: Magnitogorsk, Russia

Сообщение Cyrax » 04.07.2003 (Пт) 17:47

мдя...
пока искал... уже ответили...
я думаю коментарии излишни...
Ты это ему расскажи. Я уже пять болтов отвинтил, и конца не видно... (озадаченно) А это в какую сторону тянуть? Ну-ка... Ага, этот был лишний, этот вообще не отсюда, и этот... Точно, два болта.

Welcome to IRC


Вернуться в Базы данных

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 218

    TopList  
cron