Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > MS Access > Программирование в Access?


Автор: V0fka 26.3.2008, 23:03
Здравствуйте!

Делаю БД для таксопарка. Вот есть у меня таблица, которая содержит в себе заявки. В заявке есть поля "Номер заявки, Дата/время, Откуда, Телефон". Теперь вопросы smile :

1) Есть ещё дополнитльные таблицы: Населёные пункты, Улицы, Квартиры. В таблице "Квартиры" содержатся "Номера телефонов, фамилия их владельца, улица на которой живут и номер дома". Как мне сделать, чтобы при вводе в заявку имени улицы - она высвечивалась по первым нескольким введённым буквам (если такова имеется в таблице "Улицы")? А если такой улицы нету - то надо, чтобы она сохранялась в базе при добавлении даной заявки.

2) Как сделать, чтобы когда я введу номер телефона - мне высвечивалась улица и номер дома владельца (при чём а таблице "Квартиры" - поля "Улица" и "Номер дома" - это разные поля, а мне нужно, чтобы они в заявке выводились в одном поле)? И если номера телефона в базе нету - то чтобы он при добавлении заявки - автоматически сохранялся в базе?

Вообще вопросов ещё много), но покаместь хотелось бы услышать варианты решения этих двух вопросов. 

Надеюсь объяснил понятно.

Спасибо!

Автор: FINANSIST 11.4.2008, 16:40
Создаёшь форму с элементами управления, соответствующим аналитикам таблицы "заявки" ( Номер,Дата, Телефон итд) Причём , для аналитик, которые вносятся руками - текстбоксы, а для аналитики "Улица" - коМбобокс (список). Связываешь все элементы управления формы с аналитиками таблицы "Заявки" . В качестве источника данных для списка "Улица" пишешь SQL_Запрос: 
SELECT DISTINCT адреса.адрес  FROM адреса; в СВОЙСТВАХ элемента управления в строке "ограничиться списком" ставишь "нет". Щёлкаешь правой кнопкой мыши на списке, выбираешь ОБРАБОТКА СОБЫТИЙ/ПРОГРАММЫ  и попадаешь в редактор VBA. В правом верхнем списке окна выбираешь "after update" -  появится пустая оболочка процедуры с заголовком:
 
Код

Private Sub Сombobox1_AfterUpdate()
'-добавляешь далее код программы
usl_1 = "[адрес] = "
usl_2 = Forms![заявки]![адрес]
uslovie = usl_1 & "'" & usl_2 & "'"  '{- обрати внимание на то что в данной строке в 2х кавычках(") закрывается 1 апостроф (')!!!}

vl = DLookup("[адрес]", "адреса", uslovie)
If VarType(vl) = vbNull Then
DoCmd.RunSQL ("insert into адреса (адрес) values ( Forms![заявки]![адрес])")
End If
Set zaprosss = Forms![заявки]![адрес]
zaprosss.Requery
End Sub

У себя протестил, всё работает как надо smile

Добавлено @ 16:43
Решение второй проблемы реализуется по тому же алгоритму с незначительными вариациями

Автор: Akina 11.4.2008, 20:58

M
Akina
Не забываем использовать тег "Код"

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