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

Форум: MS ACCESS

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

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

 
 

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

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

тема: Подкиньте идею по формированию записей.
 
 автор: Скорп   (13.12.2010 в 16:22)   личное сообщение
 
 

Смысл следующий. Сотруднику фирмы нужно отправить, скажем, водителя (или курьера) к клиенту с поручением. Кода у клиента один адрес, в принципе все понятно. Делается таблица "Поездки", связанная с таблицей "Клиенты". Принцип нормализации БД не нарушен.

Но у клиента могут быть разные адреса, скажем 3 филиала. Поэтому в этом случае сделана отдельная таблица под адреса, связанная с табл. "Клиенты".
Так вот сотруднику нужно сформировать поездку по одному из трех адресов, для чего в форме присутсвуют напротив каждого адреса логические поля.
Раньше у меня было сделано таким образом. Сотрудник выбирает нужные ему адреса и в конце жмет кнопку "Сформировать доставку". На кнопке код добавления в совершенно оторванную таблицу записей

DoCmd.RunSQL "INSERT INTO Доставка ( Дата_Доставки, КодКлиента, [Информация по доставке], Сотрудник) SELECT...

DoCmd.RunSQL "INSERT INTO [Клиенты Контакты Доставка] ( КодДоставки, КодКлиента, КодСотрудника ) SELECT DISTINCTROW [Forms]![Доставка Формирование]![КодДоставки]...
и т.д.
Как-то не оч красиво получается, вроде как база не нормализована в данном случае.
Да и у клиента не только могут быть несколько адресов, но и куча сотрудников, которых нужно выбрать в задание тому же курьеру, и т.п.

Ну вобщем вот так вот, подскажите, как еще можно сделать это задание?

  Ответить  
 
 автор: Lukas   (13.12.2010 в 16:39)   личное сообщение
43 Кб.
 
 

Возьми то, что нужно,
что не нужно - в топку,
чего не хватает - добавь.
=>
Идея такая:
Есть заявка-Order
В ней есть задачи - Tasks (маршрут и прочая)
Задача состоит из точек Points (адрес, контрагент, контакт)
Есть исполнители задач Executors (Компания/договор, машина, водитель) / если один, можно вынести в задачу.
Есть табличка контроля исполнения Исполнителями по точкам Compliances. (тебе наверное не нужна)

Возможно, тебе понадобится табличка ОперацииНаТочке, типа:
Груз, кол-во, типОперации(погрузка/разгрузка)

  Ответить  
 
 автор: Скорп   (15.12.2010 в 12:26)   личное сообщение
45 Кб.
 
 

Что-то я пока никак не соображу
Вот таблица клиенты
У клиентов много сотрудников, несколько адресов и много телефонов.
Нужно сформировать записи в таблицу "Доставка"
Для этого нужно из таблиц "Контакты", "Адреса" и "Телефоны" выбрать соответсвующие записи. Адрес добавляется только один, т.к. поездка по одному адресу, а телефонов и контактов может быть много, для чего и сделаны "Доставка контакты" и "Доставка телефоны".
Как, по какому событию заносить инфу в последние 2 таблицы?
Я в таблицах контакты, адреса и телефоны сделал логические поля, чтобы сотрудник мог выбрать необходимые записи.
А вот дальше не могу составить код, что должно происходить?
Сделать запрос на добавление? или что?

  Ответить  
 
 автор: Гоблин   (15.12.2010 в 21:42)   личное сообщение
 
 

По схеме получается, что один клиент может иметь кучу адресов, контактов и телефонов. Причем эти адреса и телефоны никак не взаимосвязаны. Адрес один, а телефон выбирай какой хочешь не зависимо к какому адресу тот принадлежит. (Попробуй угадай) Главное - это тот один клиент. Причем мобильный - вопросов нет. А стационарный (табл телефон) к какому адресу???? из 10 возможных 20 телефонов. - не угадать. Ну а дальше (по схеме) судя по всему должны присутствовать запросы на добавление. Коды добавляем, видим инфу читаемую. изменение адреса никак не отразится на адресе доставки.
Я бы изменил структуру и выбор осуществлял бы мультиселектом.

Глянь по форруму мультиселект. Вот наивный примерчик. http://hiprog.com/forum/read.php?id_forum=1&id_theme=7720&page=1
Вместо запуска формы запускай запрос на добавление.

  Ответить  
 
 автор: час   (15.12.2010 в 21:55)   личное сообщение
 
 

Запрос на добавление в одну таблицу (Доставка)
с условиями выборки из трёх связанных таблиц.
(Клиент,---- адреса, ----телефоны.)

  Ответить  
 
 автор: Гоблин   (15.12.2010 в 21:59)   личное сообщение
 
 

телефон не соответствующий адресу клиента.

  Ответить  
 
 автор: snipe   (16.12.2010 в 03:52)   личное сообщение
 
 

Таблы не хватает
обзовем ее Сопроводительная
поля
кодДоставки
кодКлиента(не обязательно)
кодКонтакта
кодАдреса
кодТелефона

После выбора куда и кому давим кнопку (что-то типа написать сопроводительную) и по этому событию заполняем эту таблу куда запихиваем id записей нужных таблиц считывая их с формы

