|
|
|
| Смысл следующий. Сотруднику фирмы нужно отправить, скажем, водителя (или курьера) к клиенту с поручением. Кода у клиента один адрес, в принципе все понятно. Делается таблица "Поездки", связанная с таблицей "Клиенты". Принцип нормализации БД не нарушен.
Но у клиента могут быть разные адреса, скажем 3 филиала. Поэтому в этом случае сделана отдельная таблица под адреса, связанная с табл. "Клиенты".
Так вот сотруднику нужно сформировать поездку по одному из трех адресов, для чего в форме присутсвуют напротив каждого адреса логические поля.
Раньше у меня было сделано таким образом. Сотрудник выбирает нужные ему адреса и в конце жмет кнопку "Сформировать доставку". На кнопке код добавления в совершенно оторванную таблицу записей
DoCmd.RunSQL "INSERT INTO Доставка ( Дата_Доставки, КодКлиента, [Информация по доставке], Сотрудник) SELECT...
DoCmd.RunSQL "INSERT INTO [Клиенты Контакты Доставка] ( КодДоставки, КодКлиента, КодСотрудника ) SELECT DISTINCTROW [Forms]![Доставка Формирование]![КодДоставки]...
| и т.д.
Как-то не оч красиво получается, вроде как база не нормализована в данном случае.
Да и у клиента не только могут быть несколько адресов, но и куча сотрудников, которых нужно выбрать в задание тому же курьеру, и т.п.
Ну вобщем вот так вот, подскажите, как еще можно сделать это задание? | |
|
| |
|
43 Кб. |
|
| Возьми то, что нужно,
что не нужно - в топку,
чего не хватает - добавь.
=>
Идея такая:
Есть заявка-Order
В ней есть задачи - Tasks (маршрут и прочая)
Задача состоит из точек Points (адрес, контрагент, контакт)
Есть исполнители задач Executors (Компания/договор, машина, водитель) / если один, можно вынести в задачу.
Есть табличка контроля исполнения Исполнителями по точкам Compliances. (тебе наверное не нужна)
Возможно, тебе понадобится табличка ОперацииНаТочке, типа:
Груз, кол-во, типОперации(погрузка/разгрузка) | |
|
| |
|
45 Кб. |
|
| Что-то я пока никак не соображу
Вот таблица клиенты
У клиентов много сотрудников, несколько адресов и много телефонов.
Нужно сформировать записи в таблицу "Доставка"
Для этого нужно из таблиц "Контакты", "Адреса" и "Телефоны" выбрать соответсвующие записи. Адрес добавляется только один, т.к. поездка по одному адресу, а телефонов и контактов может быть много, для чего и сделаны "Доставка контакты" и "Доставка телефоны".
Как, по какому событию заносить инфу в последние 2 таблицы?
Я в таблицах контакты, адреса и телефоны сделал логические поля, чтобы сотрудник мог выбрать необходимые записи.
А вот дальше не могу составить код, что должно происходить?
Сделать запрос на добавление? или что? | |
|
| |
|
|
|
| По схеме получается, что один клиент может иметь кучу адресов, контактов и телефонов. Причем эти адреса и телефоны никак не взаимосвязаны. Адрес один, а телефон выбирай какой хочешь не зависимо к какому адресу тот принадлежит. (Попробуй угадай) Главное - это тот один клиент. Причем мобильный - вопросов нет. А стационарный (табл телефон) к какому адресу???? из 10 возможных 20 телефонов. - не угадать. Ну а дальше (по схеме) судя по всему должны присутствовать запросы на добавление. Коды добавляем, видим инфу читаемую. изменение адреса никак не отразится на адресе доставки.
Я бы изменил структуру и выбор осуществлял бы мультиселектом.
Глянь по форруму мультиселект. Вот наивный примерчик. http://hiprog.com/forum/read.php?id_forum=1&id_theme=7720&page=1
Вместо запуска формы запускай запрос на добавление. | |
|
| |
|
|
|
| Запрос на добавление в одну таблицу (Доставка)
с условиями выборки из трёх связанных таблиц.
(Клиент,---- адреса, ----телефоны.) | |
|
| |
|
|
|
| телефон не соответствующий адресу клиента. | |
|
| |
|
|
|
| Таблы не хватает
обзовем ее Сопроводительная
поля
кодДоставки
кодКлиента(не обязательно)
кодКонтакта
кодАдреса
кодТелефона
После выбора куда и кому давим кнопку (что-то типа написать сопроводительную) и по этому событию заполняем эту таблу куда запихиваем id записей нужных таблиц считывая их с формы
на счет логического поля - что-то мне не нравится
дело вот в чем - если 2 юзера одновременно начнут выбирать в табле (таблах) то после попытки сформировать заказ может возникнуть не правильная ситуация
в связи с чем выборка должна храниться в форме юзера | |
|
| |
|
|
|
| snipe привет
в принципе да, но не совсем. Если адрес один и мы его можем запихнуть в эту таблицу "Сопроводительная", то кодКонтакта и тем более кодТелефона много, их в одну таблу не запихнуть. | |
|
| |
|
|
|
| Гоблин сенкс!
Действительно, как я не связал тот факт, что у разных адресов разные сотрудники и телефоны.
Уже переделываю структуру. И хочу попробовать уйти от запросов на добавление. | |
|
| |
|
|
|
| В данной структуре уйти от запросов на добавление не получится. А вообще можно. Сокращай количество таблиц.
Или подчиняй таблице адрес таблицу телефоны. В 1 адресе может быть 10 телефонов. Затем (если это важно) подчиненным отчетом прилагать в заказы....
Тут мне вникать надо. | |
|
| |
|
82 Кб. |
|
| Смотри на схематичную схему.
Клиент имеет кучу адресов по которым сидят некие сотрудники с телефонами. Курьеру даем задание шкандыбать по определенному адресу. (Отсюда будет и клиент и его ФИО и телефон и т.д. все что укажем)
Заполнение. В табле клиенты вписываем клиента.
В подчиненной указываем его адрес и в параллельной форме (Сотрудники клиента) указываем разных сотрудников с их телефонами по каждому конкретному адресу.
Берем курьера (Выбираем из списка), находим нужный адрес, выбираем в полесосписком подарок (подарки) и жмем на кнопку запускаем запрос.
Теперь эту мою хрень можно обрастить всякой дрянью (дата, время, .....) и в отчет. | |
|
| |
|
|
|
|
| Накидано второпях. Желательно форму "Задания" переводить в разные режимы кнопкой "Порученные задания / набор задания " через ровсурс что бы при открытии формы видеть что кому задано, а при переводе в набор задания видеть что на данную дату уже кому назначено (щелканьем по списку) и назначать еще. | |
|
| |
|
60 Кб. |
|
| Что-то вот так в голову пришло | |
|
| |
|
|
|
| БЛИН! Снип, в настоящее время мудрю перетасовкой таблиц (филиал - телефон - контакт - аппаратура). Данная структура рассматривалась.
И вот особенность. Пользователь вводит филиал, телефоны этого филиала и сотрудников. А после надо назначить нужный телефон нужным сотрудникам.
Вот это действие БЛИН и забывается. Получается телефоны и сотрудники есть, а кого по какому телефону звать???
Как данный процесс обязать? (Запретом закрытия формы, если есть неназначенный телефон) или еще как??
2. Сопроводительную не составить, если отсутствует хотя бы 1 элемент (у филиала нет телефона) либо дежурная фраза (НЕТ)
и ее ID.
Что-то подсказывает, что в сопроводительной достаточно будет собрать Заказ (idЗаказа) и Тел (IdТел)
Собственно спасибо за идею. Кое что в данной структуре натолкнуло на мысль текущей проблемы. | |
|
| |
|
|
|
| в той схеме предполагалась так
там есть табла Тел
можно обозвать ее кабинет
т.е. сотрудник может сидеть в одном или нескольких кабинетах
или в одном кабинете стоять несколько телефонов
тогда при вводе сотрудника будут указывать его рабочее место
кроме того у филиала (как у любой организации) есть телефоны официальные
далее
получателем может быть как конкретное лицо в виде сотрудника так и юридическое лицо в данном случае филиал
при заполнении таблы Сопроводительная обязательно поле IdФилиала и IdЗаказа остальные поля могут быть пустые особенно поле телефон (все зависит от наличия информации у оператора)
в этом случае при формировании сопроводительной предполагается залезти в таблу Телефоны и вытащить связанные автоматически (т.е. много) или если указать конкретный телефон (сказали оператору) то будет указан конкретный телефон | |
|
| |
|
|
|
|
Получается телефоны и сотрудники есть, а кого по какому телефону звать???
|
хм...заморочка. И прежде всего для менеджеров, которые вводят инфу по новым клиентам. У себя я сделал поле Доб. (добавочный телефон рядом с IDКонтакта), как правило в организациях стоит атс, а у сотрудников внутренние номера. Но если АТС нет и номера прямые...ну фиг знает...Делать номера телефонов в подчинение ИДКонтакта...не правильно как-то.... | |
|
| |
|
79 Кб. |
|
| тут разные решения подходят ===>>>
например не заводить телефон для компании а заводить телефон "Reception" или "Office" - как дефолтную запись в таблице "Employees" без указания "ContactID" а только указав "Department" можно тоже дефолтный
т.е. создавая запись в tblCompanies и вписывая первый номер телефона мы сразу создаем дефолтную запись в таблице tblDepartments (Optional) и дефолтную запись в таблице tblEmployees и уже для этой записи указываем номер телефона
в общем много разных способов, главное не перемудрить | |
|
| |