|
|
|
| По нажатию кнопки открываю форму: strParam принимает вид "(число1, число2)"
If strParam <> "" Then
DoCmd.OpenForm "можно выдать", , , "[код] in " & strParam, acFormEdit
End If
а как можно передать strParam, чтоб его значение можно было использовать в открытой форме? | |
|
| |
|
|
|
| F1 - OpenArgs
DoCmd.OpenForm "можно выдать", , , "[код] in " & strParam, acFormEdit, acDialog, strParam | |
|
| |
|
|
|
| привет, Олег :))
[рогАнь]
;)) | |
|
| |
|
|
|
| попробовала Ваш вариант, или 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 | |
|
| |
|
|
|
| Forms![можно выдать].OpenArgs - это что за конструкция?
Еще раз :-)
Вариант 1:
при открыти формы в которой нужно использовать какие-то данные пишите
DoCmd.OpenForm "можно выдать", acNormal, , , acFormEdit, , strParam
|
Где переменная StrParam должна содержать то значение которого будет исползовано в открываемой форме
В открываемой форме пишите примерно следующее:
if nz(openargs,"") <> "" then Msgbox "Передано - " & OpenArgs
|
т.е. переменная OpenArgs в открытой форме будет содержать то значение которое было в strParam
Вариант 2
Создаете модуль.
В модуле создаете Public переменную
перед открытием формы присваиваете нужное значение этой переменной.
А из открытой формы это хначение считываете, поскольку Public переменная определена на уровне отдельного модуля, а не на уровне формы, то она будет "видна" из всех форм, т.е. в любой форме можно получить значение этой переменной.
ВАриант 3.
Можно получить значение полей любой открытой в данный момент формы
так:
Forms![ИмяФормыИзКоторойБеремДанные]![ИмяПоляИзКоторогоБеремДанные]
|
Форма должна быть открыта
Если данные нужно получить из поля подчиненной формы, то это делается так:
Forms![ИмяГлавнойФормыИзКоторойБеремДанные]![ИмяКонтролаПодчиненнойФормы].Form![ИмяПоляИзКоторогоБеремДанные]
| Есть еще несколько способов.... | |
|
| |
|
|
|
| с первым вариантом так и не получилось стабильной работы, все равно иногда не подхватывал значение ((
помог второй вариант )))
Спасибо! | |
|
| |
|
|
|
| а. через свойства базы данных
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
|
в. через глобальные переменнные | |
|
| |