Форум программистов, компьютерный форум, киберфорум
Delphi: Базы данных
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.64/11: Рейтинг темы: голосов - 11, средняя оценка - 4.64
Админю немножко :)
126 / 115 / 25
Регистрация: 05.01.2009
Сообщений: 889
MS Access

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

08.05.2015, 20:37. Показов 2150. Ответов 11
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Приветствую. Вроде тема затерта до дыр вдоль и поперек. Но есть есть у меня еще вопросик.

Необходимо написать справочник сотрудников фирмы. По ФИО должности и прочим полям вопросов нет. Есть вопрос по полям номеров телефонов.
Телефоны должны быть домашние, рабочие, мобильные. В случае директора должен быть дополнительно номер прямой, приемная, факс. Также внутренние телефоны.
Теперь вопрос: Как сделать так, чтобы если у человека 1 телефон - выдавалось одно поле для заполнения, если к примеру 3 телефона, то выдавалось 3 поля для заполнения. как такие телефоны хранить? Рассматривал вариант с подчиненной таблицей, но не очень хочется почему-то такой вариант использовать. Кто что подскажет?
Спасибо
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
08.05.2015, 20:37
Ответы с готовыми решениями:

Телефонный справочник: программа не может найти указанный путь
помогите исправить ошибку - не может найти указанный путь program Phonebook; uses Crt; type Phone = record SurnameS : string; ...

НАПИШИТЕ (кто может) ПРОГРАММУ консольный телефонный справочник (на С#)
прога представляет собой консольный телефонный справочник со следующими возможностями: 1) ввод нового номера; 2)поиск номера по номеру;...

Кто может киньте Телефонный справочник з Access очень надо пожалуста
Телефонный справочник!!!Помогите !!Вместе з Базой данных

11
1075 / 988 / 340
Регистрация: 07.08.2012
Сообщений: 2,790
08.05.2015, 21:01
А вы что, верите в чудеса?
Либо пять-десять полей для любых возможных номеров телефонов в таблице сотрудников, либо дополнительная таблица для телефонов.
Более благоразумное ("хочется-не хочется" в серьезных проектах не рассматривается), конечно же, дополнительная таблица.
0
Админю немножко :)
126 / 115 / 25
Регистрация: 05.01.2009
Сообщений: 889
08.05.2015, 21:05  [ТС]
а как потом красиво это все дело выводить при поиске? тоже в таблицу?
0
1075 / 988 / 340
Регистрация: 07.08.2012
Сообщений: 2,790
08.05.2015, 21:47
Понятие "красиво" субъективное и в контексте вывода в поиске требует расшифровки.
Что за поиск имеется в виду и почему он может быть красивым и не красивым?
И почему возникает вопрос вывода результата поиска в таблицу (какую, правда?)
0
Админю немножко :)
126 / 115 / 25
Регистрация: 05.01.2009
Сообщений: 889
08.05.2015, 22:07  [ТС]
в общем на форме будет эдит. туда вводится либо начало фио, либо какие-то цифры телефона. при вводе в эдит сразу же идет поиск по полю фио либо по всем полям телефонов. результат должен быть показан на форме чуть ниже эдита. вот если телефонов будет в одном случае 2, а другом 5. как их красиво выводить? в грид или как-то можно по-другому?
Вот еще придумал (может тупо конечно): взять лэйблу, эдит или тому подобное (не важно). В процедуре поиска написать что-то типа
Delphi Скопировано
1
Label1.Caption:=имя поля + значение в поле + chr13 + имя поля2+значение 2 и т.д.;
вывестись должно так:
Code Скопировано
1
2
3
рабочий телефон 66666
мобильный телефон 4444444
и т.д.
вот как-то так. полез в дебри?
0
1075 / 988 / 340
Регистрация: 07.08.2012
Сообщений: 2,790
08.05.2015, 22:57
Цитата Сообщение от Drongo Посмотреть сообщение
вот как-то так. полез в дебри?
Да нет, нормальные желания.
Просто вначале были не понятные.
Поиск данных в двух и более таблицах делают с помощью SQL запросов. Дело обычное.
Вывод результата запроса зависит от задачи и предпочтений разработчика ПО.
Можно в DBGrid (грид), можно в TMemo, можно в TLabel. В общем, куда угодно.
И от структуры таблиц в БД это мало зависит.
0
Админю немножко :)
126 / 115 / 25
Регистрация: 05.01.2009
Сообщений: 889
08.05.2015, 23:07  [ТС]
тогда подскажите, как вывести все это дело в Label?
Интересует как получить имя поля грида. По ИД в свойствах самого грида?
0
1075 / 988 / 340
Регистрация: 07.08.2012
Сообщений: 2,790
08.05.2015, 23:16
Вообще-то, разные вещи: вывод в Label и "получение имя поля грида".
Видимо, речь все же о чем-то другом, пока не очень вразумляемом.
Вначале надо определится с таблицами БД и их структурой. Именно в этом был вопрос в начале.
После этого можно будет говорить о том как получить данные из БД и выводить их туда или сюда.
0
1075 / 988 / 340
Регистрация: 07.08.2012
Сообщений: 2,790
08.05.2015, 23:51
Лучший ответ Сообщение было отмечено Памирыч как решение

Решение

