powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / как при выборе клиента из списка отобразить его адрес?...
21 сообщений из 21, страница 1 из 1
как при выборе клиента из списка отобразить его адрес?...
    #32381765
Фотография elcolex
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
привет...

есть форма ( таблица ), на форме раскр. список ( Клиент ), текстовое поле ( Адрес клиента )... вся информация хранится в одной таблице... нужно, чтобы при выборе значения из списка, в текстовое поле записывался адрес этого клиента...

спасибо...

лучше побыть дураком 15 мин., чем остаться им на всю жизнь...
...
Рейтинг: 0 / 0
как при выборе клиента из списка отобразить его адрес?...
    #32381782
Фотография Latuk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ви источник поля со списком
добавляеш столбец с адресом.
Чтобы его не было видно делаеш его длинну =0см
В текстовом поле делаеш ссылку на столбец=ПолеСоСписком.Column(1)
Или если надо просто заполнить поле,
Делаеш его инициализацию по какому нибудь событию
(например после обновления поля со списком)
ТекстовоеПоле=ПолеСоСписком.Column(Какой он там у тебя по счету)
...
Рейтинг: 0 / 0
как при выборе клиента из списка отобразить его адрес?...
    #32381797
Фотография # Darth Vader #
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Раскрывающийся список должен иметь 2 столбца клиент и адрес

В свойстве источник строк должен быть запрос типа
< select клиент, адрес from Таблица >

Свойство число столбцов - 2

В событии AfterUpdate списка написать примерно это

текстовое поле.setfocus
текстовое поле.text=НазваниеРаскрСписка.column(1)
...
Рейтинг: 0 / 0
как при выборе клиента из списка отобразить его адрес?...
    #32381810
Фотография elcolex
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
спасибо!...

а вот такой еще вопрос...
если в таблице сделать distinct по полям Клиент и адрес

select distinct customer, address from tblMy

то для одного клиента может быть выведено несколько строк с адресом, это нормально, просто ведется история добавления адресов... так вот, в таблице есть еще поле Дата ( date ), как тогда привязать текстбокс, чтобы он, после выбора из поля со списком, отображал последний адрес для клиента?...

я так подозреваю, что это нужно делать в обработчике события ПолеСоСписком_Change, а вот дальше не знаю...(

в поле RowSource у меня стоит "select distinct customer from tblMy"...

лучше побыть дураком 15 мин., чем остаться им на всю жизнь...
...
Рейтинг: 0 / 0
как при выборе клиента из списка отобразить его адрес?...
    #32381826
Фотография # Darth Vader #
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Значению свойства Уникальные записи (UniqueRecords) соответствует предикат DISTINCTROW. Свойству Уникальные значения (UniqueValues) соответствует предикат DISTINCT.
...
Рейтинг: 0 / 0
как при выборе клиента из списка отобразить его адрес?...
    #32381841
Фотография elcolex
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
?... чегой-то я не понял ничего...)

вы имеете в ввиду, заполнение поля со списком, используя предикат distinct row?... тогда получается, что в поле со списком будут повторятся записи с одним и тем же клиентом, а мне нужно, чтобы в списке отображались клиенты ( без повторений ), и при выборе заполнялося бы текстовое поле с последним адресом клиента...

лучше побыть дураком 15 мин., чем остаться им на всю жизнь...
...
Рейтинг: 0 / 0
как при выборе клиента из списка отобразить его адрес?...
    #32381874
Фотография # Darth Vader #
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Все как раз наоборот!
...
Рейтинг: 0 / 0
как при выборе клиента из списка отобразить его адрес?...
    #32382173
Фотография elcolex
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
блин, ну я и тупой...

в общем, я сделал так:
1. для свойства RowSource поля со списком установил следующий запрос, который возвращает список клиентов с последними адресами:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
SELECT DISTINCT 
	r.end_customer_name, 
	(
		select 
			r2.end_address 
		from 
			Routings r2 
		where 
			r2.id = 
					( 
						select 
							max ( r3.id ) 
						from 
							Routings r3 
						where 
							r3.end_customer_name = r.end_customer_name 
					) 
	) AS end_address
FROM 
	Routings r;

2. свойство Количество столбцов списка - 2 ( второй столбец скрыл )
3. написал обработчик события :

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
Private Sub end_customer_name_AfterUpdate()
    Dim str As String

    If Not IsNull( Me.end_customer_name.Column(  1  ) ) Then
        str = Me.end_customer_name.Column(  1  )
        Me.txtAddressTo.SetFocus
        Me.txtAddressTo.Text = str ' !!! вот здесь появляется ошибка...
    Else
        Me.txtAddressTo.SetFocus
        Me.txtAddressTo.Text =  " " 
    End If
End Sub


... после выбора из списка, на выделенной строке появляется сообщение об ошибке :

"Макрос или функция, связанные со свойством 'До обновления' или 'Условие на значение' этого поля не позволяютприложению Accessданные в этом поле"

что тут не так??...

лучше побыть дураком 15 мин., чем остаться им на всю жизнь...
...
Рейтинг: 0 / 0
как при выборе клиента из списка отобразить его адрес?...
    #32382633
Фотография elcolex
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
пожалуйста, любые идеи?!...

лучше побыть дураком 15 мин., чем остаться им на всю жизнь...
...
Рейтинг: 0 / 0
как при выборе клиента из списка отобразить его адрес?...
    #32382733
