Форум программистов, компьютерный форум, киберфорум
Delphi: Базы данных
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.54/56: Рейтинг темы: голосов - 56, средняя оценка - 4.54
1 / 1 / 1
Регистрация: 09.06.2020
Сообщений: 125
MS Access

Создание приложения, подключаемое к БД Access

04.11.2020, 10:57. Показов 11912. Ответов 69
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте. Возможно я не правильно сформулировал Заголовок темы, по пробую разъяснить здесь. Необходимо создать курсовую работу по БД. Создал таблицы, сущности, сделал связь между таблицами. Начал создавать приложение, формы на Delphi которые связанны с БД Access. Связь идет, с программы могу записать данные в Access и так же увидеть то, что находится в таблицах. Но остановился на том, что необходимо ли создавать SQL запросы в Access? На пример для создания отчета который будет отображаться в приложении Delphi? Опыта в данной тематике мало, по этому возможно какие то вещи написал не верно, либо суть не смог до конца донести.
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
04.11.2020, 10:57
Ответы с готовыми решениями:

Создание приложения в СУБД MS Access
Не могу разобраться как сделать отчет по данной работе. Наработки есть.

Создание приложения для работы с БД MS Access
Здравствуйте, ребята! Я хочу создать приложение в Visual Studio 2019 для работы с БД MS Access (SQL-запросы, создание отчетов), но в...

Разработка базы данных в СУБД Access и создание приложения «Принтеры»
Разработка базы данных в СУБД Access и создание приложения «Принтеры» с использованием внешнего компонента Data Decktop Delphi и...

69
1 / 1 / 1
Регистрация: 09.06.2020
Сообщений: 125
01.12.2020, 11:00  [ТС]
Студворк — интернет-сервис помощи студентам
Сегодня создал на скорую руку форму оформить путевку, и уже с остальными данными по работал для сохранения в данную таблицу. В общем все получается. Скрины приложены. Сделал что бы в DBEdit автоматически настраивалась дата. Код вот такой сделал для сохранения идентификаторов в таблицу Оформить путевку
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
begin
if DBLookupcombobox1.KeyValue = null then showmessage ('Не выбрали тур');
if DBLookupcombobox2.KeyValue = null then showmessage ('Не выбрали туриста');
if dbedit1.EditText = '' then showmessage('Не ввели дату');
if DBlookupcombobox4.KeyValue = null then showmessage ('Не выбрали менеджера')else
begin
 Datamodule2.ADOQOformit.SQL.Clear;
 datamodule2.ADOQOformit.SQL.Add('Insert INTO oformitputevku(kodtura, kodturista, dataoformlenia, menedjer )values (:kodtura, :kodturista, :dataoformlenia, :menedjer) ');
 datamodule2.ADOQOformit.Parameters.ParamByName('kodtura').Value := dblookupcombobox1.KeyValue;
  datamodule2.ADOQOformit.Parameters.ParamByName('kodturista').Value := dblookupcombobox2.KeyValue;
  datamodule2.ADOQOformit.Parameters.ParamByName('dataoformlenia').Value:=dbedit1.EditText;
   datamodule2.ADOQOformit.Parameters.ParamByName('menedjer').Value := dblookupcombobox4.KeyValue;
  datamodule2.ADOQOformit.ExecSQL;
  showmessage('Данные сохранились');
 
end;
    
end;
Вот такой код для DBEdit что бы дата автоматически выставлялась
Delphi
1
DBEdit1.Text := DateToStr(Date)
Так же использовал DataModule по вашим рекомендациям и понял его необходимость. Вообщем как то так.
Миниатюры
Создание приложения, подключаемое к БД Access   Создание приложения, подключаемое к БД Access   Создание приложения, подключаемое к БД Access  

Создание приложения, подключаемое к БД Access  
0
28 / 24 / 11
Регистрация: 11.11.2009
Сообщений: 101
01.12.2020, 15:42
Цитата Сообщение от zwerw Посмотреть сообщение
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
begin
if DBLookupcombobox1.KeyValue = null then showmessage ('Не выбрали тур') else 
if DBLookupcombobox2.KeyValue = null then showmessage ('Не выбрали туриста') else
if dbedit1.EditText = '' then showmessage('Не ввели дату') else
if DBlookupcombobox4.KeyValue = null then showmessage ('Не выбрали менеджера')else
begin
 Datamodule2.ADOQOformit.SQL.Clear;
 datamodule2.ADOQOformit.SQL.Add('Insert INTO oformitputevku(kodtura, kodturista, dataoformlenia, menedjer )values (:kodtura, :kodturista, :dataoformlenia, :menedjer) ');
 datamodule2.ADOQOformit.Parameters.ParamByName('kodtura').Value := dblookupcombobox1.KeyValue;
  datamodule2.ADOQOformit.Parameters.ParamByName('kodturista').Value := dblookupcombobox2.KeyValue;
  datamodule2.ADOQOformit.Parameters.ParamByName('dataoformlenia').Value:=dbedit1.EditText;
   datamodule2.ADOQOformit.Parameters.ParamByName('menedjer').Value := dblookupcombobox4.KeyValue;
  datamodule2.ADOQOformit.ExecSQL;
  showmessage('Данные сохранились');
