C++ и ACCESS. Пример работы с ACCESS на Windows Forms C++.

Поділитися
Вставка
  • Опубліковано 27 лют 2020
  • В этом видео найдете руководство как работать с базой из Microsoft Access в Microsoft Visual Studio Windows Forms приложении на c++.
    === Исходники и поддержать канал: ===
    boosty.to/fps.fireplanetstudio
    === Отзывы на наши проекты: ===
    • VK: topic-146160167_49433477
    === Контакты для заказа проекта: ===
    • VK: vladimir_repp
    • VK: fps_vladimir
    • Telegram: @Vladimir_Repp
    • Телефон (смс, WhatsApp, Telegram): 89994402751
    • Почта: fireplanetstudio@mail.ru
    === Контакты для партнерства: ===
    (В том числе если ищите интересные проекты и дружную команду разработки, см. тему сообщения)
    • Тема: Партнерство / В команду Student Dev / В команду Software Dev / В команду Game Dev
    • Телефон (смс, WhatsApp, Telegram): 89994402751
    • Почта: vladimir_repp97@mail.ru
    === Социальные сети, там будут новые и актуальные новости: ===
    • UA-cam: / @fps.fireplanetstudio
    • Группа в VK: fps_fireplanetstudio
    • Яндекс Дзен: dzen.ru/id/622f7bfd76344e6a51...
    • Rutube: rutube.ru/channel/24737236/
    • Instagram: @fps.fireplanetstudio
    • Boosty: boosty.to/fps.fireplanetstudio
    Как вам видео и материал в целом? Есть что изменить, добавить, поправить в подаче материала?
    *** Реализованы следующие действия:
    1. Загрузка данных
    2. Добавление данных
    3. Обновление данных
    4. Удаление данных
    *** Есть такой же пример на языке программирования C#: • C# и ACCESS. Пример ра...

КОМЕНТАРІ • 71

  • @user-gn2nr9sj5o
    @user-gn2nr9sj5o 3 роки тому +6

    Я уже прилично на ютубе, но впервые оставляю комментарий. Огромное Вам спасибо за данное видео, все понятно, все получилось по вашему примеру и оперативно). Большое спасибо за Вашу работу!

  • @user-dw7mg7go1o
    @user-dw7mg7go1o Рік тому

    Спасибо, большое. Долгое время мучался с добавлением данных в БД. А вы всё разъяснили и показали в понятном формате

  • @user-lp9wx6kx8s
    @user-lp9wx6kx8s 4 роки тому +11

    Спасибо огромное! Долго искала и наконец нашла нужный мне материал для курсовой!

    • @jorgerene1758
      @jorgerene1758 3 роки тому

      pro tip : you can watch series on flixzone. Me and my gf have been using them for watching all kinds of movies lately.

    • @rileyeaston1207
      @rileyeaston1207 3 роки тому

      @Jorge Rene yea, have been watching on Flixzone} for months myself :D

    • @DauletovKingroyal
      @DauletovKingroyal 2 роки тому

      Здравствуйте, а у вас на какую тему курсовая

  • @KingDog25
    @KingDog25 Рік тому

    Спасибо что используешь разные элементы и некоторые их свойства в программах, много чего нового благодаря тебе узнал. Было бы конечно еще лучше с формой для добавления новых данных.

  • @bonfire5388
    @bonfire5388 3 роки тому +2

    Видосы топ, без воды все ясно и понятно. Это однозначно лайк

  • @user-lu9zu3tm2h
    @user-lu9zu3tm2h Рік тому

    Спасибо за видео! Очень понятно всё объяснено, спасибо большое!

  • @user-tv2eo3di6o
    @user-tv2eo3di6o 3 роки тому +1

    Спасибо большое!

  • @user-fn7lm7fr2l
    @user-fn7lm7fr2l Рік тому

    Спасибо тебе огромное!
    Я долгое время старался подключить БД, но всё было зря. Благодаря тебе наконец получилось.😄

  • @mircrashjsh
    @mircrashjsh 3 роки тому +1

    Cпасибо

  • @user-fd6wd9kp9s
    @user-fd6wd9kp9s 3 роки тому

    лучший

  • @vadimdevyatkin3189
    @vadimdevyatkin3189 4 роки тому +2

    Круто! Могли бы вы рассказать про дизайн формы? Как можно менять стандарты дизайна? На с++ не смог найти достойные библиотеки.

  • @yellowmoonishka1725
    @yellowmoonishka1725 2 роки тому

    Ths

  • @gromozeqa1691
    @gromozeqa1691 3 роки тому +1

    OleDbDataReader^ dbReader = dbCommand->ExecuteReader();
    в этой строке выдает ошибку, что не хватает одного или нескольких параметров, что не так?
    еще я хочу выводить ячейки не в dataGridView, а просто в label, подойдет ли следующий код
    label1->Text = dbReader.ToString(); ??

  • @TheAellessar
    @TheAellessar 3 роки тому

    Спасибо за объяснение. Но при попытки записи в базу создаётся файл ldb, при этом в базу данные не записываются. В чем может быть проблема?

  • @RedstoneAndCB
    @RedstoneAndCB 3 роки тому

    Очень понятно объяснили, спасибо большое. Но у меня есть вопрос. Мне нужно, что бы я программно (при нажатии на кнопку или как-то по другому) мог варьировать количество столбцов и присваивать им названия (хотя названия не обязательно, можно просто порядковый номер столбца). Вопрос, собственно, как это сделать?
    Upd. А, всё таки мне нужны названия столбцов и вопрос: можно ли их менять именно в исходном файле через программу?

    • @FPS.FirePlanetStudio
      @FPS.FirePlanetStudio  3 роки тому +1

      Можно попробовать это реализовать так, в обработчике нажатия кнопки по созданию столбцов:
      DataGridViewTextBoxColumn^ column = gcnew DataGridViewTextBoxColumn ();
      column->Name = “NameColumn”;
      dataGridView->Columns->Add(column);
      Тогда добавится один столбец с указанными параметрами.
      Все что делаем в редакторе, можно сделать через код. Все поля которые указываем, по аналогии с примером Name, можно так же изменить через код.

  • @fascan7466
    @fascan7466 3 роки тому +1

    А можно код?) Не для себя, а для Сашки!
    Просто муторно переписывать: String^ connect = "provider=Microsoft.Jet.OLEDB.4.0; Data Source=Data.mdb";

  • @maximumgame2553
    @maximumgame2553 Рік тому

    А что если путь соединения с БД ошибку выдаёт? Есть ли какой-то способ подключить всю бд, как в С# допустим?

  • @kladowki2821
    @kladowki2821 2 місяці тому

    Подскажите, пытался сделать фильтр по запросу: "SELECT * FROM [table_name] WHERE comp LIKE '*" + textBox1->Text + "*'", в конечном итоге он не находит ни одного совпадения, какую бы я строку не писал, возможно вместо dbComand->ExecuteReader(); нужно использовать что-то другое?

  • @user-kp6rx1pj4h
    @user-kp6rx1pj4h 2 роки тому +2

    : "Ошибка синтаксиса в инструкции UPDATE."
    Постоянно выскакивает такая ошибка, в кнопке ИЗМЕНИТЬ
    String^ qwerty_S = "UPDATE [TableStudents] SET Name='"+ Name +"', Surname='"+ Surname +"', Number="+ Number +" WHERE id=" + ID ;
    В чём может быть проблема? Пишет, что проблема в синтаксисе...

  • @user-wz9vo8rx2j
    @user-wz9vo8rx2j Місяць тому

    Почему-то при добавлении записей в таблицу они передаются как DataGridViewTextBoxCell { ColumnIndex=1, RowIndex=7 }
    кто-нибудь знает как это исправить?

  • @rydamchannel5027
    @rydamchannel5027 2 роки тому

    А как убрать повторную загрузку если нажать два раза на кнопу загузки то и загрузится два раза тоесть есл в бд 2 строки то в таблице проги уже 4

    • @FPS.FirePlanetStudio
      @FPS.FirePlanetStudio  2 роки тому

      Нужно очистить данные перед загрузкой. Если вывод из бд идёт напрямую в dataGridView, то просто очистить в ней строки

  • @artpiano33
    @artpiano33 4 роки тому

    Скажите, а как подключиться к БД с расширением *accdb? К *mdb всё нормально, а здесь не получается.

    • @dokmobile5111
      @dokmobile5111 4 роки тому

      Вам нужно саму бд открыть и сохранить заново в нужном формате.

    • @user-jy3ep2mi4x
      @user-jy3ep2mi4x 3 роки тому

      указать более новый провайдер

  • @Vladiliano
    @Vladiliano 2 роки тому

    И так, Господа, возился я пол дня с ошибкой типа System.Data.OleDb.OleDbException (0x80040E10). Её решение в том что если вы используете в таблице символы, например как столбец "name", то его надо взять дополнительно в ординарные кавычки '"name"'. Автор не очень понятно объяснил этот момент на 21:21 .

    • @Vladiliano
      @Vladiliano 2 роки тому +1

      Стоит заметить, есть и моя ошибка потому что не досмотрел до 26:00 , но всё же, думаю, такие вещи надо обговаривать сразу же

  • @alexkayful
    @alexkayful 3 роки тому

    в таблице Access 15 полей.
    я хочу добавить новые записи только для 4 полей
    запрос на добавление написан следующим образом:
    String^ query = "INSERT INTO [t_personal] VALUES (" + Код + ", " + Фамилия + ", " + Имя + ", " + Отчество + ", " + кодвзв + ")";
    Выдаёт ошибку
    System.Data.OleDb.OleDbException: "Отсутствует значение для одного или нескольких требуемых параметров."
    Изначально это исключение было создано в этом стеке вызовов:
    [Внешний код]
    DBvidbir::MyForm::button_add_Click(System::Object^, System::EventArgs^) в MyForm.cpp
    [Внешний код]
    main(array^) в MyForm.cpp
    -= Помогите правильно написать запрос на добавление с учётом указанных выше условий =-

    • @FPS.FirePlanetStudio
      @FPS.FirePlanetStudio  3 роки тому

      На сколько я знаю, в данную таблицу нельзя вставить данные по не всем полям, можно только добавить данные для всех полей. По крайней мере в этом примере. Вы можете в нужные поля добавить данные, а в остальные добавить какие нибудь константные значений, например «-», «0» или любое другое, которое будет подразумевать пустой значение.

    • @alexkayful
      @alexkayful 3 роки тому

      @@FPS.FirePlanetStudio спасибо за Ваш ответ. У меня получилось сделать так как я хотел (добавлять значения только для 4 полей). Проблема была в написании синтаксиса самого запроса. Так что спасибо, Ваш код работает и для моего частного случая.

    • @user-pu2cr6lo5i
      @user-pu2cr6lo5i 3 роки тому

      @@alexkayful Можешь пожалуйста ответить в чем была проблема? У меня сейчас выдает такую же ошибку, я хочу во все поля таблицы записать информацию. Все точно как на видосе описал, но не работает, ошибка как у тебя.

  • @Baby_Yoda20
    @Baby_Yoda20 2 роки тому

    Исключение не обработано!
    System.Data.OleDb.OleDbException: "Недопустимое имя файла."
    Как решить проблемку?

    • @FPS.FirePlanetStudio
      @FPS.FirePlanetStudio  2 роки тому

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

  • @nikita7272
    @nikita7272 4 місяці тому +1

    Подскажите, а что делать если выдает ошибку "Поставщик Microsoft.Jet.OLEDB.4.0 не зарегистрирован на локальном компьютере"?

    • @artemmovishartemmovish6011
      @artemmovishartemmovish6011 4 місяці тому

      Нашел как исправить?

    • @nikita7272
      @nikita7272 4 місяці тому

      @@artemmovishartemmovish6011вместо 4.0 пишешь 12.0.0

  • @user-mr5qm7cc5g
    @user-mr5qm7cc5g 9 місяців тому

    У меня возникла ошибка на запрос по обновлению данных. Пишу ID_MEMBER(Такое название у меня в таблице Access), запрос примерно такой ID_MEMBER=' " +id_member(такое название переменной в которой содержится ID пользователя)+ " ' и другие данные которые параллельно обновляю, но почему то он не обновляет. Убираю запрос на обновление ID пользователя он работает, то есть другие данные обновляет. В чём может ошибка?

    • @FPS.FirePlanetStudio
      @FPS.FirePlanetStudio  9 місяців тому +1

      Именно ID пользователя не обновляется как поле? Возможно у вас стоят соответствующие настройки в БД, либо в чем то другом ошибка, точнее, к сожалению, не могу подсказать, нужно БД и код смотреть

    • @user-mr5qm7cc5g
      @user-mr5qm7cc5g 9 місяців тому

      @@FPS.FirePlanetStudio спасибо большое и правда какая то ерунда была в таблице, может из за того что ID_MEMBERS был связан с другой таблицей?

    • @user-mr5qm7cc5g
      @user-mr5qm7cc5g 9 місяців тому

      @@FPS.FirePlanetStudio а нет из за того что связаны ни как не влияет на работоспособность

  • @frozehbrian_4166
    @frozehbrian_4166 3 роки тому

    Что делать, если база не подключается, но ошибки не выдает?

    • @FPS.FirePlanetStudio
      @FPS.FirePlanetStudio  3 роки тому

      Возможно дело в версии базы данных или в неправильном объявлении, или может база пуста, причин может быть несколько. Сложно сказать, из за чего так произошло.

    • @frozehbrian_4166
      @frozehbrian_4166 3 роки тому

      @@FPS.FirePlanetStudio Хех, привет, подтянул я свои знания, там прикол был в том, что в новых версиях подключение происходит несколько иначе

    • @user-jk7gq8ut1r
      @user-jk7gq8ut1r 2 роки тому

      @@frozehbrian_4166 подскажите, пожалуйста, как решили проблему?

    • @academai11
      @academai11 2 роки тому

      @@user-jk7gq8ut1r убери return void

  • @shapelvm
    @shapelvm 3 роки тому +1

    "О окнах" не рассказал, зато "оБ программе" всё ясно. Я в шоке, сколько такие учителя плодят "программистов", которые после первого урока уже создают каналы по программированию, а потом шарятся по настройкам месяцами с поиском кнопки "монетизация".

    • @FPS.FirePlanetStudio
      @FPS.FirePlanetStudio  3 роки тому +1

      Вас никто не заставляет смотреть подобные ролики. Лучше дать конструктивные комментарии, чем быть диванным критиком, которых тоже «расплодилось», раз знаете материал лучше.

    • @shapelvm
      @shapelvm 3 роки тому

      @@FPS.FirePlanetStudio Ну да, ну да... Диз и в Бан, умник.

    • @FPS.FirePlanetStudio
      @FPS.FirePlanetStudio  3 роки тому

      @@shapelvm, дело ваше

    • @user-ut1eh6lf2k
      @user-ut1eh6lf2k 4 місяці тому

      ахахаха, туповатый ты однако@@shapelvm

  • @alexandertrofimov561
    @alexandertrofimov561 Рік тому

    Удивительно, уже 2023 год, а таблицу нужно заполнять данными "ручками". Неужели нет визуального элемента (типа DBGrid в Борланде), в котором это реализовано автоматически?
    И вообще удивительно, что настолько продуманная концепция организации интерфейса Борланда не получила своего развития и воплощения в современных IDE. Где сейчас этот Борланд?

    • @FPS.FirePlanetStudio
      @FPS.FirePlanetStudio  Рік тому

      Можно сделать dataSet, тогда не придется вводить все вручную

  • @user-ft3wm4wx3x
    @user-ft3wm4wx3x 8 місяців тому

    чи я щось не розумію це ж СИНТАКСИС с#

  • @suicide_kira
    @suicide_kira Рік тому

    выдаёт ошибку синтаксиса в апдейте и удалении, три раза код перенабрал, не могу понять в чем проблема
    System::Void aeroport::MyForm2::button_update_Click(System::Object^ sender, System::EventArgs^ e)
    {
    if(dataGridView1->SelectedRows->Count != 1)
    {
    MessageBox::Show("Выберете одну строку для добавления");
    return;
    }
    int index = dataGridView1->SelectedRows[0]->Index;
    if (dataGridView1->Rows[index]->Cells[0]->Value == nullptr ||
    dataGridView1->Rows[index]->Cells[1]->Value == nullptr ||
    dataGridView1->Rows[index]->Cells[2]->Value == nullptr ||
    dataGridView1->Rows[index]->Cells[3]->Value == nullptr ||
    dataGridView1->Rows[index]->Cells[4]->Value == nullptr ||
    dataGridView1->Rows[index]->Cells[5]->Value == nullptr ||
    dataGridView1->Rows[index]->Cells[6]->Value == nullptr)
    {
    MessageBox::Show("не все данные введены");
    return;
    }
    String^ kodPass = dataGridView1->Rows[index]->Cells[0]->Value->ToString();
    String^ nomer = dataGridView1->Rows[index]->Cells[1]->Value->ToString();
    String^ seria = dataGridView1->Rows[index]->Cells[2]->Value->ToString();
    String^ surname = dataGridView1->Rows[index]->Cells[3]->Value->ToString();
    String^ namepas = dataGridView1->Rows[index]->Cells[4]->Value->ToString();
    String^ waypas = dataGridView1->Rows[index]->Cells[5]->Value->ToString();
    String^ placepas = dataGridView1->Rows[index]->Cells[6]->Value->ToString();
    String^ connectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=Z:\\zxcursovaya\\itachicpp\\aeroport\\aeroport\\x64\\aeroport.accdb";
    OleDbConnection^ dbConnection = gcnew OleDbConnection(connectionString);
    dbConnection->Open();
    String^ query = "UPDATE [пассажиры] SET Серияпаспорта = " + seria +", Номерпаспорта = "+ nomer +", Фамилия = '"+ surname +"', Имя = '"+ namepas + "', Маршрут '"+ waypas +"', Место " + placepas +" WHERE Кодпассажира = " + kodPass;
    OleDbCommand^ dbComand = gcnew OleDbCommand(query, dbConnection);
    if (dbComand->ExecuteNonQuery() != 1) {
    MessageBox::Show("Ошибка выполнения запроса");
    }
    else {
    MessageBox::Show("Данные изменены!", "Готово!");
    }
    dbConnection->Close();
    return System::Void();
    }

    • @senchasosed2420
      @senchasosed2420 Рік тому

      Нашёл ошибку?

    • @suicide_kira
      @suicide_kira Рік тому

      @@senchasosed2420 нет, не нашел.

    • @senchasosed2420
      @senchasosed2420 Рік тому

      @@suicide_kira если оно тебе ещё надо, тыкни меня, я вроде разобрался, и знаю где ошибка

    • @suicide_kira
      @suicide_kira Рік тому

      @@senchasosed2420 и где ошибка

    • @senchasosed2420
      @senchasosed2420 Рік тому +3

      @@suicide_kira "UPDATE [пассажиры] SET [Серия паспорта] = " + seria +", [Номер паспорта] = "+ nomer +", Фамилия = '"+ surname +"', Имя = '"+ namepas + "', Маршрут '"+ waypas +"', Место = " + placepas +" WHERE [Код пассажира] = " + kodPass;
      Если у тебя в таблице названия столбцов состоят из 2-х слов, то просто бери их в квадратные скобки, после место забыл = поставить
      Вот пример моего кода и запроса
      String^ NameOw = dataGridView1->Rows[IndexAdd]->Cells[0]->Value->ToString();
      String^ Code = dataGridView1->Rows[IndexAdd]->Cells[1]->Value->ToString();
      String^ qant = dataGridView1->Rows[IndexAdd]->Cells[2]->Value->ToString();
      String^ Sity = dataGridView1->Rows[IndexAdd]->Cells[3]->Value->ToString();
      String^ ConnectString = "provider=Microsoft.Jet.OLEDB.4.0;Data Source=products.mdb";//Строка для подключения к БД
      OleDbConnection^ ConnectToDB = gcnew OleDbConnection(ConnectString);//Строка подключения к БД
      ConnectToDB->Open();//Открываем соединение
      String^ query = "UPDATE [Поставщик] SET [Количество товара] = " + qant + ", [Имя поставщика] = '"+ NameOw +"', [Город] = '"+ Sity +"' WHERE [Код товара] = " + Code;//Запрос на обновление данных
      OleDbCommand^ UPDATECommand = gcnew OleDbCommand(query, ConnectToDB);//Строка подключения, 2 параметра: к какой БД и с каким запросом
      Вот пример с удалением
      String^ NameOw = dataGridView1->Rows[IndexAdd]->Cells[0]->Value->ToString();
      String^ Code = dataGridView1->Rows[IndexAdd]->Cells[1]->Value->ToString();
      String^ qant = dataGridView1->Rows[IndexAdd]->Cells[2]->Value->ToString();
      String^ Sity = dataGridView1->Rows[IndexAdd]->Cells[3]->Value->ToString();
      String^ ConnectString = "provider=Microsoft.Jet.OLEDB.4.0;Data Source=products.mdb";//Строка для подключения к БД
      OleDbConnection^ ConnectToDB = gcnew OleDbConnection(ConnectString);//Строка подключения к БД
      ConnectToDB->Open();//Открываем соединение
      String^ query = "DELETE FROM [Поставщик] WHERE [Код товара] = " + Code;//Запрос на удаление данных
      OleDbCommand^ DELETECommand = gcnew OleDbCommand(query, ConnectToDB);//Строка подключения, 2 параметра: к какой БД и с каким запросом