| Предыдущая тема :: Следующая тема   | 
	
	
	
		| Автор | 
		Сообщение | 
	
	
		Counsellor
 
 
  Зарегистрирован: 22.09.2003 Сообщения: 32
 
  | 
		
			
				 Добавлено: Ср Ноя 17 2004 13:18    Заголовок сообщения: Как отфильтровать значение в списке | 
				     | 
			 
			
				
  | 
			 
			
				Есть некая база данных в двух таблицах связь по ClientCode, т.е. есть фирмы клиенты, на них есть контактные лица и есть таблица переговоров, в которой указывается кто с кем говорил.
 
В форме необходимо сделать что бы в списке контактных лиц, который вываливается,  были значения отфильтрованные по полю ClientCode. Сейчас вываливаются все значения таблицы, т.е. абсолютно все контактные лица.
 
 
Вот код:
 
 
SELECT DISTINCT NewClientContacts.[Контактный человек]
 
FROM NewClients INNER JOIN NewClientContacts ON NewClients.ClientCode = NewClientContacts.ClientCode
 
ORDER BY NewClientContacts.[Контактный человек]; _________________ Не все так плохо, все намного ХУЖЕ! | 
			 
		  | 
	
	
		| Вернуться к началу | 
		 | 
	
	
		  | 
	
	
		Scaramouch
 
 
  Зарегистрирован: 11.01.2004 Сообщения: 143 Откуда: Столица нашей Родины
  | 
		
			
				 Добавлено: Чт Ноя 18 2004 08:46    Заголовок сообщения:  | 
				     | 
			 
			
				
  | 
			 
			
				1. Здесь принято сначала говорить, в какой субд работаешь. Сиквел все-таки различается в разных субд  
 
2. Не совсем понятно, что значит "отфильтрованные". Я так полагаю, что тебе нужно либо WHERE либо GROUP BY:) , но я могу ошибаться, так как не понял задачи.
 
3. Я не понял, что ты в запросе хочешь. Зачем тебе таблица NewClients, если ты просто выбираешь все из NewClientContacts???
 
Пожалуйста, опиши задачу полностью, например:
 
"нужно вывести форму, в которой есть выпадающее меню с названиями фирм и, в соответствии с выбранной фирмой, выводится список контактных лиц" или "нужно вывести всех контактных лиц, сгруппировав их по фирмам" или еще что-нибудь; "программа пишется на языке ... используя субд ..." _________________ Ноги - это две лишние руки. | 
			 
		  | 
	
	
		| Вернуться к началу | 
		 | 
	
	
		  | 
	
	
		Counsellor
 
 
  Зарегистрирован: 22.09.2003 Сообщения: 32
 
  | 
		
			
				 Добавлено: Чт Ноя 18 2004 09:28    Заголовок сообщения: Описание задачи | 
				     | 
			 
			
				
  | 
			 
			
				Microsoft Access 2000:
 
Пишется база для работы менеджерского состава фирмы.
 
Есть клиенты, т.е. заводы, которым поставляется оборудование.
 
У клиентов есть несколько контактных лиц, у которых есть свои телефоны, факсы, e-mailы и т.д.
 
Соответственно две таблицы в одной заводы, в другой контактные лица. Связь по ClientCode.
 
После разговора менеджер заносит в третью таблицу суть переговоров с контактным лицом. Что бы автоматизировать процесс необходимо в подчиненной форме "Переговоры" (Основная "Клиент", подчиненные формы "Контакты", "Переговоры", "Оборудование") выбирать контактное лицо из поля-списка, который берется из таблицы "Клиенты". В данный момент вываливается весь список контактных лиц по всем заводам, а надо, чтобы только список лиц только по данному клиенту. _________________ Не все так плохо, все намного ХУЖЕ! | 
			 
		  | 
	
	
		| Вернуться к началу | 
		 | 
	
	
		  | 
	
	
		Scaramouch
 
 
  Зарегистрирован: 11.01.2004 Сообщения: 143 Откуда: Столица нашей Родины
  | 
		
			
				 Добавлено: Пт Ноя 19 2004 08:47    Заголовок сообщения:  | 
				     | 
			 
			
				
  | 
			 
			
				 	  | Цитата: | 	 		  | В данный момент вываливается весь список контактных лиц по всем заводам, а надо, чтобы только список лиц только по данному клиенту. | 	  
 
Ну а как ты думал?? Посмотри на запрос, который ты привел - переводя его на русский язык , получаем: "Выбрать все уникальные контакты из таблицы NewClientContacts, для которых есть соответствующая(с тем же ClientCode) запись в таблице NewClients, отсортировав полученный список по имени контактного лица".
 
