|
1 / 1 / 1
Регистрация: 09.06.2020
Сообщений: 125
|
|
MS Access Создание приложения, подключаемое к БД Access04.11.2020, 10:57. Показов 11757. Ответов 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. Бесконечная загрузка при установке своего приложения Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
| Опции темы | |
|
|
Новые блоги и статьи
|
|||
|
Был там один разговор по поводу свободы в материальном мире.
kumehtar 19.08.2026
Суть: рассматривается живое существо, оказавшееся внутри довольно странной системы (этого мира) и пытающееся обустроить в ней свой кусок пространства.
Жизнь действительно предъявляет каждому. . .
|
Когда логика программы не спасает от человеческих ошибок
Maks 18.08.2026
В последнее время всё чаще и чаще сталкиваюсь с таким явлением, как абсолютная невнимательность (или глупость) пользователей. Проявляется это чаще всего на работе в коллективе. Допустим, человек с. . .
|
Лето уходит
kumehtar 17.08.2026
|
Мысли в слух
kumehtar 17.08.2026
Забавно, насколько сейчас стала доступна информация. Например о магии, духовном развитии, медитациях, и других подобных направлениях, ранее зачастую тайных, передаваемых от учителя к ученику. Хотя. . .
|
|
Перемещение строк из ТЧ в другой документ с учетом текущего пробега
Maks 17.08.2026
Реализация из решения ниже выполнена на примере нетипового документа "Автозапчасти", с ТЧ "Шины".
За основу взят алгоритм отсюда: https:/ / www. cyberforum. ru/ blogs/ 359708/ 10838. html
Задача: . . .
|
Саморегулирующийся социальный контракт для сервера cross-section.
Hrethgir 14.08.2026
С кодом конечно таких глубоких размышлений пока не было, впрочем я уже привык к алгоритмизации. Суть предмета записи: снова в диалоге с нейросетью (я взял пока себе ник для учётки админа - Rector). . . .
|
Часы электронные
Uhbif79 12.08.2026
Выкладываю программу часов. Программа позволяет:
1. Использовать системное время и дату,
2. Есть возможность вводить время и дату вручную.
3. Реализованы 2 будильника: начало и конец рабочего дня. . . .
|
Часы с будильником на основе класса QLCDNumber
Uhbif79 12.08.2026
Всем добрый день, выкладываю программу часов с будильником на основе класса QLCDNumber.
Здесь я пробовал самостоятельно создавал классы, впервые столкнулся с видимостью переменной одного класса из. . .
|