Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft Access Новый топик    Ответить
 передача данных в форму для добавления записи  [new]
Demaz
Member

Откуда:
Сообщений: 12
Добрый день!
Никак не получается решить такую задачу:
Есть база данных - контакты партнеров. В ней есть таблица Company (с данными о компании) и таблица Contacts (с данными о пратнерах - фио, e-mail, компания и т.п.). Они между собой связаны по ID компании.
Сделал форму выводящую данные о компании и ее сотрудниках (в подчиненной форме). В это форме есть кнопка "Добавить сотрудника" которая открывает форму "Contact" с полями таблицы Contacts в режиме добавления записи. Одно из полей это формы Company и я хочу сделать, чтобы оно заполнялось автоматически с учетом того из какой "компании" ее вызвали. В таблице Contacts компания указывается в виде id, а в форме "Contact" я сделал поле с выпадающим списком (чтобы пользователю было легче).
Пробывал сделать это через OpenArgs
Private Sub Êíîïêà68_Click()
On Error GoTo Err_Êíîïêà68_Click

    Dim stDocName As String
    Dim stLinkCriteria As String
    Dim Cmpn As String
    
    Cmpn = Me![Company]
    stDocName = "Contact"
    DoCmd.OpenForm stDocName, , , stLinkCriteria, acFormAdd, , Cmpn
    
    
Exit_Êíîïêà68_Click:
    Exit Sub

Err_Êíîïêà68_Click:
    MsgBox Err.Description
    Resume Exit_Êíîïêà68_Click
    
End Sub

Но в форме Contact пишет что OpenArgs is Null
Как еще можно сделать???
12 апр 07, 10:04    [4010154]     Ответить | Цитировать Сообщить модератору
 Re: передача данных в форму для добавления записи  [new]
bubucha
Member

Откуда:
Сообщений: 5633
    Cmpn = Me![Company]
    msgbox Cmpn ' - что кажет?
    stDocName = "Contact"
    'DoCmd.OpenForm stDocName, , , stLinkCriteria, acFormAdd, , Cmpn
12 апр 07, 10:12    [4010221]     Ответить | Цитировать Сообщить модератору
 Re: передача данных в форму для добавления записи  [new]
Demaz
Member

Откуда:
Сообщений: 12
bubucha
    Cmpn = Me![Company]
    msgbox Cmpn ' - что кажет?
    stDocName = "Contact"
    'DoCmd.OpenForm stDocName, , , stLinkCriteria, acFormAdd, , Cmpn

Показывет правильно ID компании в моем случае "7"
12 апр 07, 10:16    [4010265]     Ответить | Цитировать Сообщить модератору
 Re: передача данных в форму для добавления записи  [new]
Demaz
Member

Откуда:
Сообщений: 12
Я вот еще подумал сделать через глобальную переменную, вот я только не знаю где ее объявить (стыдно мне). подскажите плиз, может через нее будет лучше сделать....
12 апр 07, 10:24    [4010349]     Ответить | Цитировать Сообщить модератору
 Re: передача данных в форму для добавления записи  [new]
ByKiS
Member

Откуда:
Сообщений: 3760
Dim stLinkCriteria As String
Это зачем?

Глобальная переменная объявляется в модуле
Public Dim stLinkCriteria As String
12 апр 07, 10:27    [4010372]     Ответить | Цитировать Сообщить модератору
 Re: передача данных в форму для добавления записи  [new]
mds_world
Member

Откуда: Ташкент
Сообщений: 27548
Очень часто, при открытии формы, формируют запрос для источника данных формы с учетом нужного параметра.

Глобальную переменную надо объявлять в стандартном модуле.
12 апр 07, 10:27    [4010374]     Ответить | Цитировать Сообщить модератору
 Re: передача данных в форму для добавления записи  [new]
Demaz
Member

Откуда:
Сообщений: 12
mds_world
Очень часто, при открытии формы, формируют запрос для источника данных формы с учетом нужного параметра.

Глобальную переменную надо объявлять в стандартном модуле.

Сорри... я еще не совсем ориентируюсь, стандартный модуль это что?? из него будет видна это переменная для другой формы???
12 апр 07, 10:33    [4010409]     Ответить | Цитировать Сообщить модератору
 Re: передача данных в форму для добавления записи  [new]
Demaz
Member

Откуда:
Сообщений: 12
ByKiS
Dim stLinkCriteria As String
Это зачем?

Глобальная переменная объявляется в модуле
Public Dim stLinkCriteria As String


да, значение фильтра здесь не нужно... из старого кода осталось
12 апр 07, 10:33    [4010413]     Ответить | Цитировать Сообщить модератору
 Re: передача данных в форму для добавления записи  [new]
ByKiS
Member

