Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Как вызвать пользовательскую функцию MSSQL из VB? / 14 сообщений из 14, страница 1 из 1
01.08.2006, 14:05
    #33891908
Gwеst
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как вызвать пользовательскую функцию MSSQL из VB?
Код: plaintext
1.
2.
3.
4.
5.
6.
dim cmd as new ADODB.Command
dim i as integer
cmd.ActiveConnection="Driver={SQL Server};Server=Server1;trusted Connection=true;Database=DB1"
cmd.CommandText="myFunc"
cmd.CommandType=cmdStoredProc
'Дальше хочу вызвать функцию и сохранить результат в i
\Помогите пожалуйста
...
Рейтинг: 0 / 0
01.08.2006, 14:15
    #33891962
TIKO
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как вызвать пользовательскую функцию MSSQL из VB?
Dim rs as New ADODB.Recordset


cmd.CommandText="Exec myFunc"
cmd.CommandType=cmdStoredProc
set rs = cmd.Execute
i=rs.Fields(0).Value
попробуй так ,точно не помню
...
Рейтинг: 0 / 0
01.08.2006, 14:20
    #33891984
Gwеst
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как вызвать пользовательскую функцию MSSQL из VB?
Код: plaintext
1.
2.
3.
4.
5.
6.
ALTER  FUNCTION dbo.GetVersion()
RETURNS smallint 
AS
BEGIN
 return ( 1 )
END
Вот такая простая функция, но хотелось бы получить результат не через рекордсет, а чем-нибудь другим способом просто присвоить i результат.
...
Рейтинг: 0 / 0
01.08.2006, 14:37
    #33892056
Барбудас
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как вызвать пользовательскую функцию MSSQL из VB?
1) Посмотрите commandType: нужно выбрать не storedProc, а "простой запрос" (обычно выбирается по умолчанию, если не указано иное).

2) Не помню до-NETскую объектную модель ado (или это dao?). Если для команды есть метод вроде ExecuteScalar (возвращает значение ) то можно текст команды сделать "select dbo.GetVersion()" и выполнить
i= cmd.ExecuteScalar
Если есть только Execute то надо текст команды сделать
"select @param=dbo.GetVersion()"
, добавить output параметр @param
выполнить
cmd.Execute
и прочесть значение параметра.

думаю, так должно получиться.
...
Рейтинг: 0 / 0
01.08.2006, 15:00
    #33892162
Барбудас
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как вызвать пользовательскую функцию MSSQL из VB?
ау? чё-нть получилось?
...
Рейтинг: 0 / 0
01.08.2006, 15:30
    #33892306
HandKot
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как вызвать пользовательскую функцию MSSQL из VB?
пример
Код: 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.
create Procedure sp_Login
(
   @Email varchar( 50 ),
   @Password varchar( 50 ),
   
   @FullName varchar( 100 ) output,
   @UserID int output,
   @ManageCount int output
)
As
   select @UserID =  0 
   select @UserID = UserID, @FullName = FirstName + ' ' + LastName
   from Users
   where Email like @email + '%'
   and password = @Password
      
   -- Exactly one unique user should be found, otherwise fail
   if @@rowcount <>  1 
   begin
      select @UserID =  0 
      return
   end
   
   select @ManageCount = count(*)
   from Users
   where ManagerID = @UserID

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
    Dim cmd As New ADODB.Command
    Dim ret As Variant
    
    With cmd
        .ActiveConnection = dsn
        .CommandType = ADODB.adCmdStoredProc
        .CommandText = "sp_Login"
        .Parameters.Refresh
        .Parameters("@Email").Value = Email
        .Parameters("@Password").Value = Password
        .Execute
        
        UserID = .Parameters("@UserID")
        FullName = .Parameters("@FullName")
        ManageCount = .Parameters("@ManageCount")
    End With
...
Рейтинг: 0 / 0
01.08.2006, 15:37
    #33892338
Gwеst
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как вызвать пользовательскую функцию MSSQL из VB?
метода ExecuteScalar нет;
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
ALTER  FUNCTION dbo.GetVersion(@Parm as smallint)
RETURNS smallint 
AS
BEGIN
 set @Parm= 1 
 return (@Parm)
END
---------
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
Sub dd()
Dim cmd As New ADODB.Command
Dim Pp As New ADODB.Parameter
Dim i As Integer
cmd.ActiveConnection = "Driver={SQL Server};Server=.;trusted Connection=true;Database=DB1"
cmd.CommandText = "dbo.GetVersion()"
Set Pp = cmd.CreateParameter("@Parm", adSmallInt, adParamInputOutput)
cmd.Parameters.Append Pp
Pp.Value =  5 
cmd.CommandType = adCmdStoredProc
cmd.Execute
'Тут ошибка Syntax error or access violation
...
Рейтинг: 0 / 0
01.08.2006, 15:42
    #33892364
Gwеst
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как вызвать пользовательскую функцию MSSQL из VB?
Выполняю через QA
Код: plaintext
select ST= dbo.GetVersion( 5 )
дает результ 1
но вот через ADO никак не могу
...
Рейтинг: 0 / 0
01.08.2006, 15:47
    #33892396
Gwеst
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как вызвать пользовательскую функцию MSSQL из VB?
Барбудас
help please
...
Рейтинг: 0 / 0
01.08.2006, 16:08
    #33892475
Melkiades
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как вызвать пользовательскую функцию MSSQL из VB?
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
Public Function GetVersion(adocn As ADODB.Connection, Version As Long) As String
    Dim adoRs As New Recordset
    
    On Error GoTo errh

        adoRs.Open "Select dbo.GetVersion(" & Version & ")", adocn, adOpenForwardOnly, adLockReadOnly

    If Not adoRs.EOF Then GetVersion = adoRs.Fields( 0 ).value
    adoRs.Close
    Exit Function
    
errh:
End Function
...
Рейтинг: 0 / 0
02.08.2006, 19:11
    #33895705
Барбудас
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как вызвать пользовательскую функцию MSSQL из VB?
GwеstБарбудас
help please

Если еще не поздно. :)
Вот этот код сработал:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
Sub s()
Dim cmd As New ADODB.Command
Dim i As Integer
cmd.ActiveConnection = "provider=sqloledb.1;Server=.;Database=1;integrated security=SSPI;"
cmd.CommandText = "select ?=dbo.GetVersion()"
cmd.CommandType = adCmdText
cmd.Parameters.Append cmd.CreateParameter("@P1", adInteger, adParamOutput)

cmd.Execute

i = cmd.Parameters( 0 ).Value
Debug.Print i

End Sub

не забудь поменять connectionstring и вперед ;))
...
Рейтинг: 0 / 0
03.08.2006, 08:24
    #33896141
Rustygold
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как вызвать пользовательскую функцию MSSQL из VB?
Барбудас

?= лишнее
достаточно

Код: plaintext
cmd.CommandText = "select dbo.GetVersion()"

а результат можно получить и без параметра:

Код: plaintext
1.
2.
3.
4.
5.
6.
ALTER  FUNCTION dbo.GetVersion()
RETURNS smallint 
AS
BEGIN
 return ( 1 )
END

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
Sub s()
Dim cn As New ADODB.Connection
Dim rs as New ADODB.Recordset
Dim i as Integer

rs.Open "select dbo.GetVersion()", cn, adOpenKeyset, adLockOptimistic

i = rs.Fields( 0 ).Value

rs.Close
set rs = Nothing
Debug.Print i

End Sub
...
Рейтинг: 0 / 0
03.08.2006, 11:41
    #33896670
Барбудас
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как вызвать пользовательскую функцию MSSQL из VB?
Rustygold
а результат можно получить и без параметра:


это, насколько я понял, автор и сам в состоянии сделать.
его вопрос был:

Gwеst ... хотелось бы получить результат не через рекордсет, а чем-нибудь другим способом просто присвоить i результат.

:)
...
Рейтинг: 0 / 0
03.08.2006, 14:05
    #33897236
Gwеst
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как вызвать пользовательскую функцию MSSQL из VB?
Спсибо всем.
Барбудас, большой тебе респект.
...
Рейтинг: 0 / 0
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Как вызвать пользовательскую функцию MSSQL из VB? / 14 сообщений из 14, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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