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

Ввод даных в базу

11.06.2014, 17:06. Показов 2353. Ответов 32
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Хочу сделать чтобы добавление в базу Access было через отедльное поле и 1 кнопкой, а не целой панелью. Нашел как один человек делал то же саме тут с сиквел базой(если я правильно понял). И сделал аналогичный код:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
void __fastcall TForm1::Button1Click(TObject *Sender)
{
   DBGrid1->MS Access Database->Add("INSERT INTO vips (Íèê, Óñëóãà, Ñåðâåð, Äàòà íà÷àëà, Äàòà êîíöà, Ïðèìå÷àíèå)");
   DBGrid1->MS Access Database->Add("VALUES (:Param1, :Param2, :Param3, :Param4, :Param5, :Param6)");
   DBGrid1>Parameters->ParamByName("Param1")->Value = Form1->Edit1->Text;
   DBGrid1>Parameters->ParamByName("Param2")->Value = Form1->Edit2->Text;
   DBGrid1>Parameters->ParamByName("Param3")->Value = Form1->Edit3->Text;
   DBGrid1>Parameters->ParamByName("Param4")->Value = Form1->Edit4->Date;
   DBGrid1>Parameters->ParamByName("Param5")->Value = Form1->Edit5->Date;
   DBGrid1>Parameters->ParamByName("Param6")->Value = Form1->Edit6->Text;
   DBGrid1->ExecMS Access Database();
}
//---------------------------------------------------------------------------
и как вы думаете где выбило? конечно же на MS Access Database. Как его заменить и что еще подправить?
P.S Таблица бд на 7 полей:
1 счетчик-ключ(в програму его не добавлял)
2 текст
3 текст
4 текст(хочу сделать чтобы было типа выпадное меню, но еще не знаю как)
5 дата
6 дата
7 текст
2 вида эдитов, так как не знаю какой нужен
Миниатюры
Ввод даных в базу  
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
11.06.2014, 17:06
Ответы с готовыми решениями:

как делать базу даных в Builder
Скиньте плиз какие нибудь исходники как делать базу даных в Builder

Не могу добавить запись в Базу даных
У меня проблема, не могу добавить запись в БД через с++ Builder, добавляю таким методом: ...

Не получется создать базу даных в Access
Народ если не трудно запихайте access в Borland c++

32
 Аватар для Sasha
4956 / 2420 / 531
Регистрация: 05.06.2008
Сообщений: 7,518
Записей в блоге: 3
11.06.2014, 17:33
Лучший ответ Сообщение было отмечено vladenio как решение

Решение

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
void __fastcall TForm1::Button1Click(TObject *Sender)
{
   ADOQuery1->SQL->Close();
   ADOQuery1->SQL->Clear();  
   ADOQuery1->SQL->Add("INSERT INTO vips (Ник, Услуга, Сервер, Дата начала, Дата конца, Примечание)");
   ADOQuery1->SQL->Add("VALUES (:Param1, :Param2, :Param3, :Param4, :Param5, :Param6)");
   ADOQuery1->Parameters->ParamByName("Param1")->Value = Form1->Edit1->Text;
   ADOQuery1->Parameters->ParamByName("Param2")->Value = Form1->Edit2->Text;
   ADOQuery1->Parameters->ParamByName("Param3")->Value = Form1->Edit3->Text;
   ADOQuery1->Parameters->ParamByName("Param4")->Value = Form1->Edit4->Date;
   ADOQuery1->Parameters->ParamByName("Param5")->Value = Form1->Edit5->Date;
   ADOQuery1->Parameters->ParamByName("Param6")->Value = Form1->Edit6->Text;
   ADOQuery1->ExecSQL();
}
1
 Аватар для vladenio
0 / 0 / 1
Регистрация: 16.03.2013
Сообщений: 52
11.06.2014, 18:37  [ТС]
Цитата Сообщение от Sasha Посмотреть сообщение
Код C++
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
void __fastcall TForm1::Button1Click(TObject *Sender)
{
 ADOQuery1->SQL->Close();
 ADOQuery1->SQL->Clear(); 
 ADOQuery1->SQL->Add("INSERT INTO vips (Ник, Услуга, Сервер, Дата начала, Дата конца, Примечание)");
 ADOQuery1->SQL->Add("VALUES (:Param1, :Param2, :Param3, :Param4, :Param5, :Param6)");
 ADOQuery1->Parameters->ParamByName("Param1")->Value = Form1->Edit1->Text;
 ADOQuery1->Parameters->ParamByName("Param2")->Value = Form1->Edit2->Text;
 ADOQuery1->Parameters->ParamByName("Param3")->Value = Form1->Edit3->Text;
 ADOQuery1->Parameters->ParamByName("Param4")->Value = Form1->Edit4->Date;
 ADOQuery1->Parameters->ParamByName("Param5")->Value = Form1->Edit5->Date;
 ADOQuery1->Parameters->ParamByName("Param6")->Value = Form1->Edit6->Text;
 ADOQuery1->ExecSQL();
}
Дало ошибку
Миниатюры
Ввод даных в базу  
0
 Аватар для Sasha