end;
end;
Если не ставить else то код, что идет дальше все равно выполниться и запрос будет с ошибкой
Структура такова:
Если <условие1> то <сообщение что не ввели данные> иначе
Если <условие2> то <сообщение что не ввели данные> иначе
Если <условие3> то <сообщение что не ввели данные> иначе
Смысл в том, что он не будет проверять следующее условие пока не выполнено текущее
В Вашем коде запрос на добавление записи не выполниться только если не выбран менеджер
1
1 / 1 / 1
Регистрация: 09.06.2020
Сообщений: 125
01.12.2020, 19:26  [ТС]
До этого ставил Else после каждой строки с условие, но выходила ошибка, видимо что то упустил тогда. Изменил код, действительно лучше стало.
0
1 / 1 / 1
Регистрация: 09.06.2020
Сообщений: 125
01.12.2020, 19:37  [ТС]
Такой вопрос возник еще про событие активации формы
Delphi
1
2
3
ADOQuery5.Clear;
ADOQuery5.SQL.Add('Select * from Tur');
ADOQuery5.Active:=True;
На что оно влияет? Я без этого кода пробовал, тоже все работает.
Создал такую форму для оформления путевки. Простенько конечно, но это первый проект.
Миниатюры
Создание приложения, подключаемое к БД Access  
0
1 / 1 / 1
Регистрация: 09.06.2020
Сообщений: 125
02.12.2020, 06:23  [ТС]
Так же хотел спросить. В DBLookupCombobox возможно выбрать несколько столбцов для отображения? На пример Фамилия, Имя, Отчество. Через точку с запятой пробовал, но пошло. Ширину тоже изменял поля, тоже ничего не получилось. То что первое в списке написано, то и отображается.
0
1076 / 989 / 340
Регистрация: 07.08.2012
Сообщений: 2,790
02.12.2020, 08:40
В DBLookupCombobox выбрать несколько полей нельзя, но можно однотипные поля объединить в запросе датасета (ADOQuery), с которым связан DBLookupCombobox.
Что-то в этом роде:
SQL
1
SELECT Фамилия+" "+Имя+" "+Отчество AS ФИО FROM <table>
- <table> для примера;
- двойные кавычки для разделителя между полями используются в Access, в Ms SQL Server нужно использовать одинарные;
- в свойстве ListField DBLookupCombobox, разумеется, нужно выбрать поле-алиас (в примере "ФИО").
Цитата Сообщение от zwerw Посмотреть сообщение
Я без этого кода пробовал, тоже все работает.
Если перед запуском приложения ADOQuery5 уже был активирован (открыт набор данных), а форма создается при запуске приложения, то приведенный код заново его переоткрывает. Если в компоненте текст запроса уже сидит, то.достаточно в событии создания формы оставить код:
Delphi
1
ADOQuery5.Open;

Не по теме:

Лучше иметь одно поле для ФИО человека. ФИО в БД считается неким его "идентификатором", который как и любой идентификатор не делится на разные поля.

1
1 / 1 / 1
Регистрация: 09.06.2020
Сообщений: 125
02.12.2020, 09:12  [ТС]
Да я лучше тогда один столбец сделаю ФИО.
0
 Аватар для krapotkin
6854 / 4680 / 1465
Регистрация: 14.04.2014
Сообщений: 20,686
Записей в блоге: 21
02.12.2020, 21:20
это довольно спорное утверждение
Соколова Алина Борисовна
Алина Соколова
Алина Борисовна Соколова
дорогие пользователи заполнят базу как надо
будет вам уникальных идентификаторов сколько угодно )
в полемику вступать не хочу. просто оставлю мнение тут
1
1 / 1 / 1
Регистрация: 09.06.2020
Сообщений: 125
04.12.2020, 15:37  [ТС]
Я с вами не могу не согласиться. При нормализации БД читал что правильным решением будет ФИО в разных столбцах.
0
1 / 1 / 1
Регистрация: 09.06.2020
Сообщений: 125
06.12.2020, 15:14  [ТС]
По поводу SQL запроса
Delphi
1
SELECT Фамилия+" "+Имя+" "+Отчество AS ФИО FROM <table>
У меня в ADOQClient был запрос
SQL
1
SELECT * FROM client
Мне код который объединит вышеперечисленные столбцы дописывать в тот же ADOQClient? Или создавать новый?
В любом случае как я понимаю второй запрос необходимо оставить, так как для DBLookUpCombobox необходим KeyField.

Добавлено через 2 часа 33 минуты
Так же хотел спросить. Получается с помощью обычного Edit можно так же ввод данных делать. На пример я использовал такой код
Delphi
1
2
3
4
5
6
7
if Form4.Edit1.Text = '' then showmessage ('Вы не ввели данные')
else
begin
DataModule2.ADOQOtel.SQL.Clear;
DataModule2.ADOQOtel.SQL.Add('Insert into oteli (NazvanieOtelya) values (:NazvanieOtelya)');
DataModule2.ADOQOtel.Parameters.ParamByName('NazvanieOtelya').Value:=Form4.Edit1.Text;
DataModule2.ADOQOtel.ExecSQL;
Чем будет предпочтительней пользоваться, Edit или DBEdit. К DBEdit вышенаписанный код не подошел, с его данных только добавились через Post.
0
28 / 24 / 11
Регистрация: 11.11.2009
Сообщений: 101
08.12.2020, 09:40
zwerw,
Цитата Сообщение от zwerw Посмотреть сообщение
Мне код который объединит вышеперечисленные столбцы дописывать в тот же ADOQClient?
Насколько понял вопрос - думаю, что новый не нужен.
Цитата Сообщение от zwerw Посмотреть сообщение
Так же хотел спросить. Получается с помощью обычного Edit можно так же ввод данных делать
В Вашем случае я бы делал через Edit, но это мое мнение (не факт что правильное)
1
1 / 1 / 1
Регистрация: 09.06.2020
Сообщений: 125
08.12.2020, 10:51  [ТС]
Не будет ли считается простыми словами скажу "Кашей", если на какой то форме использовать буду Edit, на какой то DBEdit?
0
28 / 24 / 11
Регистрация: 11.11.2009
Сообщений: 101
08.12.2020, 10:59
Цитата Сообщение от zwerw Посмотреть сообщение
Не будет ли считается простыми словами скажу "Кашей", если на какой то форме использовать буду Edit, на какой то DBEdit?
Кому как. На вкус и цвет все фломастеры разные. Вы автор, делайте так, как Вам удобно
1
1 / 1 / 1
Регистрация: 09.06.2020
Сообщений: 125
08.12.2020, 12:03  [ТС]
Спасибо!
0
1 / 1 / 1
Регистрация: 09.06.2020
Сообщений: 125
13.12.2020, 10:58  [ТС]
По поводу связывания столбцов в DBLookUpCombobox.
Delphi
1
SELECT Фамилия+" "+Имя+" "+Отчество AS ФИО FROM <table>
Добавил ADOQuery DataSourse для таблицы Personal. Переименовал их в ADOQPersonal и DATASPersonal. В ADOQPersonal ->SQL ввожу следующий код
Delphi
1
Select * from personal
Что бы в KeyField выбрать ключ и ListField значение которое хочу что бы отображалось в строке. Если таблица с разными столбцами отдельно Фамилия, отдельно Имя и Отчество то каким образом мне вставить код по связыванию столбцов?
Если я вставлю только один код для связи таблиц в SQL ADOQPersonal, то у меня не будет возможности выбрать KeyField.
Миниатюры
Создание приложения, подключаемое к БД Access  
Изображения
 
0
1 / 1 / 1
Регистрация: 09.06.2020
Сообщений: 125
13.12.2020, 16:07  [ТС]
Так же столкнулся с таким моментом.
В DBGrid хотел сделать список туров на форме Туры. Так как связь через ключи идет, то в столбцах на пример Код отеля записан код отеля. Планировал что бы в этих столбцах отображались Имена, ну к примеру название отеля. В DBGrid наткнулся на параметр типа SQL в ADOQUERY. Прописал запрос, но ничего не изменилось. Уточню, код что бы так же был в столбце на пример Код отеля, но в DBGrid для пользователя что бы отображалось в этом столбце Название отеля. Такое вообще возможно? Или ....?
Миниатюры
Создание приложения, подключаемое к БД Access  
Изображения
 
0
1 / 1 / 1
Регистрация: 09.06.2020
Сообщений: 125
13.12.2020, 17:04  [ТС]
Так же есть вопрос по поводу отображения данных в DBGrid. В таблице DBGrid Tur например в столбце Код отеля отображается его код. Хотелось бы желательно что бы там отображалось на пример Название отеля.
SQL
1
2
3
4
5
6
7
SELECT
............
zakaz.FIO
 
FROM Таблица1 AS Mr
LEFT JOIN Заказчик AS Zakaz
ON mr.Заказчик=Zakaz.idZakaz
Вот пример запроса нашел. Необходимо создать еще один ADOQuery для этого запроса? Тогда соответственно необходимо создать еще один DataSourse для этого ADOQuery? Или же можно в уже существующий ADOQuery который был предназначен для отображения всех столбцов таблицы Tur добавить выше записанный запрос?
Миниатюры
Создание приложения, подключаемое к БД Access  
Изображения
 
