Форум программистов, компьютерный форум, киберфорум
C++ Builder: Базы данных
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.73/15: Рейтинг темы: голосов - 15, средняя оценка - 4.73
3 / 3 / 0
Регистрация: 31.08.2014
Сообщений: 87
MS Access

Запись в БД данных из полей на форме

31.08.2014, 18:28. Показов 3022. Ответов 27
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Для многих будет избитым вопрос. Прошу отнестись с пониманием. Есть база данных 1.accdb

1. расположение в том же месте что и исполнительный файл. Определил место его программно
C++
1
         AnsiString Ex_File = GetCurrentDir() + "\1.accdb";
2. использую его как компонент данных
C++
1
         ADOTable1->ConnectionString = Ex_File;
3. как добавить в таблицу базы данные знаю что можно и через это
C++
1
2
         Query->ExecSQL();
         Query->Open();
но вот как проще это сделать

= таблица с названием "Данные", содержит значение 1 поле счетчик ("№ П/П"), 2 поле текстовый ("Фамилия"), 3 поле цифровое ("Кровеносное давление")
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
31.08.2014, 18:28
Ответы с готовыми решениями:

Запись значений полей при любом вводе, изменении, обновлении данных в форме
Чтобы не потерять введенные данные (например при случайной сбое в работе базы) нужно чтобы при обновлении, изменении значений в полях формы...

MS Access - запись данных в разные таблицы при заполнении полей (справочников) на форме
Уважаемые гуру MS Access и VBA, плиз, хэлп!! ) Уже кучу уроков прочитала на сайте MS, а также по программированию на VBA, но не нашла...

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

27
 Аватар для Sasha
4956 / 2420 / 531
Регистрация: 05.06.2008
Сообщений: 7,518
Записей в блоге: 3
31.08.2014, 23:04
Чё-то не сильно понятно в чем вопрос то?
0
Почетный модератор
Эксперт HTML/CSSЭксперт PHP
 Аватар для KOPOJI
16844 / 6724 / 880
Регистрация: 12.06.2012
Сообщений: 19,967
31.08.2014, 23:13
Цитата Сообщение от Assemler Посмотреть сообщение
но вот как проще это сделать
что именно? Вывести в DBGrid что ли?
0
3 / 3 / 0
Регистрация: 31.08.2014
Сообщений: 87
01.09.2014, 06:06  [ТС]
С Редактируемого поля Edet1 ->Text ввести текст в 2 поле текстовый ("Фамилия"),

С Редактируемого поля Edet2 ->Text преобразовать в число (методом StrToInt (Edet2 ->Text)) ввести в 3 поле цифровое ("Кровеносное давление")
0
 Аватар для kodv
1449 / 1121 / 347
Регистрация: 11.04.2011
Сообщений: 2,621
01.09.2014, 06:50
Assemler, Не углубляясь в параметризованные запросы:
C++
1
2
3
4
        TADOQuery* Query = new TAdoQuery(this);
        Query->ConnectionString = Ex_File;
        Query->SQL->Add("INSERT INTO [Данные] ([Фамилия], [Кровеносное давление]) VALUES ('" + Edet1 ->Text + "', " + StrToInt (Edet2 ->Text) + ")");
        Query->ExecSQL();
0
Модератор
 Аватар для D1973
9917 / 6454 / 2455
Регистрация: 21.01.2014
Сообщений: 27,389
Записей в блоге: 3
01.09.2014, 07:02
Цитата Сообщение от Assemler Посмотреть сообщение
расположение в том же месте что и исполнительный файл. Определил место его программно
AnsiString Ex_File = GetCurrentDir() + "\1.accdb";
Это не совсем правильно, т.к. нет никакой гарантии что в какой-то момент времени текущим будет именно каталог программы, а не какой-то другой. Правильней будет
C++
1
String Ex_File = ExtractFilePath(Application->ExeName) + "1.accdb";
Цитата Сообщение от Assemler Посмотреть сообщение
как добавить в таблицу базы данные знаю что можно и через это
Query->ExecSQL();
Query->Open();
но вот как проще это сделать
Метод Open используется, когда запрос возвращает какой-либо набор данных, в противном случае используется метод ExecSQL. Проще говоря, если Вы делаете выборку данных с помощью конструкции SQL
SQL
1
SELECT * FROM TABLE_NAME WHERE ...
то используется
C++
1
Query->Open();
В Вашем случае необходимо добавить данные в таблицу, поэтому должна будет использоваться конструкция SQL запроса
SQL
1
INSERT INTO ... VALUES (...)
и, соответственно, должен быть использован метод Query->ExecSQL();
0
3 / 3 / 0
Регистрация: 31.08.2014
Сообщений: 87
03.09.2014, 21:17  [ТС]
Сколько не бьюсь но у меня ошибка на строку ниже

TADOQuery* Query = new TAdoQuery(this);
0
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
 Аватар для volvo