на счет логического поля - что-то мне не нравится
дело вот в чем - если 2 юзера одновременно начнут выбирать в табле (таблах) то после попытки сформировать заказ может возникнуть не правильная ситуация
в связи с чем выборка должна храниться в форме юзера

  Ответить  
 
 автор: Скорп   (16.12.2010 в 09:39)   личное сообщение
 
 

snipe привет
в принципе да, но не совсем. Если адрес один и мы его можем запихнуть в эту таблицу "Сопроводительная", то кодКонтакта и тем более кодТелефона много, их в одну таблу не запихнуть.

  Ответить  
 
 автор: Скорп   (16.12.2010 в 09:35)   личное сообщение
 
 

Гоблин сенкс!
Действительно, как я не связал тот факт, что у разных адресов разные сотрудники и телефоны.
Уже переделываю структуру. И хочу попробовать уйти от запросов на добавление.

  Ответить  
 
 автор: Гоблин   (16.12.2010 в 21:10)   личное сообщение
 
 

В данной структуре уйти от запросов на добавление не получится. А вообще можно. Сокращай количество таблиц.
Или подчиняй таблице адрес таблицу телефоны. В 1 адресе может быть 10 телефонов. Затем (если это важно) подчиненным отчетом прилагать в заказы....
Тут мне вникать надо.

  Ответить  
 
 автор: Гоблин   (16.12.2010 в 22:37)   личное сообщение
82 Кб.
 
 

Смотри на схематичную схему.
Клиент имеет кучу адресов по которым сидят некие сотрудники с телефонами. Курьеру даем задание шкандыбать по определенному адресу. (Отсюда будет и клиент и его ФИО и телефон и т.д. все что укажем)

Заполнение. В табле клиенты вписываем клиента.
В подчиненной указываем его адрес и в параллельной форме (Сотрудники клиента) указываем разных сотрудников с их телефонами по каждому конкретному адресу.
Берем курьера (Выбираем из списка), находим нужный адрес, выбираем в полесосписком подарок (подарки) и жмем на кнопку запускаем запрос.
Теперь эту мою хрень можно обрастить всякой дрянью (дата, время, .....) и в отчет.

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

ничотак

выразительно :)

  Ответить  
 
 автор: Гоблин   (17.12.2010 в 07:53)   личное сообщение
 
 

Накидано второпях. Желательно форму "Задания" переводить в разные режимы кнопкой "Порученные задания / набор задания " через ровсурс что бы при открытии формы видеть что кому задано, а при переводе в набор задания видеть что на данную дату уже кому назначено (щелканьем по списку) и назначать еще.

  Ответить  
 
 автор: snipe   (17.12.2010 в 08:34)   личное сообщение
60 Кб.
 
 

Что-то вот так в голову пришло

  Ответить  
 
 автор: Гоблин   (17.12.2010 в 21:29)   личное сообщение
 
 

БЛИН! Снип, в настоящее время мудрю перетасовкой таблиц (филиал - телефон - контакт - аппаратура). Данная структура рассматривалась.
И вот особенность. Пользователь вводит филиал, телефоны этого филиала и сотрудников. А после надо назначить нужный телефон нужным сотрудникам.
Вот это действие БЛИН и забывается. Получается телефоны и сотрудники есть, а кого по какому телефону звать???
Как данный процесс обязать? (Запретом закрытия формы, если есть неназначенный телефон) или еще как??
2. Сопроводительную не составить, если отсутствует хотя бы 1 элемент (у филиала нет телефона) либо дежурная фраза (НЕТ)
и ее ID.

Что-то подсказывает, что в сопроводительной достаточно будет собрать Заказ (idЗаказа) и Тел (IdТел)

Собственно спасибо за идею. Кое что в данной структуре натолкнуло на мысль текущей проблемы.

  Ответить  
 
 автор: snipe   (18.12.2010 в 02:25)   личное сообщение
 
 

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

кроме того у филиала (как у любой организации) есть телефоны официальные

далее

получателем может быть как конкретное лицо в виде сотрудника так и юридическое лицо в данном случае филиал

при заполнении таблы Сопроводительная обязательно поле IdФилиала и IdЗаказа остальные поля могут быть пустые особенно поле телефон (все зависит от наличия информации у оператора)

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

  Ответить  
 
 автор: Скорп   (21.12.2010 в 09:33)   личное сообщение
 
 


Получается телефоны и сотрудники есть, а кого по какому телефону звать???


хм...заморочка. И прежде всего для менеджеров, которые вводят инфу по новым клиентам. У себя я сделал поле Доб. (добавочный телефон рядом с IDКонтакта), как правило в организациях стоит атс, а у сотрудников внутренние номера. Но если АТС нет и номера прямые...ну фиг знает...Делать номера телефонов в подчинение ИДКонтакта...не правильно как-то....

  Ответить  
 
 автор: Explorer   (21.12.2010 в 10:23)   личное сообщение
79 Кб.
 
 

тут разные решения подходят ===>>>
например не заводить телефон для компании а заводить телефон "Reception" или "Office" - как дефолтную запись в таблице "Employees" без указания "ContactID" а только указав "Department" можно тоже дефолтный

т.е. создавая запись в tblCompanies и вписывая первый номер телефона мы сразу создаем дефолтную запись в таблице tblDepartments (Optional) и дефолтную запись в таблице tblEmployees и уже для этой записи указываем номер телефона

в общем много разных способов, главное не перемудрить

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