|
1 / 1 / 1
Регистрация: 09.06.2020
Сообщений: 125
|
|
MS Access Создание приложения, подключаемое к БД Access04.11.2020, 10:57. Показов 11554. Ответов 69
Метки нет (Все метки)
Здравствуйте. Возможно я не правильно сформулировал Заголовок темы, по пробую разъяснить здесь. Необходимо создать курсовую работу по БД. Создал таблицы, сущности, сделал связь между таблицами. Начал создавать приложение, формы на Delphi которые связанны с БД Access. Связь идет, с программы могу записать данные в Access и так же увидеть то, что находится в таблицах. Но остановился на том, что необходимо ли создавать SQL запросы в Access? На пример для создания отчета который будет отображаться в приложении Delphi? Опыта в данной тематике мало, по этому возможно какие то вещи написал не верно, либо суть не смог до конца донести.
0
|
|
| 04.11.2020, 10:57 | |
|
Ответы с готовыми решениями:
69
Создание приложения в СУБД MS Access Создание приложения для работы с БД MS Access
|
|
3763 / 2267 / 705
Регистрация: 29.05.2013
Сообщений: 9,622
|
|
| 05.11.2020, 13:47 | |
|
Принципиальной разницы, где будет создан запрос, в Акцесс или в Delphi, нет, но есть некоторый бонус от запросов в Акцесе. Такой запрос вы можете сразу проверить, запрос удобно изменять(в пределах разумного) и приложение не потребуется заново собирать. С другой стороны, есть динамические запросы которые нельзя заранее подготовить и их придется делать в Delphi, а раскладывать их по разным местам (часть в Delphi часть в Access) тоже не очень удобно. В общем идеального решения нет, делайте как вам удобнее
1
|
|
|
1 / 1 / 1
Регистрация: 09.06.2020
Сообщений: 125
|
|
| 05.11.2020, 17:32 [ТС] | |
|
Спасибо за советы. Правильно ли я понял, в Access создаю запрос, а из Delphi через ADOQuery подключиться к нему (select * from zapros типа пример). Может конечно я бред какой то написал, но уж извиняйте)
0
|
|
|
|
|
| 05.11.2020, 17:55 | |
|
zwerw, а чего на прямую запрос не отправить (SELECT * FROM table1 WHERE ID=?)? Зачем брать сохраненный из Access...
0
|
|
|
1 / 1 / 1
Регистрация: 09.06.2020
Сообщений: 125
|
|
| 09.11.2020, 09:08 [ТС] | |
|
Прикрепил схему данных БД, а так же главную форму программы. При клике на каждой кнопке, клиенты, персонал и тд выходит отдельная форма, откуда я вижу список той или иной информации, а так же могу добавить, редактировать либо удалить отдельные записи. Так же на каждой форме расположены ADOQuery и DataSourse, где в каждом SQL запросе на пример для таблицы Client написано select * from client. Аналогично и для других форм. Остановился я на том, что мне необходимо на главной форме сделать так, что бы я мог выбирать ФИО клиента, тур, для того что бы оформить путевку. Добавляю ADOQuery на главную форму, создаю вот такой запрос select tur.[название тура], client.фамилия, organizac.название from tur, client, organizac. Добавляю компонент DBLookupComboBox1, выставляю ListSourse-->DataSourseClient, ListFiled--> Фамилия клиента, KeyFiled--->ключ но при запуске в этом компоненте не отображается список Клиентов. Может что то не правильно сделал, не пойму в чем причина.
0
|
|
|
1 / 1 / 1
Регистрация: 09.06.2020
Сообщений: 125
|
|
| 09.11.2020, 09:25 [ТС] | |
|
Так же выходит такая ошибка при активации ADOQuery на главной форме.
0
|
|
|
1 / 1 / 1
Регистрация: 09.06.2020
Сообщений: 125
|
|
| 09.11.2020, 09:44 [ТС] | |
|
Прикрепил схему данных БД, а так же главную форму программы. При клике на каждой кнопке, клиенты, персонал и тд выходит отдельная форма, откуда я вижу список той или иной информации, а так же могу добавить, редактировать либо удалить отдельные записи. Так же на каждой форме расположены ADOQuery и DataSourse, где в каждом SQL запросе на пример для таблицы Client написано select * from client. Аналогично и для других форм. Остановился я на том, что мне необходимо на главной форме сделать так, что бы я мог выбирать ФИО клиента, тур, для того что бы оформить путевку. Добавляю ADOQuery на главную форму, создаю вот такой запрос select tur.[название тура], client.фамилия, organizac.название from tur, client, organizac. Добавляю компонент DBLookupComboBox1, выставляю ListSourse-->DataSourseClient, ListFiled--> Фамилия клиента, KeyFiled--->ключ но при запуске в этом компоненте не отображается список Клиентов. Может что то не правильно сделал, не пойму в чем причина.
Так же выходит такая ошибка при активации ADOQuery на главной форме.
0
|
|
|
Модератор
6231 / 2909 / 707
Регистрация: 12.06.2016
Сообщений: 7,839
|
|
| 09.11.2020, 10:23 | |
|
zwerw,
Сообщение о циклической ссылке. Но сообщает не Access.
0
|
|
|
1 / 1 / 1
Регистрация: 09.06.2020
Сообщений: 125
|
|
| 09.11.2020, 10:37 [ТС] | |
|
Может быть из за того, что я такой же запрос делал, но на другой форме?
0
|
|
|
Модератор
6231 / 2909 / 707
Регистрация: 12.06.2016
Сообщений: 7,839
|
|
| 09.11.2020, 10:42 | |
|
Нет Это в этом запросе что-то закольцевалось
0
|
|
|
561 / 230 / 88
Регистрация: 11.07.2015
Сообщений: 817
|
||||
| 09.11.2020, 11:48 | ||||
|
0
|
||||
|
|
|
| 09.11.2020, 13:47 | |
|
для того, чтобы описать одну форму в виде краткого ТЗ, требуется от одной страницы текста
для того, чтобы описать все ваши хотелки, потребуется целая курсовая текста А тут, в соответствии с правилами форума, вы можете выбрать один конкретный вопрос, и получите на него ответ. Если вам нужен не ответ на вопрос, а научиться, как работать с БД в целом, нужно читать и смотреть учебные материалы по теме работа с БД в Делфи. Например, вот http://devdelphi.ru/?s=Работа+... phi.+Часть
0
|
|
|
3763 / 2267 / 705
Регистрация: 29.05.2013
Сообщений: 9,622
|
|
| 09.11.2020, 14:30 | |
|
Циклическая ссылка в Delphi возникает, если первый источник данных зависит от второго, а второй от первого. Для более точного ответа необходим ваш проект и база. Проект это файлы базы + *.dfm *.pas *.dpr собранные в архив и прикрепленные в тему.
Добавлено через 27 минут Кстати по вашей схеме есть пара замечаний. 1. Почему только самолет? Есть же еще водный, наземный транспорт. 2. Возраст понятие зависящее от времени, т.е. вычисляемое. Сделав его постоянным полем, вы получили проблему. Вместо возраста удобнее использовать дату рождения. 3. В таблицу Organiz вы собрали сразу 3 разных сущности. Юр.лицо,Физ.лицо,Телефон, а это плохо. 4. Таблицы Personal,Client,Organiz содержат повторы сущности Лицо, а это вообще плохо. 5. Отель это один из видов Организаций т.е. по сути вы продублировали уже существующую таблицу Organiz
1
|
|
|
1 / 1 / 1
Регистрация: 09.06.2020
Сообщений: 125
|
|
| 09.11.2020, 15:45 [ТС] | |
|
Вот прикрепил архив с программой и базой данных. Буду исправлять БД в соответствии с вашим комментарием. Спасибо.
0
|
|
|
3763 / 2267 / 705
Регистрация: 29.05.2013
Сообщений: 9,622
|
|
| 09.11.2020, 17:07 | |
|
Я даже не знаю с чего тут начинать объяснять... тут все неправильно. Весь проект надо выбросить и начать заново с одной формы ввода и одной формы данных. Только после получения минимального представления о компонентах и их работе, можно переходить к другой форме, а сейчас это в топку все.
Добавлено через 10 минут И вот еще совет. Пока вы не определились окончательно с БД, не ставьте галочку в связях таблиц "Обеспечение целостности данных" и только если вы точно понимаете зачем вам эта штука, только тогда ее можно применять. В противном случае, вы замучаетесь бороться с этим.
1
|
|
|
1 / 1 / 1
Регистрация: 09.06.2020
Сообщений: 125
|
|
| 10.11.2020, 07:11 [ТС] | |
|
Если это возможно, можете мне по проекту Delphi указать прям грубые нарушения? На пример компонент какой либо не использовать, создавать ли отдельные формы при добавлении какой либо информации? Заранее спасибо.
0
|
|
|
1 / 1 / 1
Регистрация: 09.06.2020
Сообщений: 125
|
|
| 16.11.2020, 20:40 [ТС] | |
|
Не много изменил базу данных. Что скажите на этот раз?
0
|
|
|
3763 / 2267 / 705
Регистрация: 29.05.2013
Сообщений: 9,622
|
|
| 17.11.2020, 12:19 | |
|
Маленький такой совет. Практика показывает, что русские названия полей неудобны при использовании их в коде, вы постоянно переключаетесь с английского на русский и это в итоге сильно мешает. Использовать составные наименования полей на русском или английском тоже неудобно, т.к. их постоянно приходится брать в скобки или кавычки и это тоже здорово мешает. Не сильны в английском, не беда пишите транслитом, например вместо Номер путевки напишите NomerPutevki. Читабельность не сильно пострадала, зато удобнее стало намного.
Теперь что касается схемы, продолжая вашу оптимизацию БД получается следующее: 1. Раз вы слепили вместе Фамилию Имя Отчество в ФИО, то почему бы не слепить Серию и Номер в Документ. 2. Если оформляет путевку у вас Менеджер, то зачем в таблице Personal поле Должность? 3. Как думаете, если связать Менеджера не с Personal, а с Client, что-то принципиально изменится? 4. Отели могут входить в сеть, т.е. иметь одно название, но располагаться в разных городах или странах, например Hilton есть в Москве, Лондоне, Берлине, видимо нужна географическая привязка.
0
|
|
|
1 / 1 / 1
Регистрация: 09.06.2020
Сообщений: 125
|
|
| 17.11.2020, 13:30 [ТС] | |
|
Я решил вообще убрать серию паспорта из таблицы клиент. С вами полностью согласен по поводу названия атрибутов на латинском. Действительно будет удобней. Вот по поводу отелей, необходимо по думать как все обыграть. Так же прочитал в литературе и увидел в видео уроке компонент Data Module. Как я понял связь таблиц но уже в Delphi. Играет ли важную роль использования этого компонента? Ведь связь идет и в самом Accesse.
0
|
|
|
Модератор
|
||
| 17.11.2020, 13:47 | ||
|
0
|
||
| 17.11.2020, 13:47 | |
|
Помогаю со студенческими работами здесь
20
Создание приложения "список дел" на основе БД Access Подключаемое оборудование Windows 7 не видит оборудование, подключаемое на передней панели Проброс USB устройств, подключённых к ПК, через отладчик VS на подключаемое физическое устройство Создание приложения Bitrix 24. Бесконечная загрузка при установке своего приложения Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Программная установка даты и запрет ее изменения
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2.
Задача: при создании документов установить период списания автоматически. . .
|
Вывод данных в справочнике через динамический список
Maks 01.04.2026
Реализация из решения ниже выполнена на примере нетипового справочника "Спецтехника" разработанного в конфигурации КА2.
Задача: вывести данные из ТЧ нетипового документа. . .
|
Функция заполнения текстового поля в реквизите формы документа
Maks 01.04.2026
Алгоритм из решения ниже реализован на нетиповом документе "ВыдачаОборудованияНаСпецтехнику" разработанного в конфигурации КА2, в дополнении к предыдущему решению.
На форме документа создается. . .
|
К слову об оптимизации
kumehtar 01.04.2026
Вспоминаю начало 2000-х, университет, когда я писал на Delphi. Тогда среди программистов на форумах активно обсуждали аккуратную работу с памятью: нужно было следить за переменными, вовремя. . .
|
|
Идея фильтра интернета (сервер = слой+фильтр).
Hrethgir 31.03.2026
Суть идеи заключается в том, чтобы запустить свой сервер, о чём я если честно мечтал давно и давно приобрёл книгу как это сделать. Но не было причин его запускать. Очумелые учёные напечатали на. . .
|
Модель здравосоХранения 6. ESG-повестка и устойчивое развитие; углублённый анализ кадрового бренда
anaschu 31.03.2026
В прикрепленном документе раздумья о том, как можно поменять модель в будущем
|
10 пpимет, которые всегда сбываются
Maks 31.03.2026
1. Чтобы, наконец, пришла маршрутка, надо закурить. Если сигарета последняя, маршрутка придет еще до второй затяжки даже вопреки расписанию.
2. Нaдоели зима и снег? Не надо переезжать. Достаточно. . .
|
Перемещение выделенных строк ТЧ из одного документа в другой
Maks 31.03.2026
Реализация из решения ниже выполнена на примере нетипового документа "ВыдачаОборудованияНаСпецтехнику" с единственной табличной частью "ОборудованиеИКомплектующие" разработанного в конфигурации КА2. . . .
|