0
1 / 1 / 1
Регистрация: 09.06.2020
Сообщений: 125
14.12.2020, 12:38  [ТС]
Вот такой запрос создал для объединения двух таблиц между собой, не нужные столбцы просто сделал не видимыми через Visible ->False.
Красотой форм пока не занимаюсь, главное понять что как функционирует, ну и приложение что бы работало.
Миниатюры
Создание приложения, подключаемое к БД Access   Создание приложения, подключаемое к БД Access  
0
Модератор
 Аватар для D1973
9954 / 6490 / 2461
Регистрация: 21.01.2014
Сообщений: 27,496
Записей в блоге: 3
15.12.2020, 09:26
Цитата Сообщение от zwerw Посмотреть сообщение
не нужные столбцы просто сделал не видимыми через Visible ->False.
А почему в SELECT сразу не указать только нужные столбцы?
0
1 / 1 / 1
Регистрация: 09.06.2020
Сообщений: 125
15.12.2020, 12:16  [ТС]
Сделал.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
15.12.2020, 12:16

Создание приложения "список дел" на основе БД Access
Добрый день гуру, если не возражаете попрошу несколько общих советов. Создаю примитивное приложение сугубо на базе учебной программы -...

Подключаемое оборудование
Здравствуйте. 1с предприятие 8.3 релиз 8.3.17.1549, розница 2.3 релиз 2.3.5.35. На рабочем месте подключили кассу и сканер.. когда...

Windows 7 не видит оборудование, подключаемое на передней панели
Установил windos7,не видит оборудование подключаемое на передней понели,к аудио вход-выход.

Проброс USB устройств, подключённых к ПК, через отладчик VS на подключаемое физическое устройство
Добрый день. Подскажите пожалуйста, как через Visual Studio пробросить, подключённому для отладки устройству, USB накопители, подключенные...

Создание приложения Bitrix 24. Бесконечная загрузка при установке своего приложения
Учусь создавать приложения для Bitrix 24 по видеокурсам Возникла проблема с установкой приложения. Пробую создавать приложение 2го...


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

Или воспользуйтесь поиском по форуму:
60
Ответ Создать тему
Новые блоги и статьи
Запустил конкурс "тем и промптов для текстовых квестов созданных почти чисто ИИ"
Adler 06.10.2026
Всем привет! За последние три-четыре дня я создал более 16 текстовых квестовых игр используя преимущественно по одному запросу к ИИ на игру. Мне так понравилось смотреть все ветки/ сцены во всех. . .
ИИ не может найти нужный язык в списке
Supersumestria 05.10.2026
Я ему даю вот такое изображение и прошу найти и подчеркнуть немецкий язык. Возвращает он вот это: https:/ / i. **********/ vqBWLe2. png Нужную строчку в 3й колонке просто выдумал. . Это. . .
Новая последняя моя музыка в SUNO
zorxor 05.10.2026
Здравствуйте, дорогие мои друзья! С большой радостью я хотел бы представить вам свою новую последнею музыку, которую сгенерировала мне по моей просьбе нейросеть SUNO. С уважением, zorxor. Это. . .
Nekobox - outbounds[0].transport: unknown transport type: raw
damix 01.10.2026
Фикс ошибки Правым кликом по серверу -> отладочная информация -> edit Заменить "net": "raw", на "net": "tcp", Нажать кнопку reload.
Программный домашний кинотеатр
russiannick 27.09.2026
Сподобился на программный домашний кинотеатр. В качестве ЯВУ по традиции выбрал js. В помощники взял Яндекс-Алису. Было создано три зала на разные интересы. исторические и ретро сериал Хичкок. . .
Беседа с ИИ о программистах, недопускающих к созданию и правке кода генеративные ИИ и причины этого
zorxor 21.09.2026
Раньше я радовался или получал некоторые эмоции, пусть небольшие, но всё же, от самого процесса написания кода, рекомпиляции и запуска, видя постепенное развитие программы и прочее. А теперь лень. . .
Мобильное приложение ColorStep
pavlinmavlin 17.09.2026
Реализовал приложение Красный, Зеленый, Синий в Unity3d + c#. Название изменил на ColorStep. Приложение прошло модерацию и теперь доступно для скачивания. Делал его сам, шаг за шагом — и вот,. . .
Запрет дублирования строк в табличной части
Maks 13.09.2026
Реализация из решения ниже выполнена на нетиповом справочнике "Нормы ТО" с табличной часть "Виды ТО", разработанного в КА2, со следующими реквизитами: - ВидТО (СправочникСсылка. ВидыТО); - ВидГСМ. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru