|
|
|
| Имеется форма Заказы, в ней поле со списком, где "фамилии" таблицы "Клиенты", в этой же форме есть поля "Имя" и "Отчество" - хочу чтобы после выбора фамилии, поля "имя", "отчество" и прочие данные заполнялись автоматом, по записи из таблицы "Клиенты" (у каждого клиента есть уникальное поле ID)
Пытался на выходе поставить что-то вот такое:
Private Sub Фамилия_Exit(Cancel As Integer)
If Me.Фамилия.Text = "Фамилия" Then
Me.Имя.SetFocus
Заказы.Имя.Text = Клиенты.Имя.Text
End If
End Sub
|
Подскажите чего-нибудь умное | |
|
| |
|
|
|
| Меняйте ControlSource полей.
Что то типа
Select [имя] from Таблица where id = me.Фамилия.value
(Если вы в комбобокс поставили фамилию из таблицы, то как правило там хранится значение ключевого поля id )
И т.д. для каждого поля. | |
|
| |
|
|
|
| На форме не ComboBox, простое поле. Записал в нем:
=(SELECT [Имя] FROM [Клиенты] WHERE [Фамилия] = Me.Фамилия.Value)
|
Ну чтобы по фамилии выбиралось имя - Doesn't Work! в поле отбражается #имя?
Сначала было сообщение о цикл.ссылке, заменил имя поле "имя" на "name1" - больше не выдает сообщение об ошибке, но и подставлять не хочет | |
|
| |
|
|
|
|
хелп читать пробовали? хоть раз в жизни?
за руль машины тоже так вот, сразу садитесь?
в вашем нелегком случае
=dlookup("[Имя]","Клиенты","[Фамилия] = '" & Me.Фамилия.Value & "'") | |
|
| |
|
|
|
| Пишу в ControlSource
=DLookUp("[Имя]";"Клиенты";"[Фамилия] = ' & Me.Фамилия.Value & '")
|
Не выводит значение из "Клиенты"
В запросе используется точка с запятой (в строке оператора SQL и в программных модулях используется запятая)
Вот так:
=DLookUp("[Имя]";"Клиенты";"[Фамилия] = ' & Forms![Заказы]![Фамилия] & '")
|
Тоже не работает и не ругается ! | |
|
| |
|
|
|
|
=DLookUp("[Имя]";"Клиенты";"[Фамилия] = '" & Forms![Заказы]![Фамилия] & "'")
|
| |
|
| |
|
|
|
| Osmor, спасибо огромное Прочитал, что конкатенация ИЛИ апострофом ИЛИ кавычками для текста, ИЛИ дезинформировало (такой синтаксис, как вычитал -применим для анг.версии Access)
IT WORKS!! | |
|
| |
|
|
|
| Проблемка:
Только сейчас заметил, что данные из полей формы "Заказы", в ControlSource которыx стоит фукция Dlookup, не заносятся в таблицу "Заказы" ??
Как это обойти? | |
|
| |
|
|
|
| Естественно - не заносятся. Это ж вычисляемые поля...
А зачем? Это нелогично и неправильно. У вас есть справочник "Клиенты", в котором есть вся информация о клиенте. Он связан с таблицей "Заказы". Вот и постройте запрос на двух таблицах. | |
|
| |
|
|
|
| Хотел, чтобы при заполнении таблицы заказы, через форму Имя и Отчество записывались вместе с Фамилией - как иначе? Если выбирается фамилия, как можнас имя то соответствующее фамилии и отчество, выбрать?
Таблицы связаны по полю КлиентID, при записи в форму необходимо заполнять этот ID, иначе ругается на нарушение целостности данных (Ошибка 3201), как узнать этот ID не посмотрев в таблицу. Да это и не выход в общем. | |
|
| |
|
|
|
| >как иначе?
а среди ваших клиентов нет однофамильцев?
выбирайте из списка фамилию+имя+отчество (или инициалы) а в связанную (подчиненную) таблицу подставляйте ID клиента | |
|
| |
|
|
|
|
| а если просто использовать поле со списком? в котором будет выбираться клиент? | |
|
| |
|
|
|
| При использовании поля со списком, при выборе напр. "Фамилии" приходится после выбирать "Имя" из списка имен - это неудобно. Есть ли какое нибудь решение в моем "нелегком" случае , например использовать подформу где бы были только имена клиентов (их фамилия, имя, отчество) или как-то еще? | |
|
| |
|
|
|
| Почему в одном списке не сделать Фамилию и имя и отчествой | |
|
| |
|
|
|
| У меня так и есть число столбцов =3, но записывается только фамилия в поле Фамилия после выбора.. | |
|
| |
|
|
|
| select idКлиента, [фамилия] & " " & [Имя] & " " & [Отчество] as FIO from ТаблицаКлиентов Order by [фамилия] & " " & [Имя] & " " & [Отчество] | |
|
| |
|
|
|
| Osmor, я не совсем понял, что делать с этим запросом? Вообще задача у меня достаточно простая:
Приходит клиент, его необходимо внести в таблицу "Заказы". Я должен выбрать клиента в форме "Заказы" (т.е. чтобы в таблицу "Заказы" улетел только ID клиента) для чего мне нужно видеть весь список клиентов (ФИО).
Вариант1: поле имеет список ФИО клиентов, через функцию DlookUp поле2 отображает значение ID, но оно не заносится в таблицу "Заказы" т.к. оно вычисляемое.
Вариант2: поле имеет список ID клиентов, через DlookUp поле2 НЕ отображает ФИО клиентов (#Ошибка), в ControlSource =DLookUp("[Фамилия]";"Клиенты";"[ClientID] = '" & [Формы]![Заказы]![ClientID] & "'") | |
|
| |
|
|
|
| бросайте вы это дело.... не ваше это...
| |
|
| |
|
|
|
| Нет, я читал книги по Access, не для того чтобы бросать.. Практики нет вот проблема в чем!
Терпение и труд.. | |
|
| |
|
|
|
| ну как по мне - вам все доходчиво объяснили
вам только напрячься, перечитать написанное и сделать правильно :) | |
|
| |
|
|
15 Кб. |
|
| так пойдет? | |
|
| |
|
|
|
| Нет, подчиненную форму сделать не проблема, я хочу, как объяснил выше.
Тем не менее спасибо всем за поддержку, , буду разбираться. | |
|
| |
|
|
|
| от жеж..
хотел за умного сойти | |
|
| |
|
22 Кб. |
|
| Вот набросал, посмотрите | |
|
| |
|
|
|
| Разобрался, сделал поле подстановки, посмотрел ControlSource, поменял на тот запрос, все ОК
Вопрос правда остался:
При использовании "простой" связи по ID клиента, в таблице заказы "имена" отбражаются 2 столбца ID и ФИО, при этом ID записывается как значение поля.
При связи же через поле подстановки, отображается ФИО (ID скрываем) и записывается ФИО, а значение которое хранится в поле = ID.
В чем технически заключается разница подходов при создании отношений??
Набросок ваш посмотрел, спасибо большое | |
|
| |