Фотография AlexJuice
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вообще-то хранить историю изменений в той же таблице - это... как бы сказать помягче... ну некрасиво, что ли.
Вот и запросы некрасивые получаются
...
Рейтинг: 0 / 0
как при выборе клиента из списка отобразить его адрес?...
    #32382794
Фотография elcolex
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
нормализацию БД я не проводил сознательно... база маленькая, да и упростить хотелось... еще опыта работы с Access мало... парадокс получается, работаю профессионально с MS SQL Server 2000 довольно таки много, а вот с такой простой БД как ACCESS, в которой можно сделать нужные отчеты практически без программирования, возникают такие трудности...


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

лучше побыть дураком 15 мин., чем остаться им на всю жизнь...
...
Рейтинг: 0 / 0
как при выборе клиента из списка отобразить его адрес?...
    #32382845
Фотография AlexJuice
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Так куда все-таки должен записываться адрес?
Если бы просто в поле, таких проблем бы не было.
Поле txtAddressTo к чему привязано?
...
Рейтинг: 0 / 0
как при выборе клиента из списка отобразить его адрес?...
    #32382847
Фотография elcolex
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
такой еще факт...

если в обработчике события игнорировать ошибки ( on error resume next ), то адрес заполняется успешно, и в таблице тоже сохраняется...

лучше побыть дураком 15 мин., чем остаться им на всю жизнь...
...
Рейтинг: 0 / 0
как при выборе клиента из списка отобразить его адрес?...
    #32382853
Фотография elcolex
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Так куда все-таки должен записываться адрес?
Если бы просто в поле, таких проблем бы не было.
Поле txtAddressTo к чему привязано?


поле привязывается к столбцу end_address из той же таблицы...

лучше побыть дураком 15 мин., чем остаться им на всю жизнь...
...
Рейтинг: 0 / 0
как при выборе клиента из списка отобразить его адрес?...
    #32382888
Фотография AlexJuice
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дык он наверное из-за этой привязки и заполняется. Тогда никакие дополнительные телодвижения не нужны.
...
Рейтинг: 0 / 0
как при выборе клиента из списка отобразить его адрес?...
    #32382929
Фотография elcolex
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
сценарий такой :
когда пользователь открывает, уже сохраненную, форму, то все поля заполняются из таблицы ( ну, по привязке ), он может вручную изменить адрес в поле, или оно может заполниться автоматически при выборе клиента из списка ( вставится последний адрес для клиента )... все ОК, и все работает, но... если только игнорировать ошибки в обработчике end_customer_AfterUpdate, о которых я говорил... что то подсказывает мне, что это не есть гут...

лучше побыть дураком 15 мин., чем остаться им на всю жизнь...
...
Рейтинг: 0 / 0
как при выборе клиента из списка отобразить его адрес?...
    #32382992
Фотография AlexJuice
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
1. А переменная str что возвращает в случае ошибки
2. Процедуру можно переписать так:
Private Sub end_customer_name_AfterUpdate()
Me.txtAddressTo = Nz(Me.end_customer_name.Column(1))
End Sub
3. Да и запрос вроде тоже. Только времени и сосредоточенности что-то не хватает...
...
Рейтинг: 0 / 0
как при выборе клиента из списка отобразить его адрес?...
    #32382996
Фотография AlexJuice
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Блин... Ну и денек сегодня... Прошу прошения
Код: plaintext
1.
2.
Private Sub end_customer_name_AfterUpdate() 
Me.txtAddressTo = Nz(Me.end_customer_name.Column( 1 ),  0 ) 
End Sub 
...
Рейтинг: 0 / 0
как при выборе клиента из списка отобразить его адрес?...
    #32383062
Фотография elcolex
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
1. А переменная str что возвращает в случае ошибки

возвращается значение из Me.end_customer_name.Column(1)), при чем совершенно корректное, т.е. текстовую строку с адресом выбранного клиента, который доллжен быть вставлен... я использую эту переменную специально, чтобы сохранить адрес перед вызовом метода SetFocus, так как ( почему-то!?... ) после вызова этого метода, Me.end_customer_name.Column(1) возвращает Null...

2. Процедуру можно переписать так:
Private Sub end_customer_name_AfterUpdate()
Me.txtAddressTo = Nz(Me.end_customer_name.Column(1), 0)
End Sub


функция Nz, похоже, аналог coalesce в T-SQL!?... ошибка возникает в момент записи в текстбокс... программа приостанавливается на этой строчке, со всеми вытекающими... как я говорил, on error resume next в начале процедуры помогает...

3. Да и запрос вроде тоже. Только времени и сосредоточенности что-то не хватает...

да согласен, запрос тоже по другому можно ( нужно ) переписать... по крайней мере, сейчас он возвращает, то что нужно...

лучше побыть дураком 15 мин., чем остаться им на всю жизнь...
...
Рейтинг: 0 / 0
как при выборе клиента из списка отобразить его адрес?...
    #32383088
Фотография AlexJuice
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А если вообще убрать эту процедуру?
ЗЫ. Nz - аналог ISNULL
...
Рейтинг: 0 / 0
как при выборе клиента из списка отобразить его адрес?...
    #32383124
Фотография elcolex
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А если вообще убрать эту процедуру?

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

если убрать процедуру, то ничего не происходит... данные привязываются только при открытии формы...

лучше побыть дураком 15 мин., чем остаться им на всю жизнь...
...
Рейтинг: 0 / 0
21 сообщений из 21, страница 1 из 1
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / как при выборе клиента из списка отобразить его адрес?...
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]