Модераторы: Akina

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Передача информации из одного поля в другое (Edit) 
V
    Опции темы
Ane4ka
Дата 16.10.2007, 00:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 13
Регистрация: 8.10.2007

Репутация: нет
Всего: нет



Сново рад приветствовать вас. Я столкнулся с очередной проблеймой :( и сново прошу помощи.

У меня есть две формы на каждой из которых есть поле(Edit) - номер путевого листа. Сначала предлогается заполнить форму (AddL) где одним из полей является номер листа, затем по нажатию на кнопу (Кнопка1) происходит переход на вторую форму (List1, где есть такое же поле Edit). Как сделать чтобы при переходе на 2-ю форму в поле (Edit) вводился тот-же номер что мы ввели на 1-й форме?

Надеюсь вопрос сформулирован понятно.... Большое спасибо за любую помосчь
PM MAIL   Вверх
bopoha
Дата 16.10.2007, 07:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1283
Регистрация: 10.5.2006
Где: Беларусь, Минск

Репутация: 21
Всего: 21



На форму можно передать данные разными способами:
1. Атрибут OpenArgs.

Этот параметр строковый. Если сформировать строку в специальном формате, то можно передать и больше параметров.
При открытии формы:
Код

DoCmd.OpenForm "myforma2",,,,,,"значение параметр"


На открывающейся форме (на событии открытия или загрузки):
Код

Dim stPrm as String

stPrm = nz(Me.OpenArgs, "значение по умолчанию")


2. Инициализировать поле в открывающей форме:
Код

dim frm As Form_myforma2
DoCmd.OpenForm "myforma2"

set frm = Forms("myforma2")
frm.pole = value

2.1 или обявить в форме myforma2 функцию, которая и выполнит присваивание полю значения
Код

dim frm As Form_myforma2
DoCmd.OpenForm "myforma2"

set frm = Forms("myforma2")
calc frm.func( value )



3. Тоже самое, что и п.2, но уже в открываемой форме (на событии открытия или загрузки):
Код

set frm = Forms("myforma1")
me.pole = frm.pole


4. Использовать процедуру и п.1-3. Более сопровождаемый вариант. 
Код

Public Sub OpenMyForma2(byVal param as Sytring)
dim frm As Form_myforma2
DoCmd.OpenForm "myforma2"

set frm = Forms("myforma2")
frm.pole = param
End Sub


ЗЫ: 4. пункт мне больше нравится, в последующем пишется меньше кода. Так же он компилируем - изменяем количество параметров, компилируем и находим все места, которые необходимо подправить. Также легко использовать функцию в меню.
PM MAIL WWW ICQ Skype GTalk   Вверх
Akina
Дата 16.10.2007, 08:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 30
Всего: 454



Есть еще вариант - использовать не две формы, а одну. По нажатию кнопки перехода на шаг 2 просто скрываем ненужные контролы, показываем нужные, перемещаем те, что должны остаться... тогда и передавать ничего не нужно.


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
Ane4ka
Дата 16.10.2007, 09:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 13
Регистрация: 8.10.2007

Репутация: нет
Всего: нет



Пробывала разные варианты но каждый раз выдаётк следуюсчую ошибку:
Type mismatch

Вот пример вставляемого кода:

Private Sub Form_Open(Cancel As Integer)
Dim frm As Form_List1
Set frm = Forms("Addl")
Me.nListNum1 = frm.nListNum
End Sub

Где, List1 - Имя формы на котой находится поле (nListNum, с которого собственно и берётся значение);
        Addl - Имя формы на которой расположено поле (nListNum1, в которое должно занестись значение из nListNum);
Событие назначено на открытие формы Addl
PM MAIL   Вверх
Akina
Дата 16.10.2007, 10:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 30
Всего: 454



Цитата(Ane4ka @  16.10.2007,  10:38 Найти цитируемый пост)
каждый раз выдаётк следуюсчую ошибку:
Type mismatch

А в какой именно строке выдает, секрет? 

Вероятно, в строке
Цитата(Ane4ka @  16.10.2007,  10:38 Найти цитируемый пост)
Dim frm As Form_List1

потому как должно быть
Код

Dim frm As Form




--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
Ane4ka
Дата 16.10.2007, 10:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 13
Регистрация: 8.10.2007

Репутация: нет
Всего: нет



Гм...
Теперь стало ругаться на эту строчку :( :
Me.nListNum1 = frm.nListNum

Говорит  следуесчее
Run time error '-2147352564 (80020009)

Невозможно присвоить значение объекту

Вот  smile :(
PM MAIL   Вверх
Akina
Дата 16.10.2007, 10:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 30
Всего: 454



Код

Me.nListNum1.Text = frm.Controls("nListNum").Text

по всей видимости... 


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
Ane4ka
Дата 16.10.2007, 11:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 13
Регистрация: 8.10.2007

Репутация: нет
Всего: нет



Час от часу не легче... :'(
Теперь это:
Run Time error '2185':

Невозможно обратиться к свойству или методуэлемента
управления, пока на этот элемент не установлен фокус ввода.
------------------------------------------------
И ругаетсчя вот на эту строчку:
Me.nListNum1.Text = frm.Controls("nListNum").Text
PM MAIL   Вверх
Akina
Дата 16.10.2007, 11:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 30
Всего: 454



ну так и сделай предварительно
Код
Me.nListNum1.SetFocus
Что ты как дитё малое, право слово...


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
kapbepucm
Дата 16.10.2007, 12:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 993
Регистрация: 14.6.2007
Где: Латвия

Репутация: нет
Всего: 12



Или
Код
Me.nListNum1.Value = frm.Controls("nListNum").Text




--------------------
(С) kapbepucm
PM MAIL Skype   Вверх
Ane4ka
Дата 16.10.2007, 13:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 13
Регистрация: 8.10.2007

Репутация: нет
Всего: нет



И в одном и во втором случае выскакивает всё та же ошибка....
PM MAIL   Вверх
kapbepucm
Дата 16.10.2007, 13:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 993
Регистрация: 14.6.2007
Где: Латвия

Репутация: нет
Всего: 12



Где код выполняется, в событии OnOpen?


--------------------
(С) kapbepucm
PM MAIL Skype   Вверх
Ane4ka
Дата 16.10.2007, 14:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 13
Регистрация: 8.10.2007

Репутация: нет
Всего: нет



Да.

Код

Private Sub Form_Open(Cancel As Integer)
Dim frm As Form
Set frm = Forms("Addl")
Me.nListNum1.SetFocus
Me.nListNum1.Text = frm.Controls("nListNum").Text
End Sub


Если изменить на вот это:
Код

Private Sub Form_OnOpen(Cancel As Integer)
Dim frm As Form
Set frm = Forms("Addl")
Me.nListNum1.SetFocus
Me.nListNum1.Text = frm.Controls("nListNum").Text
End Sub

Ошибка пропадает, но ничего не происходит

Это сообщение отредактировал(а) Ane4ka - 16.10.2007, 14:19
PM MAIL   Вверх
kapbepucm
Дата 16.10.2007, 14:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 993
Регистрация: 14.6.2007
Где: Латвия

Репутация: нет
Всего: 12



Похоже на то, что строки
Код
Me.nListNum1.SetFocus
Me.nListNum1.Text = frm.Controls("nListNum").Text
принципиально работать не будут. (к nListNum1 ещё рано тут обращатся)
Пробуй открывать эту форму из OnClick "Кнопка1" и там обращатся. Например:
Код
DoCmd.OpenForm "List1"
Forms("List1").Controls("nListNum").Value = Me.nListNum1.Value


Это сообщение отредактировал(а) kapbepucm - 16.10.2007, 14:34


--------------------
(С) kapbepucm
PM MAIL Skype   Вверх
Akina
Дата 16.10.2007, 14:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 30
Всего: 454



В Private Sub Form_Open это в принципе работать не может и, соответственно, не будет. Форма еще не загружена, присвоение невозможно.

Цитата(kapbepucm @  16.10.2007,  15:17 Найти цитируемый пост)
Пробуй открывать эту форму из OnClick "Кнопка1" и там писать эти строки

Вообще-то так и делают:
Код

Private Sub Button_Click
Form2.Load
Form2.Controls("nListNum1").Text = Me.nListNum.Text
End Sub

Цитата(Ane4ka @  16.10.2007,  15:08 Найти цитируемый пост)
Если изменить на вот это:

Конечно, OnOpen - это событие, а имя обрабатывающей его процедуры Form_Open


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "MS Access"
Akina
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • Используйте теги [code=vb][/code] и [code=sql][/code] для подсветки кода. Используйтe чекбокс "транслит" (возле кнопок кодов) если у Вас нет русских шрифтов.

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Akina.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | MS Access | Следующая тема »


 




[ Время генерации скрипта: 0.1686 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.