4956 / 2420 / 531
Регистрация: 05.06.2008
Сообщений: 7,518
Записей в блоге: 3
11.06.2014, 18:39
а просто так
C++
1
2
3
4
5
6
7
8
9
10
11
ADOQuery1->SQL->Close();
 ADOQuery1->SQL->Clear(); 
 ADOQuery1->SQL->Add("INSERT INTO vips (Ник, Услуга, Сервер, Дата начала, Дата конца, Примечание)");
 ADOQuery1->SQL->Add("VALUES (:Param1, :Param2, :Param3, :Param4, :Param5, :Param6)");
 ADOQuery1->Parameters->ParamByName("Param1")->Value = Form1->Edit1->Text;
 ADOQuery1->Parameters->ParamByName("Param2")->Value = Form1->Edit2->Text;
 ADOQuery1->Parameters->ParamByName("Param3")->Value = Form1->Edit3->Text;
 ADOQuery1->Parameters->ParamByName("Param4")->Value = Form1->Edit4->Date;
 ADOQuery1->Parameters->ParamByName("Param5")->Value = Form1->Edit5->Date;
 ADOQuery1->Parameters->ParamByName("Param6")->Value = Form1->Edit6->Text;
 ADOQuery1->ExecSQL();
1
 Аватар для vladenio
0 / 0 / 1
Регистрация: 16.03.2013
Сообщений: 52
11.06.2014, 18:51  [ТС]
еще хуже
Миниатюры
Ввод даных в базу  
0
 Аватар для vladenio
0 / 0 / 1
Регистрация: 16.03.2013
Сообщений: 52
11.06.2014, 19:00  [ТС]
и куда то пропал весь код програмы(
0
 Аватар для vladenio
0 / 0 / 1
Регистрация: 16.03.2013
Сообщений: 52
11.06.2014, 19:41  [ТС]
После танцев шамана(меня) с бубном ситуация улучшилась. Если закометить клоуз то оно компелируется но кнопка не работает.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
void __fastcall TForm1::Button1Click(TObject *Sender)
{
 //ADOQuery1->SQL->Close();
 ADOQuery1->SQL->Clear();
 ADOQuery1->SQL->Add("INSERT INTO vips (Íèê, Óñëóãà, Ñåðâåð, Äàòà íà÷àëà, Äàòà êîíöà, Ïðèìå÷àíèå)");
 ADOQuery1->SQL->Add("VALUES (:Param1, :Param2, :Param3, :Param4, :Param5, :Param6)");
 ADOQuery1->Parameters->ParamByName("Param1")->Value = Form1->Edit1->Text;
 ADOQuery1->Parameters->ParamByName("Param2")->Value = Form1->Edit2->Text;
 ADOQuery1->Parameters->ParamByName("Param3")->Value = Form1->Edit3->Text;
 ADOQuery1->Parameters->ParamByName("Param4")->Value = Form1->Edit4->Text;
 ADOQuery1->Parameters->ParamByName("Param5")->Value = Form1->Edit5->Text;
 ADOQuery1->Parameters->ParamByName("Param6")->Value = Form1->Edit6->Text;
 ADOQuery1->ExecSQL();
}
А если не коментировать то дает такую ошибку
Миниатюры
Ввод даных в базу  
0
 Аватар для vladenio
0 / 0 / 1
Регистрация: 16.03.2013
Сообщений: 52
11.06.2014, 19:45  [ТС]
А вот ошибка если закоментировать
Миниатюры
Ввод даных в базу  
0
 Аватар для Sasha
4956 / 2420 / 531
Регистрация: 05.06.2008
Сообщений: 7,518
Записей в блоге: 3
11.06.2014, 23:17
Извини затупил не много
C++
1
2
3
4
5
6
7
8
9
10
11
12
 ADOQuery1->Close();
 ADOQuery1->SQL->Clear();
 ADOQuery1->SQL->Add("INSERT INTO vips (Ник, Услуга, Сервер, Дата начала, Дата конца, Примечание)");
 ADOQuery1->SQL->Add("VALUES (:Param1, :Param2, :Param3, :Param4, :Param5, :Param6)");
 ADOQuery1->Parameters->ParamByName("Param1")->Value = Form1->Edit1->Text;
 ADOQuery1->Parameters->ParamByName("Param2")->Value = Form1->Edit2->Text;
 ADOQuery1->Parameters->ParamByName("Param3")->Value = Form1->Edit3->Text;
 ADOQuery1->Parameters->ParamByName("Param4")->Value = Form1->Edit4->Text;
 ADOQuery1->Parameters->ParamByName("Param5")->Value = Form1->Edit5->Text;
 ADOQuery1->Parameters->ParamByName("Param6")->Value = Form1->Edit6->Text;
 ADOQuery1->Prepared = true;
 ADOQuery1->ExecSQL();
1
 Аватар для vladenio
0 / 0 / 1
Регистрация: 16.03.2013
Сообщений: 52
12.06.2014, 00:51  [ТС]
Спасибо. Я заметил что SQL возле клоуз лишнее, у меня сейчас другая боль. Так как этот код работает под sql, а у меня таблица MS Access Database нужно как то переделать под sql. Как подключить таблицу sql? Вот тут сгенерировал файл name.sql как его подключить? Или как сделать так чтобы этот код кнопки добавлял и в Access таблицу? Приложил скрин ошибки которую выкидает при активации кнопки и архив с двумя бд табличками: Access(чуток заполненая) и SQL.
Миниатюры
Ввод даных в базу  
Вложения
Тип файла: rar vips.rar (10.9 Кб, 6 просмотров)
0
Модератор
 Аватар для D1973
9923 / 6459 / 2457
Регистрация: 21.01.2014
Сообщений: 27,409
Записей в блоге: 3
12.06.2014, 09:25
Лучший ответ Сообщение было отмечено vladenio как решение

Решение

На форме компоненты ADOConnection, ADOQuery, DataSource, DBGrid, Button, 4 Edit, 2 DateTimePicker
ADOQuery1->Connection = ADOConnection1;
DataSource1->DataSet = ADOQuery1
DBGrid1->DataSource = DataSource1
Сама БД vips.mdb лежит рядом с ехе-шником
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
void __fastcall TForm6::FormCreate(TObject *Sender)
{
  ADOConnection1->Connected = false;
  ADOConnection1->ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source="+
                                ExtractFilePath(Application->ExeName) + "vips.mdb" +
                                ";Persist Security Info=False";
  ADOConnection1->Connected = true;
  ADOQuery1->Close();
  ADOQuery1->SQL->Clear();
  ADOQuery1->SQL->Add("Select * from vips.Planers");
  ADOQuery1->Open();
}
//---------------------------------------------------------------------------
void __fastcall TForm6::Button1Click(TObject *Sender)
{
  ADOQuery1->Close();
  ADOQuery1->SQL->Clear();
  String s = Format("INSERT INTO vips.Planers VALUES(\"%s\",\"%s\",\"%s\",\"%s\",\"%s\",\"%s\")",
                    ARRAYOFCONST((Edit1->Text,
                                  Edit2->Text,
                                  Edit3->Text,
                                  DateToStr(DateTimePicker1->Date),
                                  DateToStr(DateTimePicker2->Date),
                                  Edit4->Text)));
  ADOQuery1->SQL->Add(s);
  ADOQuery1->ExecSQL();
  s = "SELECT * FROM vips.Planers";
  ADOQuery1->Close();
  ADOQuery1->SQL->Clear();
  ADOQuery1->SQL->Add(s);
  ADOQuery1->Open();
}
//---------------------------------------------------------------------------
void __fastcall TForm6::FormClose(TObject *Sender, TCloseAction &Action)
{
  ADOConnection1->Connected = false;
}
Миниатюры
Ввод даных в базу  
1
 Аватар для Sasha
4956 / 2420 / 531
Регистрация: 05.06.2008
Сообщений: 7,518
Записей в блоге: 3
12.06.2014, 09:45
Цитата Сообщение от vladenio Посмотреть сообщение
Спасибо. Я заметил что SQL возле клоуз лишнее, у меня сейчас другая боль. Так как этот код работает под sql, а у меня таблица MS Access Database нужно как то переделать под sql. Как подключить таблицу sql? Вот тут сгенерировал файл name.sql как его подключить? Или как сделать так чтобы этот код кнопки добавлял и в Access таблицу? Приложил скрин ошибки которую выкидает при активации кнопки и архив с двумя бд табличками: Access(чуток заполненая) и SQL.
1. После Insert Into, необходимо писать имя таблицы в которую необходимо внести данные, а не имя базы.
2. Имена полей состоящие из двух и более слов необходимо брать в квадратные скобки.
3. Привыкай называть имена полей латинницей, чтобы в будущем не было конфликтов.

Вот держи
Вложения
Тип файла: rar vips.rar (529.6 Кб, 20 просмотров)
1
 Аватар для vladenio
0 / 0 / 1
Регистрация: 16.03.2013
Сообщений: 52
12.06.2014, 10:05  [ТС]
Дало вот такие вот ошибки. Может я что то не так вставляю?
Миниатюры
Ввод даных в базу  
Вложения
Тип файла: rar проект.rar (30.4 Кб, 7 просмотров)
0
 Аватар для Sasha
4956 / 2420 / 531
Регистрация: 05.06.2008
Сообщений: 7,518
Записей в блоге: 3
12.06.2014, 10:10
vladenio, обработчики событий не трогай, а бери только код и вставь в нужное место своей программы(бездумное копирование здесь не пройдёт)
1
 Аватар для vladenio
0 / 0 / 1
Регистрация: 16.03.2013
Сообщений: 52
12.06.2014, 17:18  [ТС]
Как указать адрес чтобы базу искало не в определенной папке,а в коренной директории?
0
 Аватар для Sasha
4956 / 2420 / 531
Регистрация: 05.06.2008
Сообщений: 7,518
Записей в блоге: 3
12.06.2014, 17:26
C++
1
2
3
ADOConnection1->ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source="+
                                ExtractFilePath(Application->ExeName) + "vips.mdb" +
                                ";Persist Security Info=False";
0
 Аватар для vladenio
0 / 0 / 1
Регистрация: 16.03.2013
Сообщений: 52
12.06.2014, 19:06  [ТС]
Я в строке подключения сделал вот так ..\papka\vips.mdb .

Добавлено через 1 час 7 минут
Возможно кто нибудь знает? Настраиваю сортировщик(нашел тут). Сортировка по возрастанию(от самой близкой к today и до конца таблицы), по столбику Дата конца. Он пока что в отдельной кнопке, потом допишу к предыдущему коду. Что нужно подправить? И какие настройки в ADODataset1?DataSourse3? Заранее спасибо)
C++
1
2
3
4
5
6
7
8
9
void __fastcall TForm1::Button2Click(TObject *Sender)
{
 Form1->ADODataSet1->CommandText = "Select * from " + DESC;
 Form1->ADODataSet1->Open();
 AnsiString st = "[" + DESC + "]";
 AnsiString direct = "DESC" ;
 Form1->ADODataSet1->Sort = st + " " + direct;
 Form1->DataSource3->DataSet = Form1->ADODataSet1;
}
0
 Аватар для Sasha
