передача значенийиз одной формы в другую

Sergei=
Дата: 14.09.2005 14:09:03
Многоуважаемые гуру, подскажите

Необходимо передавать значение ключевого поля из формы 1 в форму 2, при этом после передачи форма 1 закрывается, тоесть с нее больше не получится взять значение. В форме 2 список с запросом на выбор записей с ключевым полем формы 1. Попытка в запросе формы 2 указать отбор по значения кл. поля формы 1 работает пока не закрыта форма 1. Передать через переменную VBA у меня не получается - не могу потом ее подставить у условия отбора запроса. Подскажите как взять значение ключевого поля с формы 1 и сохранить для использования в форме 2.

Спасибо.
Владимир Саныч
Дата: 14.09.2005 14:16:29
Заносим в переменную. Во второй форме обращаемся к глобальной функции, которая смотрит эту переменную. Всё.
Темный
Дата: 14.09.2005 14:17:15
DoCmd.OpenForm "Form2", , , "[id]=" & Me![id]
DoCmd.Close acForm, "Form1"
Sergei=
Дата: 14.09.2005 14:33:56
Темный
DoCmd.OpenForm "Form2", , , "[id]=" & Me![id]
DoCmd.Close acForm, "Form1"


Попробую немного написать понятней свою проблему:
Этот вариант не работает, он открывает форму 2 с отобранными записями со значениями равными ключеаому полю формы 1. Но в форме 2 есть список, он получает свои данные из запроса и запросе необходимо указать отбор записей равных значению ключевому полю формы 1.

Занести в переменную ключевого поля формы 1 получается, а вот написать функцию, которую можно было бы использовать в запросе нет.
Rivkin Dmitry
Дата: 14.09.2005 15:04:00
See
DoCmd.OpenForm formname[, view][, filtername][, wherecondition][, datamode][, windowmode][, openargs]
Вот этот openargs позволяет передать в открывающуюся форму любые параметры. Их отлавливаем на открытии или на любом другом событии второй формы и пользуемся в свое удовольствие!
Другой вариант, создать на второй форме public sub с параметрами (ParamArray) и запускать его перед закрытием первой формы. Впрочем, это почти то же самое.
Sergei=
Дата: 14.09.2005 15:14:50
Rivkin Dmitry
See
DoCmd.OpenForm formname[, view][, filtername][, wherecondition][, datamode][, windowmode][, openargs]
Вот этот openargs позволяет передать в открывающуюся форму любые параметры. Их отлавливаем на открытии или на любом другом событии второй формы и пользуемся в свое удовольствие!
Другой вариант, создать на второй форме public sub с параметрами (ParamArray) и запускать его перед закрытием первой формы. Впрочем, это почти то же самое.


Отлавливать этот параметр я научился, а вот использовать никак. Например запомнил я значение в переменной, так вот в запрос эта переменная не лезет никак. Прошу прощения если это тривиально, но никак не получается :-(.
adv
Дата: 14.09.2005 16:03:41
поменяйте rowsource поля со списком
ПолеСоСписком.RowSource = "select ... where id = " & значение_переменной
Sergei=
Дата: 14.09.2005 16:34:31
Что-то совсем я тугой....

в форме 2:

Dim id_client As Integer

Private Sub Form_Load()
id_client = [Forms]![Форма-1]![Код_клиента]
End Sub


В запросе списка формы-2:
SELECT [Форма-2].Код_заказа, [Форма-2].Номер_заказа, [Форма-2].Код_клиента, FROM [Форма-2] WHERE (([Форма-2].Код_клиента)=id_client); и фиг - открывается окно и просит ввести занчение id_client

Коллеги, пропадаю, на мелочи остановился, и никак...
Rivkin Dmitry
Дата: 14.09.2005 16:41:34
id_client должен быть не переменной, а скрытым текст боксом, потому что соурс списка никак не может видеть переменные формы.
Rivkin Dmitry
Дата: 14.09.2005 16:50:15
А можно итак:

На кнопке или процедуре закрывающей форму 2 пишем


DoCmd.OpenForm "Form2"

Forms!Form2.List1.Rowsource = "SELECT [Форма-2].Код_заказа, [Форма-2].Номер_заказа, [Форма-2].Код_клиента, FROM [Форма-2] WHERE (([Форма-2].Код_клиента)=" & Me.id_client & "); "

DoCmd.Close acForm, "Form1"

И больше ничего не надо!