33378 / 21502 / 8236
Регистрация: 22.10.2011
Сообщений: 36,899
Записей в блоге: 11
03.09.2014, 21:24
C++
1
TADOQuery* Query = new TADOQuery(this);
, в C++ регистр символов имеет значение...
0
3 / 3 / 0
Регистрация: 31.08.2014
Сообщений: 87
04.09.2014, 06:10  [ТС]
Спасибо заработало.

Нельзя ли через компоненты
1. Размещаем на форме ADOTable с параметром ADOTable1 ->ConnectionString = Ex_File;
2. так же на форму DataSource с источником данных DataSet = ADOTable1
3. Так же DBGrid, так как это визуальный компонент то свойство Visibl = false; а когда надо проявить его на форме наоборот = true и в этом компоненте разместим полностью таблицу

Вот только как далее загрузить туда мою таблицу не нашел. Я параметр ADOTable1 ->ConnectionString = Ex_File; задаю программно, а DataSource- DataSet = ADOTable1 и DBGrid1- DataSource = DataSource1 задаю непосредственно через окно Object Inspector параметр Properties - непосредственно при разработки
0
 Аватар для kodv
1449 / 1121 / 347
Регистрация: 11.04.2011
Сообщений: 2,621
04.09.2014, 08:14
Assemler, Мало задать свойство ConnectionString для таблицы, эту таблицу нужно еще и открыть:
C++
1
ADOTable1->Open();
После этого данные у вас сами отобразятся в DBGrid1, если конечно DBGrid1 и DataSource у вас проинициализированны именно так, как вы написали здесь.
0
3 / 3 / 0
Регистрация: 31.08.2014
Сообщений: 87
04.09.2014, 22:24  [ТС]
ADOTable1->Open();
Использовал только что. Выдает ошибку = Диспетчер драйвера ODBC. Источник данных не найден и не указан драйвер, используемый по умолчанию. что делать с этим драйвером где его подключить

Добавлено через 12 минут
может быть ADOTable1 свойство ConnectionString здесь выбирается поставщик данных из списка

Добавлено через 24 минуты
Вроде нашел информацию Строка подключения к access пробую разобраться

Добавлено через 17 минут
А посмотрите еще это http://www.codenet.ru/progr/bcb/ado/
0
Модератор
 Аватар для D1973
9917 / 6454 / 2455
Регистрация: 21.01.2014
Сообщений: 27,389
Записей в блоге: 3
05.09.2014, 07:48
Цитата Сообщение от Assemler Посмотреть сообщение
AnsiString Ex_File = GetCurrentDir() + "\1.accdb";
Цитата Сообщение от Assemler Посмотреть сообщение
ADOTable1 ->ConnectionString = Ex_File;
В переменной Ex_File недостаточно информации для формирования ConnectionString.
Как минимум необходимо как-то так (при условии, что сама база лежит рядом с ехе-файлом)...
C++
1
2
3
String Ex_File = ExtractFilePath(Application->ExeName) + "1.accdb";
ADOTable1->ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + Ex_File + ";Persist Security Info=False";
ADOTable1->Open();
Добавлено через 16 минут
Еще 2 маленьких дополнения...
1. Если ты задаешь ConnectionString динамически, то логично, что так же динамически необходимо указать имя таблицы в БД
2. Т.к. ты используешь новый формат базы Access (*.accdb), то необходимо указывать другого провайдера.
Поэтому код подключения будет выглядеть так:
C++
1
2
3
4
String Ex_File = ExtractFilePath(Application->ExeName) + "database1.accdb"; //Указали путь к БД
  ADOTable1->ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + Ex_File + ";Persist Security Info=False"; //Указали строку соединения
  ADOTable1->TableName = "t1"; //Указали имя таблицы в БД
  ADOTable1->Open(); //Открыли базу
