Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > VB6 > Глобальные переменные в VBA


Автор: Vic 31.5.2004, 13:32
Помогите, у кого есть время.
Делаю БД в Access. Есть две формы. На них есть кнопки перехода друг на друга. Надо сделать следующее: Одна форма открыта. На ней есть поле со списком, например фамилий. Другая форма содержит описание этих фамилий. Мне надо, чтоб при открытии второй формы в ней открывалась запись, содержащая информацию именно о той, которая в открытой первой форме.
Вопрос может поставлен и по-дурацки, но вроде понятно.
Как я понимаю, надо использовать значение по умолчанию и какую-то глобальную переменную, но просто я с ними никогда не работала и у меня нет хорошей книжки по VBA. Так что вся надежда на Вас
smile.gif
Vic

Автор: Guest 31.5.2004, 13:42
Че та не очень понятно.
Зачем тебе глобальная переменная? У тебя же само объект имеет "глобальное" свойство Form1.ComboBox1.Text

Автор: Vic 31.5.2004, 13:55
Так не получается. Я пробовала.
Когда в конце добавляешь Column(), тоже не получается. А на счет глобальных переменных я просто не в курсе,
Я решила раз без них гне получается может надо с ними

Автор: boevik 31.5.2004, 14:25
Глобальные переменные можно объявить в модуле.
Но, IMHO, это не лучшее решение.
Лучше прочитать значение на прямую с контроля или передать переменной во второй форме.

Автор: Vic 31.5.2004, 14:30
Народ, я все понимаю, вы-то всве знаете. А я почти чайник, ТО что гллобальную переменную объявляют в модуле, я уже выяснила, меня интересует конкретно эта процедура. Напиши кто-нибудь, пожалуйства. Там же в одно действие, как я понимаю. Или нет? Если в два, можете написать только первое.
Vic wink.gif

Автор: Akina 31.5.2004, 14:49
Цитата
Так не получается. Я пробовала.

Нерабочий текст (плюс имена форм и использованных контролов) - в студию.

Автор: boevik 31.5.2004, 14:51
A это не срабатывает?

Код

sLastName = Form1.ComboBox1.Text

Автор: Vic 31.5.2004, 15:28
Народ, это все очень мило. А последний код может и работает, если мне все-таки кто напишет, как объявлять глобальные переменные.

Автор: boevik 31.5.2004, 15:36
В модуле пишешь:
Код

Public sLastName as String

Автор: Vic 31.5.2004, 16:01
ОК как объявлять глобальную переменную я поняла. А куда вставлять код sLastName = Form1.ComboBox1.Text? К какому объекту его привязывать или что вообще там дальше?
Vic
Добавлено @ 16:06
ОК как объявлять глобальную переменную я поняла. А куда вставлять код sLastName = Form1.ComboBox1.Text? К какому объекту его привязывать или что вообще там дальше?
Vic

Автор: Guest 31.5.2004, 16:23
Цитата

А куда вставлять код sLastName = Form1.ComboBox1.Text?


На событе нажатия кнопки (Button1.Click) на первой форме или на событие появления второй формы (Form2.Load) или на событие изменения (OnChange) твоего ComboBox-а
Но это все глупасти и недостойно истенного программера! )))
Говорю ж тебе у твоего контрола типа ComboBox есть свойство Text оно само по себе уже глобально пока контрол существует.
При появлении второй формы тебе нужно вытащить это свойство с твоего контрола и все, ни какого описания глобаьлных переменных, создания модуля лишнего для одной переменной и т.п.

Автор: Vic 31.5.2004, 16:59
Хорошо. Это я поняла. Задача усложняется.
У меня в поле со списком присоединены два столбца. Один с кодом, а второй с названием. На экран выводится только название. А в поле второй формы мне надо вставить только код. Поэтому когда я проделываю все, что посоветовали (не используя глобальные переменные), у меня выдается ошибка формата данных или что-то вроде.


Добавлено @ 17:00
вернее ошибочный тип данных содержит

Автор: ~FoX~ 1.6.2004, 15:25
Тогда тем более глобальная переменная не нужна!
Ведь у тебя целая таблица (куда уж глобальней tounge.gif )
Вот и обращайся к самой таблице (к активной записи в тадлице)

Автор: Vic 1.6.2004, 16:16
Да как это сделать?????? Люди, я может совсем тупая, но не работает у меня процедура Form.Combo.Text

Автор: boevik 1.6.2004, 16:27
Цитата
Люди, я может совсем тупая, но не работает у меня процедура Form.Combo.Text

Ты так и писала Form.Combo.Text или писала Имя_Формы.Имя_Комбо.Text?
A во вторых это не процедура, а свойство контроля combo, который находится на форме.

Автор: Vic 1.6.2004, 23:01
Я в курсе, что у меня плохо с теорией и я не отличаю процедуры от свойства, во овсяком случае в речи, по смыслу я могу понять разницу.
Естественно, я писала имя_формы.имя_комбо.Text.

Автор: Guest 2.6.2004, 08:06
Vic
Ой ё.......!!!
Да не нужно тебе обращаться к компанентам никаким у тебя таблица есть - в ней есть выделенная в данный момент запись - у этой записи есть поле котрое тож выделено, вот значение этого поля тебе и надобно.

Товарисчи прекратите путать девушку

Автор: Vic 17.6.2004, 16:18
Я-таки сделала, что мне было надо. Для этого надо было всего лишь форму построить на основе запроса, а не таблицы. До меня это долго доходило smile.gif
Всем спасибо за помощь.
Vic

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)