Пример базы данных с двумя дополнительными таблицами для хранения телефонов.
Одна таблица для видов телефонов (домашний, мобильный и пр.), другая для номеров.
Там же пример запроса, результат которого состоит из ФИО, вида телефонов их номеров для одного сотрудника.
Вложения
Тип файла: zip BD_mdb.zip (18.2 Кб, 51 просмотров)
0
Админю немножко :)
126 / 115 / 25
Регистрация: 05.01.2009
Сообщений: 889
09.05.2015, 13:00  [ТС]
связи таблиц необходимо делать в самом access или программно в делфи по параметру в запросе связывать их?
0
1075 / 988 / 340
Регистрация: 07.08.2012
Сообщений: 2,790
09.05.2015, 22:52
Среда Акссесса никакого отношения к программе не имеет.
Связь между таблицами происходит не по параметру, а в конструкции INNER JOIN.
А в дельфи запрос с параметром используется если нужна выборка по одному сотруднику.
Примерно так:
Delphi Скопировано
1
2
3
4
5
ADOQuery1.SQL.Text := 'SELECT S.*, VidTel.Vid, Tel.NTel '+
    'FROM (Tel INNER JOIN S ON Tel.ID_S = S.ID) INNER JOIN VidTel ON Tel.ID_VidT = VidTel.ID '+
    'WHERE S.ID = :id';
ADOQuery1.Parameters[0].Values := 2; //значение идентификатора, требуемого сотрудника
ADOQuery1.Open;
1
Админю немножко :)
126 / 115 / 25
Регистрация: 05.01.2009
Сообщений: 889
13.05.2015, 11:16  [ТС]
так. с телефонами разобрался. теперь другая задача.
нужно выбирать из базы сотрудников, у которых в ближайшие 3 дня день рождение или юбилей, причем это должно происходить при запуске программы. и еще надо чтобы пользователь мог самостоятельно задать интервал дат и ему выводились все сотрудники, у которых в заданный промежуток дат дни рождения и юбилеи. подскажите алгоритм
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
13.05.2015, 11:16
Помогаю со студенческими работами здесь

Что может быть из-за использования одного семантического ядра на 3-х сайтах?
Что может быть из-за использования одного семантического ядра на 3-х сайтах?Как ПС к этому отнесется?

Самое длинное слово (учесть, что их может быть несколько)
Задание 1. Дан текстовый файл T («1.txt»), в каждой строке которого записано одно слово. Найти: 1. самое длинное слово (учесть, что их...

Удалить из массива все минимальные элементы. Считаем, что таких элементов может быть несколько
Удалить из массива все минимальные элементы. Считаем, что таких элементов может быть несколько. Впринципе решить решил, но с учетом,...

Напечатать второе из слов, начинающихся на С, при том что в строке может быть несколько пробелов между словами
Напечатать второе из слов, начинающихся на С, при том что в строке может быть несколько пробелов между словами. Пробелы могут быть как в...

В заданной строке текста выведите самое короткое (длинное) слово. Учтите, что таких слов может быть несколько
В заданной строке текста выведите самое короткое (длинное) слово. Учтите, что таких слов может быть несколько. Удалите (удвойте) эти слова.


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
Новые блоги и статьи
Анализ и линтинг кода JavaScript: ESLint, Prettier и JSHint
run.dev 26.04.2025
JavaScript прошёл долгий путь от простого языка для анимации веб-страниц до основы современной веб-разработки. С ростом сложности приложений, увеличением кодовых баз и масштабированием команд. . .
Паттерны в Python: Singleton, Factory и Observer
py-thonny 26.04.2025
Паттерны проектирования — это проверенные временем решения типовых проблем разработки программного обеспечения. Их история берёт начало с книги "Приёмы объектно-ориентированного проектирования. . . .
Исключения в C#: Stack Overflow, Access Violation и Out of memory
stackOverflow 26.04.2025
Исключения в C# — это не только механизм оповещения о проблемах, а целое искусство управления потоком выполнения программы в экстремальных ситуациях. Обычное исключение, например,. . .
Логирование в C# ASP.NET Core с помощью Serilog, ElasticSearch, Kibana
stackOverflow 25.04.2025
Помните те времена, когда для анализа проблемы приходилось подключаться к серверу, искать нужный лог-файл среди десятков других и вручную фильтровать тысячи строк в поисках ошибки? К счастью, эти дни. . .
Структура "железный OnKeyUp" вместо антидребезга. Полностью асинхронный счётчик.
Hrethgir 25.04.2025
Программа для симуляции схемы - Logisim Evolution В общем какое-то время отвлёкся, так было надо, теперь когда запилю это на verilog и FPGA , досоставлю заявку в ФИПС на полезную модель - не готов. . .
Автоматизация Amazon Web Services (AWS) с Boto3 в Python
py-thonny 25.04.2025
Облачные вычисления стали неотъемлемой частью современной ИТ-инфраструктуры, а Amazon Web Services (AWS) занимает лидирующие позиции среди провайдеров облачных услуг. Управление многочисленными. . .
Apache Kafka vs RabbitMQ в микросервисной архитектуре
ArchitectMsa 25.04.2025
Современная разработка ПО всё чаще склоняется к микросервисной архитектуре — подходу, при котором приложение разбивается на множество небольших, автономных сервисов. В этой распределённой среде. . .
Параллельное программирование с OpenMP в C++
NullReferenced 24.04.2025
Параллельное программирование — подход к созданию программ, когда одна задача разбивается на несколько подзадач, которые могут выполняться одновременно. Оно стало необходимым навыком для. . .
Цепочки методов в C# с Fluent API
UnmanagedCoder 24.04.2025
Современное программирование — это не только решение функциональных задач, но и создание кода, который удобно поддерживать, расширять и читать. Цепочки методов и Fluent-синтаксис в C# стали мощным. . .
Мульти-тенантные БД с PostgreSQL Row Security
Codd 23.04.2025
Современные облачные сервисы и бизнес-приложения всё чаще обслуживают множество клиентов в рамках единой программной инфраструктуры. Эта архитектурная модель, известная как мульти-тенантность, стала. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru
Выделить код Копировать код Сохранить код Нормальный размер Увеличенный размер