Очевидно, что у тебя и получается список вообще всех контактных лиц .
 
Тебе надо выбирать только Контактных Лиц с определенным ClientCode, который соответствует данному клиенту, то есть 
 
SELECT NewClientContacts.[Контактный человек] FROM NewClientContacts WHERE ClientCode=... ORDER BY NewClientContacts.[Контактный человек];
 
Ты же в подчиненной форме знаешь ClientCode, ведь сама эта форма создается для определенного клиента.
 
Или я опять неправильно понял?  _________________ Ноги - это две лишние руки. | 
			 
		  | 
	
	
		| Вернуться к началу | 
		 | 
	
	
		  | 
	
	
		Counsellor
 
 
  Зарегистрирован: 22.09.2003 Сообщения: 32
 
  | 
		
			
				 Добавлено: Пт Ноя 19 2004 10:31    Заголовок сообщения: Понял ты правильно | 
				     | 
			 
			
				
  | 
			 
			
				 	  | Цитата: | 	 		  | SELECT NewClientContacts.[Контактный человек] FROM NewClientContacts WHERE ClientCode=... ORDER BY NewClientContacts.[Контактный человек]; | 	  
 
 
Все правильно, только как мне получить этот ClientCode. Частично я эту проблемму решил. Но не всегда выдается список отфильтрованный по данному клиенту. Например, я сделал поиск клиентов по городам. Если просматривать клиентов подряд, то в подчиненных формах переговоров список действительно получается из тех контактных лиц которые принадлежат данному клиенту. Но если сделать поиск по клиенту, то после перехода в подчиненную форму "Переговоры", видимо ClientCode остается старый, выдается список тех контактных лиц которые принадлежат клиенту с записи которого производили поиск. Помогает только одно, если после поиска передать фокус полю "Имя клиента" и фильтр в списке делать по имени клиента, а не по ClientCode.
 
Пока загвоздка в том, что я не знаю где и как этот ClientCode выцепить для обработки запроса. _________________ Не все так плохо, все намного ХУЖЕ! | 
			 
		  | 
	
	
		| Вернуться к началу | 
		 | 
	
	
		  | 
	
	
		Scaramouch
 
 
  Зарегистрирован: 11.01.2004 Сообщения: 143 Откуда: Столица нашей Родины
  | 
		
			
				 Добавлено: Пт Ноя 19 2004 14:18    Заголовок сообщения:  | 
				     | 
			 
			
				
  | 
			 
			
				Ну не проблема сделать выбор по имени клиента
 
SELECT NewClientContacts.[Контактный человек] FROM NewClientContacts,NewClients WHERE NewClients.ClientCode=NewClientContacts.ClientCode AND NewClients.ClientName=... ORDER BY NewClientContacts.[Контактный человек]; _________________ Ноги - это две лишние руки. | 
			 
		  | 
	
	
		| Вернуться к началу | 
		 | 
	
	
		  | 
	
	
		Counsellor
 
 
  Зарегистрирован: 22.09.2003 Сообщения: 32
 
  | 
		
			
				 Добавлено: Пт Ноя 19 2004 14:28    Заголовок сообщения: А где взять ... | 
				     | 
			 
			
				
  | 
			 
			
				 	  | Цитата: | 	 		  | NewClients.ClientName=... | 	  
 
Как из формы или таблицы выдрать текущее значение обозначенное точками в твоем примере? Ведь надо, что бы выводился список соответствующй именно текущему клиенту. _________________ Не все так плохо, все намного ХУЖЕ! | 
			 
		  | 
	
	
		| Вернуться к началу | 
		 | 
	
	
		  | 
	
	
		Moby
 
 
  Зарегистрирован: 19.11.2004 Сообщения: 268
 
  | 
		
			
				 Добавлено: Пн Дек 06 2004 14:07    Заголовок сообщения:  | 
				     | 
			 
			
				
  | 
			 
			
				я так понимаю что поиск ведётся в два этапа - сначала выбираем клиента (поиском или напрямую из списка) далее мы выводим на форму выбранного клиента, все контактные лица выбранного клиента и какие то поля диалога, что надо внести в базу. я правильно понял суть задачи?
 
если так, то всё елементарно - после поиска клиента (первого этапа) - мы будем иметь его ID, а имея его ID сформировать список контактных лиц клиента с указанным ID не представляет никакой сложности... _________________ Профи - это оборзевший ламмер | 
			 
		  | 
	
	
		| Вернуться к началу | 
		 | 
	
	
		  | 
	
	
		 |