C++ Builder: подключение к Access

Разработчики предусмотрели целую кучу самых разных вариантов создания такого рода подключения. В данной заметке я постараюсь рассмотреть самый простой (с моей точки зрения) и одновременно эффективный способ создания соединения с базой данных Access.

Прежде всего, на форме нам понадобятся такие компоненты: (невидимые) ADOTable (вкладка ADO), DataSource (вкладка Data Access); (видимый) DBGrid (находится на вкладке Data Controls).

В общем, устанавливаем все это добро на форму. После чего переходим к этапу настройки. Прежде всего, нам необходимо создать строку подключения (свойство ConnectionString компонента ADOTable).

Открываем окошко настройки ADOTable ConnectionString и щелкаем на кнопочку «Build». Далее следует выбрать поставщика данных. Выбираем Microsoft Jet 4/0 OLE DB Provider. Нажимаем далее и переходим на вкладку «Подключение». Здесь следует выбрать созданную базу данных. После выбора БД щелкаем кнопку «Проверить подключение». Если все хорошо – получаем радостное сообщение о том, что проверка подключения выполнена.

Теперь строка подключения построена. В случае если файл БД находится в одной папке с создаваемым проектом – лучше сделать путь к нему относительным, т.е. стереть созданный автоматически адрес, оставив лишь Data Source=db.mdb (где db.mdb – имя файла).

После этого следует выбрать нужную вам таблицу (установив свойство компонента ADOTable TableName). Теперь делаем компонент активным (ставим свойство Active в положение true).

После чего переходим к настройке DataSource. Устанавливаем в свойство DataSet название вашего компонента ADOTable (например, ADOTable1).

Далее необходима настройка DBGrid. Здесь, устанавливаем в свойство DataSourse название вашего DataSourse-компонента (например, DataSourse1).

Вот и все – связь вашего C++ Builder-проекта с базой данных Access создана. Осталось лишь откомпилировать.

0

  1. В смысле, для меня, начинающего программисца, все грамотно растолковано. Зо это фенкс!

    1. Можно, конечно, и его использовать. Но заметка о самом простом варианте подключения с самым минимальным набором компонентов. Вот.

    1. Да, для удобства. Его обычно используют в случае, если на форме предполагается много таблиц из одной базы данных.

  2. Спасибо вам за статью. С первого раза все получилось. А так за лабой просидела час и по инструкции в ней вообще нечего не получалось

  3. После выбора таблицы в ADOTable TableName, нельзя сделать этот компонент активным, при выборе свойства true вылезает ошибка: «Ошибка синтаксиса в предложении FROM»

      1. Причина может быть в названии таблицы. Например, оно (название) с пробелом или содержит какую-то странную букву/знак (апостроф, к примеру, или украинскую букву «ґ» или еще какую фигню).

  4. Здравствуйте. Помогите мне решить мою проблему. Я подключил БД acess к моей программе, в БД присутствует тип поля «логический», т.е. там поле со списком Вкл/Выкл. Но в программе почему-то этого списка не появляется, т.е., поле для ввода есть, но при его выборе, список значений выбора не выплывает, можно только ввести значения вручную, после чего возникает ошибка. Подскажите как это устранить, мне очень нужно это поле

    1. Добрый день. А когда TRUE/FALSE или 1/0 вводите есть ошибка?
      Вообще в такой ситуации нужно создавать отдельно выпадающий список и «подкидывать» его значение на это поле, т.е. при выборе Вкл. давать ему значение 1 или TRUE (проверить что будет работать), а при Выкл. — 0 или FALSE.

  5. А в чем может быть причина такой вот ошибки:
    Не выполнена проверка соединения из за ошибки при инициализации поставщика. Не удается запустить приложение. Системная база отсутствует или открыта с монопольным доступом другим пользователем.
    Хотя при проверке MS Access все открывает?

      1. Проблема была в том, что база данных была за паролем, а по умолчанию спрашивается пароль пользователя, вот и не вышло. Что бы ввести пароль самой базы данных, нужно на вкладке Все (свойство связи с данными) в свойстве Jet OLEDB:Database Password ввести пароль базы данных.

        1. Рада, что вы разобрались. Такую проблему можно выявить только видя БД и приложение (особенно в свете того, что базы в ацессе мало кто паролем закрывает 🙂 ).

  6. у меня три вопроса сразу. 1)почему то при DataSource выборе на DBNavigation кнопки серые становяться в чем дело? 2)можно ли сделать столбец чтобы было выплывающие меню если в поле есть одинаковые поля. 3)как сделать таблицу в этой же чтобы можно было добавлять записи

    1. 1) Кнопки серые в процессе разработки? Или выполнения программы? Пока ADOTable неактивна, они черными не будут…
      2) Не поняла задачу. Выплывающее меню где? Выпадающий список, может?)
      3) Тоже ничего не понятно. Сколько у вас таблиц в БД? Вы хотите добавлять что-то по связи? — Нужно писать запрос.

      1. 1) в процессе разработки 2)в ячейке определенной чтобы по сто раз не вводить одну и тужу информацию туда 3)в эту таблицу можно было добавлять записи плюс к тем что я добавлю

        1. Еще раз: ячейки будут содержать информацию из базы данных. Можно программно задать их значение, но тогда и в БД информация обновится (а лучше все же написать запрос и обновить через ADOQuery).

  7. у меня там таблицы нету хотя все правильно делал до этого пункта «в ADOTable1 в TableName выбираем нашу таблицу»

  8. как добавить еще одну таблицу если база состоит из нескольких таблиц, и еще надо список названия таблиц чтобы когда работала программа надо чтобы был список таблиц. и как объеденить их все

    1. 1. А в чем проблема с добавлением таблицы? Либо создавайте еще один коннект, либо программно ставьте

      1
      
      ADOTable1->TableName="Название_таблицы";

      2. Чтоб получить список таблиц используйте

      1
      
      ADOConnection1->GetTableNames (список строк, булевое значение);

      3. Что вы имеет ввиду под объединить?

      1. это база данных и они должны объеденяться а потом надо сделать запрос с параметром

        1. Кто они? Таблицы? Связь делайте в менюхе «Схема данных». Запрос можно создать через конструктор, если с sql проблемы.

  9. очень грамотно растолковано, все сразу получилось! сайт для людей! огромное спасибо!

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *