Передача входных параметров в MS Access

Источник: msdatabase

Передача параметров в хранимую процедуру

  • в свойстве формы Входные параметры формы
    синтаксис:
    @Имя_переменной SQL_тип_переменной = имя_локального_поля_данных_или_пользовательская_функция

    Прим:
    В формах способ работает только если не указаны значения параметров по умолчанию
    SQL_тип_переменной можно не указывать

    @myvar int = GetMyVar()
    @myvar = GetMyVar()
    @myvar = Forms!МояФорма!КонтролФормы
    @mydate = fix(VBDATE) (во вх. параметрах формы)
    @mydate = fix(VBDATE)-2 (кроме вх.параметров формы - при программном формировании рекордсета)

  • через пробел после имени процедуры и каждый параметр в порядке их описания в процедуре - через запятую:
    Dim rst As New ADODB.Recordset

    Rst.Open "exec Имя_ХранПр '" & Me.MyString & "', " & Me.MYINT2 & ", CurrentProject.Connection, adOpenKeyset, adLockOptimistic

    в данном примере из полей формы данные передаются в процедуру , открываемую рекордсетом. Так как Me.MyString при передаче имеет строковый тип - добавлены одинарные кавычки
    в простейшем виде строка имеет вид
    rst.open "my_proc_name 1,2,3 " , CurrentProject.Connection, adOpenKeyset, adLockOptimistic

    примечание: ключевое слово Exec в конкретном случае указывать необязательно

  • создать команду адо и добавить к ней перед запуском параметр
    данный способ позволяет не только передавать параметры, но и получать их обратно
    Dim cmd As New ADODB.Command
    cmd.ActiveConnection = CurrentProject.Connection
    cmd.CommandText = "sp_daystatus" 'Имя хранимой процедуры
    cmd.CommandType = adCmdStoredProc
    cmd.Parameters.Append cmd.CreateParameter("@Paramdata", adInteger, adParamInputOutput)
    cmd.Parameters(0) = clng(Mydata)-2
    cmd.Execute 'Запускаем
    MyReturnParam = cmd.Parameters(0) ' Присваиваем возвращаемый параметр переменной
    Set cmd = Nothing

    Прим. : Если в хранимой процедуре в конце стоит Return то возвратить она сможет только числовой параметр. Чтобы она возвращала строку - уберите из нее Return


  • Страница сайта http://test.interface.ru
    Оригинал находится по адресу http://test.interface.ru/home.asp?artId=8269