Предыдущая тема :: Следующая тема |
Автор |
Сообщение |
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 не представляет никакой сложности... _________________ Профи - это оборзевший ламмер |
|
Вернуться к началу |
|
 |
|