Откуда:
Сообщений: 3760
автор
Одно из полей это формы Company и я хочу сделать, чтобы оно заполнялось автоматически с учетом того из какой "компании" ее вызвали.
Так и поставте ему значение по умолчанию
=Forms![Форма компании]![Поле ID компании]

И открывайте её просто
DoCmd.OpenForm "Contact", , , , acFormAdd
12 апр 07, 10:36    [4010446]     Ответить | Цитировать Сообщить модератору
 Re: передача данных в форму для добавления записи  [new]
mds_world
Member

Откуда: Ташкент
Сообщений: 27548
автор
Сорри... я еще не совсем ориентируюсь, стандартный модуль это что?? из него будет видна это переменная для другой формы???
В главном окне БД перейдите на вкладку Модули и дайте Создать. Тем самым создастся стандартный модуль.

Объявленная в модуле глобальная переменная будет видна всюду. Прочитайте про область видимости переменных.
12 апр 07, 10:39    [4010484]     Ответить | Цитировать Сообщить модератору
 Re: передача данных в форму для добавления записи  [new]
Demaz
Member

Откуда:
Сообщений: 12
ByKiS
автор
Одно из полей это формы Company и я хочу сделать, чтобы оно заполнялось автоматически с учетом того из какой "компании" ее вызвали.
Так и поставте ему значение по умолчанию
=Forms![Форма компании]![Поле ID компании]

И открывайте её просто
DoCmd.OpenForm "Contact", , , , acFormAdd


СПАСИБО БОЛЬШОЕ, все работает как надо! Как говорится, все генеальное просто.
Я вот только начал осваивать VBA в Access и теперь наверно все хочу сделать через него, хотя можно и не париться :)
12 апр 07, 10:51    [4010608]     Ответить | Цитировать Сообщить модератору
 Re: передача данных в форму для добавления записи  [new]
Demaz
Member

Откуда:
Сообщений: 12
mds_world
автор
Сорри... я еще не совсем ориентируюсь, стандартный модуль это что?? из него будет видна это переменная для другой формы???
В главном окне БД перейдите на вкладку Модули и дайте Создать. Тем самым создастся стандартный модуль.

Объявленная в модуле глобальная переменная будет видна всюду. Прочитайте про область видимости переменных.


Спасибо! Буду знать! Но обошлось слава богу без глобальных переменных!
12 апр 07, 10:52    [4010620]     Ответить | Цитировать Сообщить модератору
 Re: передача данных в форму для добавления записи  [new]
bubucha
Member

Откуда:
Сообщений: 5633
А что было то? У меня, авторский код работает именно в оригинальном варианте (буковка в буковку). :-\

К сообщению приложен файл (openargs.rar - 12Kb) cкачать
12 апр 07, 10:59    [4010671]     Ответить | Цитировать Сообщить модератору
 Re: передача данных в форму для добавления записи  [new]
Demaz
Member

Откуда:
Сообщений: 12
bubucha
А что было то? У меня, авторский код работает именно в оригинальном варианте (буковка в буковку). :-\


Решил все с помошью
=[Формы]![Company]![CMC] в значении по умолчанию новой формы

а в отношении передачи переменной через OpenArgs, сейчас у меня нормально передается в новую форму, вот только значение полю не присваивается по умолчанию.. может я не так пишу =[me].[OpenArgs]
12 апр 07, 11:16    [4010815]     Ответить | Цитировать Сообщить модератору
 Re: передача данных в форму для добавления записи  [new]
Программист-Любитель
Member

Откуда:
Сообщений: 16839
Не так.
12 апр 07, 11:23    [4010885]     Ответить | Цитировать Сообщить модератору
 Re: передача данных в форму для добавления записи  [new]
bubucha
Member

Откуда:
Сообщений: 5633
автор
=[me].[OpenArgs]

me.openargs
12 апр 07, 11:23    [4010894]     Ответить | Цитировать Сообщить модератору
 Re: передача данных в форму для добавления записи  [new]
Demaz
Member

Откуда:
Сообщений: 12
bubucha
автор
=[me].[OpenArgs]

me.openargs

не получается..
я делаю так
поле Company
значение по умолчанию - me.openargs
он автоматом меняет на [me].[OpenArgs]
при открытии формы из основной поле остается пустым, хотя через Msgbox me.openargs при открытии формы выдает правильно "7"
12 апр 07, 11:30    [4010974]     Ответить | Цитировать Сообщить модератору
 Re: передача данных в форму для добавления записи  [new]
bubucha
Member

Откуда:
Сообщений: 5633
автор
значение по умолчанию - me.openargs

Понятно. Вам надо в коде указать, а не в свойстве "данные".
Видимо так:
Me.ИмяПоля.DefaultValue=me.OpenArgs
12 апр 07, 11:36    [4011014]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft Access Ответить