4956 / 2420 / 531
Регистрация: 05.06.2008
Сообщений: 7,518
Записей в блоге: 3
12.06.2014, 22:20
А чем ADOQuery не угодило?
0
 Аватар для vladenio
0 / 0 / 1
Регистрация: 16.03.2013
Сообщений: 52
13.06.2014, 16:15  [ТС]
Ну так как раньше я работал только с консолью, а с билдером я знаком всего лишь несколько дней, то не знаю всех возможностей элементов . Подскажи статейку где можно почитать, или сам опиши. Буду очень благодарен)

Добавлено через 17 часов 4 минуты
Sasha, а с ADOQuery это так?
C++
1
2
3
ADOQuery2->SQL->Text="SELECT [Дата конца] FROM Planers WHERE ????=(SELECT ????? FROM ??? WHERE ?????='"+open+"') ORDER BY "+Column->Field->FieldName;
ADOQuery2->ExecSQL();
ADOQuery2->Active=true;
0
 Аватар для Sasha
4956 / 2420 / 531
Регистрация: 05.06.2008
Сообщений: 7,518
Записей в блоге: 3
13.06.2014, 16:42
Цитата Сообщение от vladenio Посмотреть сообщение
Sasha, а с ADOQuery это так?
Не совсем
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
13.06.2014, 16:42
Помогаю со студенческими работами здесь

Заполнить базу даных
Привет ребята, нужно заполнить базу данных информацыею про товар. Хочу через стринг. Мне получаеться нужно брать динамечиский масив и...

Добавление в базу даных
Добавление в базу данных возможно через Stored Procedures(передача параметров в Stored Procedures и INSERT INTO .....). Или же...

Надо исправить БД "Автомастерская"
У меня есть наработка но кажеться что она неверно спроектирована! Она (БД) потом должна подключаться к проекту на Delphi 7.

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

Как сохранить dbgrid в в базу даных
Здравствуйте!!!! Проблема такова: 1) есть база данных создана через датабайс десктоп ну и там таблицы (в отдельной папке в папке с...


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru