Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > VB6 > Params в SQL запросе


Автор: Mephisto 27.1.2004, 18:34
Люди, есть маленькая Stored Procedure в которой есть два параметра. Как мне передать в неё параметры перед её запуском?
Спасибо всем кто ответит.

Автор: Mephisto 27.1.2004, 18:45
Вот небольшой код (для наглядности)
Цитата
Private Sub cmdProba_Click()
    Dim dbs As Database
    Dim rst As Recordset
    Set dbs = CurrentDb()
   
    dbs.CreateProperty "Yer", , 2004
    dbs.CreateProperty "Mes", , 1

   
    Set rst = dbs.OpenRecordset("Raschet")
    Do While Not rst.EOF
        '................................................................................
        rst.MoveNext
    Loop
    rst.Close
    dbs.Close
End Sub

Я праильно мыслю?

Автор: Mephisto 28.1.2004, 18:44
Ну, я это так реализовал:
Код
Dim strSQL$,intYer%,intMes%
Dim dbs As Database
Dim rst As Recordset
Set dbs = CurrentDb()

strSQL="select st.Kod, Month(st.DateOf) as Mes, Year(st.DateOf) as Yer from SampleTable st "
strSQL=strSQL+"Where Month(st.DateOf) = "+cstr(intMes)+" and "
strSQL=strSQL+"Year(st.DateOf) = "+cstr(intYer)

Set rst = dbs.OpenRecordset(strSQL)

Может кто подскажет способ проще?

Автор: cardinal 29.1.2004, 00:19
Код
Dim strSQL$,intYer%,intMes%
Dim dbs As Database
Dim rst As Recordset
Set dbs = CurrentDb()

strSQL="select st.Kod, Month(st.DateOf) as Mes, Year(st.DateOf) as Yer from SampleTable st " _
           & "Where Month(st.DateOf) = " & intMes & " and Year(st.DateOf) = " & intYer

Set rst = dbs.OpenRecordset(strSQL)

Если только так confused.gif

Автор: Mephisto 29.1.2004, 15:12
Цитата
Если только так

biggrin.gif biggrin.gif biggrin.gif
А если есть Stored Procedure, то как в неё передать Param?

Автор: Mephisto 29.1.2004, 15:21
http://forum.vingrad.ru/index.php?act=ST&f=12&t=17411
Цитата
Говорят, что есть вариант подстановки параметров, но он только для SQL Server и достаточно тяэело. И только для Access XP. Вообщем мне сказали, что лучше подставлять строки. И это будет наиболее универсально и не замедляет.

Автор: nicka 30.1.2004, 12:41
Допустим, это твоя ХП с одним параметром name
Код
ALTER PROCEDURE dbo.proc1
(@name nvarchar(100))
AS
begin
INSERT INTO dbo.table1  (name) VALUES   (@name)
end


Теперь в коде при вызове пишем следующее:
Код

Private cnn As New ADODB.Connection
Private cmm As New ADODB.Command
Dim name As New ADODB.Parameter
    cnn.Provider = "sqloledb"
    cnn.Open "Provider=Microsoft.Access.OLEDB.10.0;User Id=sa;Password=;Data      Source=servername;Initial Catalog=lalala;Data Provider=SQLOLEDB.1"    
    With cmm
       Set name = .CreateParameter("name", adVarWChar, adParamInput, Len(v_name), v_name)
       .Parameters.Append name                
       Set .ActiveConnection = cnn
       .CommandType = adCmdStoredProc
       .CommandText = "proc1"
       .Execute
   End With
   cnn.close

Или я не то что-то говорю??

Автор: Mephisto 30.1.2004, 15:51
Да, спасибо именно то.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)