0
3 / 3 / 0
Регистрация: 31.08.2014
Сообщений: 87
06.09.2014, 08:35  [ТС]
Скажите а если нет в списке Microsoft.ACE.OLEDB.12.0 драйвера (смотри http://www.codenet.ru/progr/bcb/ado/) при подключении не динамическим образом.

Добавлено через 2 минуты
И подскажите если мне нужно будет редактировать базу не лучше использовать запись:
....+ ";Mode=ReadWrite|Share Deny None;Persist Security Info=False"

Добавлено через 11 часов 49 минут
Написал так
C++
1
2
3
4
5
6
7
8
9
10
11
12
    //Указать драйвер подключения
    AnsiString Drive_File = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=";
    //Указать базу данных
    AnsiString Ex_File = ExtractFilePath(Application->ExeName) + "ЭТЛ.mdb";
    //Указать доступ к базе данных
    AnsiString File_Go = ";Persist Security Info=False";
    //Подключится к базе
    ADOTable1 ->ConnectionString = Drive_File + Ex_File + File_Go;
    //указать таблицу
    ADOTable1 ->TableName = "Экспертная организация";
    //Открыть таблицу
    ADOTable1 ->Open();
Так же на форму поместил DBGrid для визуализации соединив свойство DataSource ->DataSoursce1 выведено была таблица.
0
Модератор
 Аватар для D1973
9917 / 6454 / 2455
Регистрация: 21.01.2014
Сообщений: 27,389
Записей в блоге: 3
07.09.2014, 06:13
Цитата Сообщение от Assemler Посмотреть сообщение
а если нет в списке Microsoft.ACE.OLEDB.12.0 драйвера
Ты уж определись, БД какого формата ты используешь... С стартовом посте ты пишешь, что у тебя БД формата 2007
Цитата Сообщение от Assemler Посмотреть сообщение
Есть база данных 1.accdb
сейчас - что 2000-ХР-2003...
Цитата Сообщение от Assemler Посмотреть сообщение
ExtractFilePath(Application->ExeName) + "ЭТЛ.mdb";
В зависимости от этого используются разные провайдеры:
Microsoft.Jet.OLEDB.4.0 используется, если используется БД Access 2000-XP-2003.
Для Access 2007-2010 используется Microsoft.ACE.OLEDB.12.0

Цитата Сообщение от Assemler Посмотреть сообщение
Mode=ReadWrite|Share Deny None
Честно говоря, никогда это не использовал. Минимальной строки подключения вполне достаточно и для работы с данными и для редактирования базы.
0
3 / 3 / 0
Регистрация: 31.08.2014
Сообщений: 87
08.09.2014, 19:08  [ТС]
Нашел в интернете нашел методы которыми обладает Tabl1
0
Модератор
 Аватар для D1973
9917 / 6454 / 2455
Регистрация: 21.01.2014
Сообщений: 27,389
Записей в блоге: 3
08.09.2014, 19:17
Цитата Сообщение от Assemler Посмотреть сообщение
Нашел в интернете нашел методы которыми обладает Tabl1
Поздравляю! И что?
0
3 / 3 / 0
Регистрация: 31.08.2014
Сообщений: 87
09.09.2014, 20:45  [ТС]
Сейчас разбираюсь как этим пользоваться
0
Я Фоюмчанин ? дааааа)
 Аватар для ivan.-94
213 / 204 / 23
Регистрация: 02.06.2012
Сообщений: 1,424
Записей в блоге: 12
14.09.2014, 12:18
Воспользуйтесь ADOTable,Datasource и компонентами DB(DBEdit, DBText,DBGrid,DBNavigator) и потом можно просто делать так:
Не пользуясь высокоуровневым языком SQL

К примеру:
есть таблица Table1
Pole1Pole2
бросаете на форму DataSource1,ADOTable1,DBNavigator1,DBEdi t1 и DBEdit2;
SQL
1
2
3
4
5
6
7
8
ADOTable1->connection=ADOConnection1;
ADOTable1->TableName = "Table1";
DataSource1->DataSet=ADOTable1;
DBNavigator1->DataSource=DataSource1;
DBEdit1->DataSource=DataSource1;
DBEdit1->DataField="Pole1";
DBEdit2->DataSource=DataSource1;
DBEdit2->DataField="Pole2";
А далее просто используя навигатор добавляем, удаляем, редактируем, просматриваем записи, просто пролистывая.
0
Я Фоюмчанин ? дааааа)
 Аватар для ivan.-94
213 / 204 / 23
Регистрация: 02.06.2012
Сообщений: 1,424
Записей в блоге: 12
14.09.2014, 12:25
А вообще вот вам теория и практика:
Вложения
Тип файла: rar Лабы задания.rar (124.4 Кб, 9 просмотров)
0
3 / 3 / 0
Регистрация: 31.08.2014
Сообщений: 87
14.09.2014, 16:58  [ТС]
за лабы спасибо. Пока разбираюсь но как обычно информации маловато
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
14.09.2014, 16:58
Помогаю со студенческими работами здесь

Запись, текста в форме 2 полей и кнопки
На форме есть 2 поля скажем логин и пароль и кнопка. Мне нужно чтобы Логин записался в 1 текстовый файл а пароль в другой текстовый файл. и...

Как произвести запись в БД с текстовых полей на форме или других контроллов
пишу на vb10, подскажите плиз как мне записывать введеную в текстовые поля инфу в бд? к примеру фио в таблицу1, Данные родителей в таблицу...

Считывание данных из полей на форме
Здравствуйте. Может подскажите. Есть главная форма с 3 элементами : кнопка, поле со списком и поле. При нажатии на кнопку считываются...

Фильтрация данных в запросе по значениям полей на форме
помогите решить задачу с фильтрацией данных в запросе по значениям полей на форме что есть - какой то запрос, например qrTest с двумя...

Запись в файл данных из полей
Привет) Помогите плиз перевести проект из С# в С++. Я на С# то написал все это с гуглом, а получается так, что к понедельнику эту прогу...


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Основы отладки веб-приложений на SDL3 по USB и Wi-Fi, запущенных в браузере мобильных устройств
8Observer8 07.02.2026
Содержание блога Браузер Chrome имеет средства для отладки мобильных веб-приложений по USB. В этой пошаговой инструкции ограничимся работой с консолью. Вывод в консоль - это часть процесса. . .
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru