Rambler's Top100
Форум: MS ACCESSVBVBA MS OfficeMS SQL server
Новые сообщения: 0000

Форум: MS ACCESS

Вопросы связанные с MS ACCESS

Обновить визитку
Участники «Online»
Все участники

 
 

Доброго времени суток, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Как взять данные из таблицы??
 
 автор: П.Полиграфович   (28.04.2008 в 16:56)   личное сообщение
 
 

Имеется форма Заказы, в ней поле со списком, где "фамилии" таблицы "Клиенты", в этой же форме есть поля "Имя" и "Отчество" - хочу чтобы после выбора фамилии, поля "имя", "отчество" и прочие данные заполнялись автоматом, по записи из таблицы "Клиенты" (у каждого клиента есть уникальное поле ID)
Пытался на выходе поставить что-то вот такое:

Private Sub Фамилия_Exit(Cancel As Integer)
If Me.Фамилия.Text = "Фамилия" Then
Me.Имя.SetFocus
Заказы.Имя.Text = Клиенты.Имя.Text
End If
End Sub

Подскажите чего-нибудь умное

  Ответить  
 
 автор: FORMAT   (28.04.2008 в 17:10)   личное сообщение
 
 

Меняйте ControlSource полей.
Что то типа
Select [имя] from Таблица where id = me.Фамилия.value
(Если вы в комбобокс поставили фамилию из таблицы, то как правило там хранится значение ключевого поля id )
И т.д. для каждого поля.

  Ответить  
 
 автор: П.Полиграфович   (28.04.2008 в 22:24)   личное сообщение
 
 

На форме не ComboBox, простое поле. Записал в нем:

=(SELECT [Имя] FROM [Клиенты] WHERE [Фамилия] = Me.Фамилия.Value)

Ну чтобы по фамилии выбиралось имя - Doesn't Work! в поле отбражается #имя?
Сначала было сообщение о цикл.ссылке, заменил имя поле "имя" на "name1" - больше не выдает сообщение об ошибке, но и подставлять не хочет

  Ответить  
 
 автор: Силыч   (28.04.2008 в 22:58)   личное сообщение
 
 


хелп читать пробовали? хоть раз в жизни?
за руль машины тоже так вот, сразу садитесь?

в вашем нелегком случае
=dlookup("[Имя]","Клиенты","[Фамилия] = '" & Me.Фамилия.Value & "'")

  Ответить  
 
 автор: П.Полиграфович   (29.04.2008 в 00:54)   личное сообщение
 
 

Пишу в ControlSource

=DLookUp("[Имя]";"Клиенты";"[Фамилия] = ' & Me.Фамилия.Value  &  '")

Не выводит значение из "Клиенты"
В запросе используется точка с запятой (в строке оператора SQL и в программных модулях используется запятая)
Вот так:

=DLookUp("[Имя]";"Клиенты";"[Фамилия] = ' & Forms![Заказы]![Фамилия]  &  '")

Тоже не работает и не ругается !

  Ответить  
 
 автор: osmor   (29.04.2008 в 10:26)   личное сообщение
 
 


=DLookUp("[Имя]";"Клиенты";"[Фамилия] = '" & Forms![Заказы]![Фамилия]  &  "'") 

  Ответить  
 
 автор: П.Полиграфович   (29.04.2008 в 23:19)   личное сообщение
 
 

Osmor, спасибо огромное Прочитал, что конкатенация ИЛИ апострофом ИЛИ кавычками для текста, ИЛИ дезинформировало (такой синтаксис, как вычитал -применим для анг.версии Access)
IT WORKS!!

  Ответить  
 
 автор: П.Полиграфович   (05.05.2008 в 13:04)   личное сообщение
 
 

Проблемка:
Только сейчас заметил, что данные из полей формы "Заказы", в ControlSource которыx стоит фукция Dlookup, не заносятся в таблицу "Заказы" ??
Как это обойти?

  Ответить  
 
 автор: Анатолий (Киев)   (05.05.2008 в 14:29)   личное сообщение
 
 

Естественно - не заносятся. Это ж вычисляемые поля...
А зачем? Это нелогично и неправильно. У вас есть справочник "Клиенты", в котором есть вся информация о клиенте. Он связан с таблицей "Заказы". Вот и постройте запрос на двух таблицах.

  Ответить  
 
 автор: П.Полиграфович   (06.05.2008 в 00:08)   личное сообщение
 
 

Хотел, чтобы при заполнении таблицы заказы, через форму Имя и Отчество записывались вместе с Фамилией - как иначе? Если выбирается фамилия, как можнас имя то соответствующее фамилии и отчество, выбрать?
Таблицы связаны по полю КлиентID, при записи в форму необходимо заполнять этот ID, иначе ругается на нарушение целостности данных (Ошибка 3201), как узнать этот ID не посмотрев в таблицу. Да это и не выход в общем.

  Ответить  
 
 автор: Explorer   (06.05.2008 в 00:46)   личное сообщение
 
 

>как иначе?

а среди ваших клиентов нет однофамильцев?

выбирайте из списка фамилию+имя+отчество (или инициалы) а в связанную (подчиненную) таблицу подставляйте ID клиента

  Ответить  
 
 автор: П.Полиграфович   (07.05.2008 в 21:30)   личное сообщение
 
 

???

  Ответить  
 
 автор: osmor   (08.05.2008 в 10:47)   личное сообщение
 
 

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

  Ответить  
 
 автор: П.Полиграфович   (09.05.2008 в 18:36)   личное сообщение
 
 

При использовании поля со списком, при выборе напр. "Фамилии" приходится после выбирать "Имя" из списка имен - это неудобно. Есть ли какое нибудь решение в моем "нелегком" случае , например использовать подформу где бы были только имена клиентов (их фамилия, имя, отчество) или как-то еще?

  Ответить  
 
 автор: osmor   (09.05.2008 в 19:11)   личное сообщение
 
 

Почему в одном списке не сделать Фамилию и имя и отчествой

  Ответить  
 
 автор: П.Полиграфович   (09.05.2008 в 23:10)   личное сообщение
 
 

У меня так и есть число столбцов =3, но записывается только фамилия в поле Фамилия после выбора..

  Ответить  
 
 автор: osmor   (09.05.2008 в 23:47)   личное сообщение
 
 

select idКлиента, [фамилия] & " " & [Имя] & " " & [Отчество] as FIO from ТаблицаКлиентов Order by [фамилия] & " " & [Имя] & " " & [Отчество]

  Ответить  
 
 автор: П.Полиграфович   (12.05.2008 в 15:06)   личное сообщение
 
 

Osmor, я не совсем понял, что делать с этим запросом? Вообще задача у меня достаточно простая:
Приходит клиент, его необходимо внести в таблицу "Заказы". Я должен выбрать клиента в форме "Заказы" (т.е. чтобы в таблицу "Заказы" улетел только ID клиента) для чего мне нужно видеть весь список клиентов (ФИО).
Вариант1: поле имеет список ФИО клиентов, через функцию DlookUp поле2 отображает значение ID, но оно не заносится в таблицу "Заказы" т.к. оно вычисляемое.
Вариант2: поле имеет список ID клиентов, через DlookUp поле2 НЕ отображает ФИО клиентов (#Ошибка), в ControlSource =DLookUp("[Фамилия]";"Клиенты";"[ClientID] = '" & [Формы]![Заказы]![ClientID] & "'")

  Ответить  
 
 автор: Кабан   (12.05.2008 в 15:24)   личное сообщение
 
 

бросайте вы это дело.... не ваше это...

  Ответить  
 
 автор: П.Полиграфович   (12.05.2008 в 15:34)   личное сообщение
 
 

Нет, я читал книги по Access, не для того чтобы бросать.. Практики нет вот проблема в чем!
Терпение и труд..

  Ответить  
 
 автор: Кабан   (12.05.2008 в 15:40)   личное сообщение
 
 

ну как по мне - вам все доходчиво объяснили
вам только напрячься, перечитать написанное и сделать правильно :)

  Ответить  
 
 автор: П.Полиграфович   (16.05.2008 в 11:20)   личное сообщение
 
 

=>

  Ответить  
 
 автор: Скорп   (12.05.2008 в 16:08)   личное сообщение
15 Кб.
 
 

так пойдет?

  Ответить  
 
 автор: П.Полиграфович   (12.05.2008 в 21:53)   личное сообщение
 
 

Нет, подчиненную форму сделать не проблема, я хочу, как объяснил выше.
Тем не менее спасибо всем за поддержку, , буду разбираться.

  Ответить  
 
 автор: Скорп   (12.05.2008 в 22:19)   личное сообщение
 
 

от жеж..
хотел за умного сойти

  Ответить  
 
 автор: osmor   (13.05.2008 в 09:32)   личное сообщение
22 Кб.
 
 

Вот набросал, посмотрите

  Ответить  
 
 автор: П.Полиграфович   (16.05.2008 в 11:56)   личное сообщение
 
 

Разобрался, сделал поле подстановки, посмотрел ControlSource, поменял на тот запрос, все ОК
Вопрос правда остался:
При использовании "простой" связи по ID клиента, в таблице заказы "имена" отбражаются 2 столбца ID и ФИО, при этом ID записывается как значение поля.
При связи же через поле подстановки, отображается ФИО (ID скрываем) и записывается ФИО, а значение которое хранится в поле = ID.
В чем технически заключается разница подходов при создании отношений??
Набросок ваш посмотрел, спасибо большое

  Ответить  
HiProg.com - Технологии программирования
Rambler's Top100 TopList