Rambler's Top100
Форум: MS ACCESSVBVBA MS OfficeMS SQL server
Новые сообщения: 0000

Форум: MS ACCESS

Вопросы связанные с MS ACCESS

Обновить визитку
Участники «Online»
Все участники

 
 

Доброго времени суток, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Передать параметр
 
 автор: Scorpi   (27.05.2008 в 05:36)   личное сообщение
 
 

По нажатию кнопки открываю форму: strParam принимает вид "(число1, число2)"
If strParam <> "" Then
DoCmd.OpenForm "можно выдать", , , "[код] in " & strParam, acFormEdit
End If
а как можно передать strParam, чтоб его значение можно было использовать в открытой форме?

  Ответить  
 
 автор: osmor   (27.05.2008 в 09:02)   личное сообщение
 
 

F1 - OpenArgs
DoCmd.OpenForm "можно выдать", , , "[код] in " & strParam, acFormEdit, acDialog, strParam

  Ответить  
 
 автор: Кабан   (27.05.2008 в 09:03)   личное сообщение
 
 

привет, Олег :))
[рогАнь]
;))

  Ответить  
 
 автор: Scorpi   (29.05.2008 в 09:18)   личное сообщение
 
 

попробовала Ваш вариант, или DoCmd.OpenForm "можно выдать", acNormal, , , acFormEdit, , strParam
на открытие формы "можно выдать" ставлю выполнение:
Param = Forms![можно выдать].OpenArgs
If Len(Param) > 0 Then
Forms![можно выдать].RecordSource = "SELECT .... "
End If
Param обьявлен Public Param As String
Работает через раз ((( По дебагерру проверяю strParam содержит значение, а после присвоения значения на открытие формы Param=Null
Происходит такое не всегда, а в произвольном порядке, раз все нормально, раз Null

  Ответить  
 
 автор: osmor   (29.05.2008 в 09:39)   личное сообщение
 
 

Forms![можно выдать].OpenArgs - это что за конструкция?
Еще раз :-)
Вариант 1:
при открыти формы в которой нужно использовать какие-то данные пишите

DoCmd.OpenForm "можно выдать", acNormal, , , acFormEdit, , strParam 

Где переменная StrParam должна содержать то значение которого будет исползовано в открываемой форме
В открываемой форме пишите примерно следующее:

if nz(openargs,"") <> "" then Msgbox "Передано - " & OpenArgs

т.е. переменная OpenArgs в открытой форме будет содержать то значение которое было в strParam
Вариант 2
Создаете модуль.
В модуле создаете Public переменную
перед открытием формы присваиваете нужное значение этой переменной.
А из открытой формы это хначение считываете, поскольку Public переменная определена на уровне отдельного модуля, а не на уровне формы, то она будет "видна" из всех форм, т.е. в любой форме можно получить значение этой переменной.
ВАриант 3.
Можно получить значение полей любой открытой в данный момент формы
так:

Forms![ИмяФормыИзКоторойБеремДанные]![ИмяПоляИзКоторогоБеремДанные]

Форма должна быть открыта
Если данные нужно получить из поля подчиненной формы, то это делается так:
Forms![ИмяГлавнойФормыИзКоторойБеремДанные]![ИмяКонтролаПодчиненнойФормы].Form![ИмяПоляИзКоторогоБеремДанные]
Есть еще несколько способов....

  Ответить  
 
 автор: Scorpi   (29.05.2008 в 10:21)   личное сообщение
 
 

с первым вариантом так и не получилось стабильной работы, все равно иногда не подхватывал значение ((
помог второй вариант )))
Спасибо!

  Ответить  
 
 автор: Кабан   (27.05.2008 в 09:02)   личное сообщение
 
 

а. через свойства базы данных

    Sub SetOption(Option As Long, Value)
    Member of DAO.DBEngine
б. через openargs, если мне память не изменяет

Sub OpenToCallahan()
    DoCmd.OpenForm "Employees", acNormal, , , acReadOnly, _
     , "Callahan"
End Sub

Sub Form_Open(Cancel As Integer)
    Dim strEmployeeName As String
    ' If OpenArgs property contains employee name, find
    ' corresponding employee record and display it on form. For
    ' example,if the OpenArgs property contains "Callahan",
    ' move to first "Callahan" record.
    strEmployeeName = Forms!Employees.OpenArgs
    If Len(strEmployeeName) > 0 Then
        DoCmd.GoToControl "LastName"
        DoCmd.FindRecord strEmployeeName, , True, , True, , True
    End If
End Sub


в. через глобальные переменнные

  Ответить  
HiProg.com - Технологии программирования
Rambler's Top100 TopList