|
1 / 1 / 1
Регистрация: 09.06.2020
Сообщений: 125
|
|
MS Access Создание приложения, подключаемое к БД Access04.11.2020, 10:57. Показов 11667. Ответов 69
Метки нет (Все метки)
Здравствуйте. Возможно я не правильно сформулировал Заголовок темы, по пробую разъяснить здесь. Необходимо создать курсовую работу по БД. Создал таблицы, сущности, сделал связь между таблицами. Начал создавать приложение, формы на Delphi которые связанны с БД Access. Связь идет, с программы могу записать данные в Access и так же увидеть то, что находится в таблицах. Но остановился на том, что необходимо ли создавать SQL запросы в Access? На пример для создания отчета который будет отображаться в приложении Delphi? Опыта в данной тематике мало, по этому возможно какие то вещи написал не верно, либо суть не смог до конца донести.
0
|
|
| 04.11.2020, 10:57 | |
|
Ответы с готовыми решениями:
69
Создание приложения в СУБД MS Access Создание приложения для работы с БД MS Access
|
|
1 / 1 / 1
Регистрация: 09.06.2020
Сообщений: 125
|
|
| 17.11.2020, 17:09 [ТС] | |
|
Получается в этот контейнер я складываю на пример ADOQuery, DataSource и уже в этом контейнере настраиваю перечисленные ранее компоненты?
0
|
|
|
1 / 1 / 1
Регистрация: 09.06.2020
Сообщений: 125
|
|
| 17.11.2020, 17:25 [ТС] | |
|
Изменил название атрибутов на латинские. И все таки обратно добавил по отдельности ФИО. По читал по поводу нормализации, сводится все к тому что бы атрибуты в таблице были таким образом то есть фамилия, имя, отчество. По поводу отелей, в таблице отели добавил атрибут страны, тем самым думаю будет связь отеля с определенной страной.
0
|
|
|
3764 / 2272 / 705
Регистрация: 29.05.2013
Сообщений: 9,622
|
|
| 17.11.2020, 18:21 | |
|
Модуль данных это действительно не более чем контейнер. Основное его назначение вынести все не визуальные компоненты в одно место, для освобождения места на форме от кучи лишних иконок и сделать единообразное обращение к данным, а это позволяет легко подстраивать приложение под разные типы баз данных, просто заменив модуль.
Добавлено через 6 минут Уже лучше, растете на глазах Почти не к чему придраться, за исключением двух схожих таблиц Client и Personal. Зачем вам отдельная таблица Personal, если Client уже содержит аналогичные поля? Что мешает использовать одну и ту-же таблицу для Хранения данных туристов и персонала?
1
|
|
|
1 / 1 / 1
Регистрация: 09.06.2020
Сообщений: 125
|
|
| 17.11.2020, 21:58 [ТС] | |
|
Спасибо! Ну так с вашей помощью
Видите, когда я буду якобы оформлять путевку, мне необходимо будет указать клиента которого я внес в таблицу клиенты, и менеджера кто оформлял эту путевку. Если я объединю таблицы, то думаю тогда мне необходимо будет добавлять атрибут который будет идентификатором своего рода, типа это клиента я добавил, или менеджера. Вот как то так)
0
|
|
|
3764 / 2272 / 705
Регистрация: 29.05.2013
Сообщений: 9,622
|
|||||||||||||||||
| 17.11.2020, 23:04 | |||||||||||||||||
|
Выбрать всех менеджеров тогда можно так:
1
|
|||||||||||||||||
|
1 / 1 / 1
Регистрация: 09.06.2020
Сообщений: 125
|
|
| 18.11.2020, 06:37 [ТС] | |
|
Тогда я так понимаю, объединить таблицы и создать атрибут на пример Status. В котором буду указывать клиент или менеджер? По поводу SQL запроса спасибо большое, буду изучать!
0
|
|
|
3764 / 2272 / 705
Регистрация: 29.05.2013
Сообщений: 9,622
|
|
| 18.11.2020, 11:54 | |
|
Не надо ничего добавлять. Наличие или отсутствие связи это и есть неявный атрибут. Какая разница что проверять, поле Status или связь по полю OformitPutevki? Под связью подразумевается наличие хотя-бы одной записи в таблице Client совпавшей по OformitPutevki
0
|
|
|
1 / 1 / 1
Регистрация: 09.06.2020
Сообщений: 125
|
||||||
| 19.11.2020, 17:44 [ТС] | ||||||
|
Вот хоть убейте, но не могу разобраться по поводу объединения таблиц.
0
|
||||||
|
Житель Земли
|
|
| 23.11.2020, 11:59 | |
|
1
|
|
|
1 / 1 / 1
Регистрация: 09.06.2020
Сообщений: 125
|
|
| 24.11.2020, 11:43 [ТС] | |
|
Ребят, по поводу Join, я понимаю что этот запрос объединяет таблицы по какому либо условию. Но вот таблицу которую он создал, она должна куда то сохраняться в Access, или BDGrid? Здесь у меня не понятки, лыжи не едут. Сделал я быстренько форму, как примерно должна выглядеть для таблицы Оформить путевку. Схему данных скрин тоже прикрепил, пока таблицы не объединял, причину написал выше. Вот задумка такая что бы с помощью DB LookUpCombobox выбрать тур из таблицы Туры, выбрать клиента из таблицы Клиенты и выбрать менеджера из таблицы Персонал и все это должно сохраниться в таблицу Оформить путевку. Как видно на картинке Связь есть с таблицей Менеджер (заполнил ее на скорую руку для проверки). Такая же связь есть и других элементов с соответствующими таблицами. И если такой вариант имеет место быть, то каким образом мне сохранить данные которые я выбираю в Combobox в таблицу Оформить путевку в соответствующие поля. Ребят делаю курсовую, возможно много глупостей пишу и не по теме, но спросить не у кого, информацию по кускам собираю так как если садиться за учебник и все от и до учить времени не хватит. А оно ограниченно. Учусь на фдо. Да, и хотел написать спасибо пользователю с ник Пытливый, реально хорошо помог и направил в нужное русло!
0
|
|
|
28 / 24 / 11
Регистрация: 11.11.2009
Сообщений: 101
|
|||||||||||||
| 24.11.2020, 14:04 | |||||||||||||
|
Данные, которые вы получите в результате запроса к базе, будут храниться в DataSource. У датасорс в свойствах есть поле DataSet там должен быть указан запрос который вы выполняете. DBGrid исключительно отображает данные которые храняться в датасорс.
Добавлено через 7 минут 1. К каждому DBLookUpCombobox добавляем адоквери и датасоурс 2. У каждого DBLookUpCombobox в свойстве ListSource указываем соответствующий датасоурс, в свойстве KeyField вписываем имя поля - уникального идентификатора(id,guid) в вашем случае - kod или nomer, в свойстве ListField указываем имя столбца в таблице которые хотим отображать в DBLookUpCombobox 2. В событии при активации формы выполняем каждый запрос с необходимыми параметрами Добавлено через 6 минут Например. Для того чтобы выбрать тур, допустим это будет DbLookUpComboBox5. Его свойства: -ListSource (DataSource5) -KeyField (KodTura) -ListField (NazvanieTura) В событии при активации формы добавляем строки :
При это в свойствe DataSet у DataSource5 будет указано - ADOQuery5 Добавлено через 11 минут
zwerw обратите внимание, весь код написан для примера, там достаточно опечаток и неточностей. Пытался указать направление в котором копать
1
|
|||||||||||||
|
1 / 1 / 1
Регистрация: 09.06.2020
Сообщений: 125
|
||||||||||||||||
| 25.11.2020, 14:46 [ТС] | ||||||||||||||||
|
Спасибо за код и направление. По копался я, и произвел изменения в коде.
Когда в строке
0
|
||||||||||||||||
|
1 / 1 / 1
Регистрация: 09.06.2020
Сообщений: 125
|
|
| 26.11.2020, 06:55 [ТС] | |
|
Суть в том, что с помощью DBLookUpCombobox1 я же выбираю Фамилия из таблицы Client строка Familie, тип этой строки в Access текстовый, переношу его в таблицу OformitPutevku строка Turist у которой тип числовой. Соответственно и выходила ошибка по поводу разных типов. Когда создал строку(столбец) Data в таблицу OformitPutevku с типом текстовый то записи выбранные с таблицы Client (Familie) сохранились в OformitPutevku (Data) без каких либо ошибок. И снова остановился, каким то образом с помощью Combobox выбирать фамилия из таблицы клиент, и его ключ сохранять в таблицу Оформить путевку в столбец турист? Но каким образом? А если тип столбца Turist изменю на текстовый, то связи не будет же.
0
|
|
|
1 / 1 / 1
Регистрация: 09.06.2020
Сообщений: 125
|
|
| 26.11.2020, 07:15 [ТС] | |
|
Либо выбирать ключ, но уже не с помощью LookUpCombobox? Хотя нет, сейчас уже проверил, если поставить DBCombobox то для этих целей он не пойдет.
0
|
|
|
28 / 24 / 11
Регистрация: 11.11.2009
Сообщений: 101
|
|||||||
| 26.11.2020, 11:39 | |||||||
|
В таблице оформить путевку, столбец Turist у Вас числовой, было бы правильнее него назвать KodTurist и хранить в нем KodClienta из таблицы Client и получиться, что при необходимости узнать все данные клиента который указан в таблице ОформитьПутевку вы делается запрос на выборку из таблицы Client(Select From Where) с условием что KodClienta = KodTurist
Добавлено через 8 минут Необходимо понимать, что для Вас как разработчика главное работать с Уникальными идентификаторами(KodClienta, ID, GUID - например), т.е. DBLookupComboBox1.KeyValue приоритетный параметр, второстепенный - ListField, это тот который будет видеть пользователь программы в компоненте DBLookupComboBox, но основная работа будет проходить с идентификаторами. Использовать DBLookupComboBox1.Text не совсем корректно. Для проверки на то выбрано ли значение или нет можно проверять так:
Добавлено через 2 минуты Еще раз. -ListSource (DataSource5) указывает на объект который хранит данные DBLookupComboBox -KeyField (KodTura) указывает на уникальный идентификатор -ListField (NazvanieTura) указывает на поле, которое будет отображаться пользователю
1
|
|||||||
|
1 / 1 / 1
Регистрация: 09.06.2020
Сообщений: 125
|
|
| 26.11.2020, 12:15 [ТС] | |
|
В компоненте DBLookUpCombobox в свойстве ListField поставил значение KodKlienta. Для того что бы видно было когда выбираю код какой клиент под этим кодом добавил DBGrid. Теперь то конечно сохраняется код клиента в таблицу OformitPutevku, но выглядит конечно колхозно, и понимаю что это не решение моей проблемы.
0
|
|
|
28 / 24 / 11
Регистрация: 11.11.2009
Сообщений: 101
|
|
| 26.11.2020, 13:17 | |
|
Выбираем DBGrid, кликаем по нему 2 раза левой кнопкой мыши. Отроется окно полей - скинь скрин
Добавлено через 8 минут Если там пусто жми на кнопку Add all fields и добавятся поля после выбираешь поле KodClienta и в его свойствах Visible переводим в false. Если кнопка Add all fields не активна, с помощью кнопки Add new добавляем все поля которые необходимы и меняем их название на то, что указано в таблице БД. Свойство каждого поля Caption в разделе Title отвечает за то, что увидит пользователь, чтобы ему не читать на транслите. Добавлено через 26 минут Пользователю не нужно видеть идентификатор, пользователю нужны установочные данные - в Вашем случае я так понял фамилия. Мы должны показывать исключительно необходимые пользователю вещи, идентификаторы ему ни к чему. Возьмем двух клиентов с фамилией "Иванов" клиентов два, а фамилия одна, для этого есть идентификатор для каждого Иванова он будет индивидуален.
0
|
|
|
561 / 230 / 88
Регистрация: 11.07.2015
Сообщений: 817
|
|
| 26.11.2020, 13:59 | |
|
А нафига в DBLookupComboBox показывать ключевое поле таблицы. Тут должна отображаться информация, к примеру ФИО.
1
|
|
|
28 / 24 / 11
Регистрация: 11.11.2009
Сообщений: 101
|
|
| 26.11.2020, 14:32 | |
|
1
|
|
|
1 / 1 / 1
Регистрация: 09.06.2020
Сообщений: 125
|
||||||
| 30.11.2020, 19:08 [ТС] | ||||||
|
Наконец то получилось) Сохранился код клиента из таблицы клиенты в таблицу оформить путевку)
0
|
||||||
| 30.11.2020, 19:08 | |
|
Создание приложения "список дел" на основе БД Access Подключаемое оборудование Windows 7 не видит оборудование, подключаемое на передней панели Проброс USB устройств, подключённых к ПК, через отладчик VS на подключаемое физическое устройство Создание приложения Bitrix 24. Бесконечная загрузка при установке своего приложения Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
сукцессия 31: модель микоризы - это модель ещё нескольких явлений, социальных и экономических
anaschu 18.07.2026
Теория «Всего»: апдейт v1. 1. 2 — 28‑мерное ядро стабилизировано
Коллеги, фиксирую разбор инженерных правок и их изоморфную проекцию на экономику, меметику и половой отбор. Модель теперь не. . .
|
сукцессия 30. Массив проверяющих друг друга моделей
anaschu 18.07.2026
Архитектура сети взаимопроверяющих моделей микоризной сукцессии (v2. 0)
Развитие тензорного ОДУ-ядра и создание кросс-платформенного калибровочного полигона
Уважаемые коллеги!
В продолжение. . .
|
Грибы - это женщины, деревья - это мужчины. Анти инь янь для союза мужчины и женщины.
anaschu 18.07.2026
ГЛАВНЫЙ НАУЧНО-ФИЛОСОФСКИЙ ВЫВОД: Сексуально-Репродуктивный Капитализм против Государства Моногамии
Коллеги, мы вышли на финишную прямую 20-мерного ОДУ-моделирования вековой сукцессии (ветка. . .
|
Текстовый слайдер с нумерацией страниц и кроссбраузерность.
russiannick 18.07.2026
Один мой друг написал текстовый слайдер с нумерацией страниц. Сегодня я расскажу как он умудрился подружить его с кроссбраузерностью.
Очевидно сложно угодить с шириной каждому браузеру. Один крадет. . .
|
|
Грибы - это мемы, дерево - это человек. Применение микоризной модели к теории меметики Докинза.
anaschu 18.07.2026
Меметический изоморфизм теории «всего»: Грибная сукцессия как модель эволюции идей Докинза
Базовый код системы ОДУ микоризной сукцессии описывает не просто биологию, а универсальную. . .
|
Грибы - это корпорации, деревья - это государства. Механизм массонского захвата власти
anaschu 18.07.2026
Макроэкономический изоморфизм теории «всего»: Грибная сукцессия как модель транснационального капитализма
Базовый код системы ОДУ микоризной сукцессии описывает не просто биологию, а. . .
|
Расчёт периметра прямоугольника по координатам вершин
Maks 18.07.2026
Решение задачи по прикладной информатике средствами 1С.
Задача:
Вычислить периметр прямоугольника, заданного координатами своих вершин на плоскости.
Решение:
Создан документ со следующими. . .
|
Подсчёт частоты трёхбуквенных слов в тексте
Maks 18.07.2026
Решение задачи по прикладной информатике средствами 1С.
Задача:
Выясните, сколько раз в предложенном тексте встречается каждое трехбуквенное слово.
Решение:
Создан документ с единственным. . .
|