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

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

11.06.2014, 17:06. Показов 2336. Ответов 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
9917 / 6454 / 2455
Регистрация: 21.01.2014
Сообщений: 27,395
Записей в блоге: 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
Ответ Создать тему
Новые блоги и статьи
Символьное дифференцирование
igorrr37 13.02.2026
/ * Логарифм записывается как: (x-2)log(x^2+2) - означает логарифм (x^2+2) по основанию (x-2). Унарный минус обозначается как ! */ #include <iostream> #include <stack> #include <cctype>. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru