Форум программистов, компьютерный форум, киберфорум
C++ Builder: Базы данных
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/6: Рейтинг темы: голосов - 6, средняя оценка - 5.00
Программист по неволе
24 / 24 / 8
Регистрация: 22.04.2015
Сообщений: 476
Записей в блоге: 1
1
MS Access

Как правильно записать в поле типа Число переменную с тип данных integer?

21.03.2018, 17:53. Показов 1229. Ответов 12

Author24 — интернет-сервис помощи студентам
Доброго времени суток!
Помогите, пожалуйста.
Есть 2 поля в таблице: первое -Текст, второе -Число.
Пытаюсь их заполнить через Insert Into
Но постоянно выдает ошибку при попытке записи, что имеется синтаксическая ошибка в запросе Insert Into.
В чем может быть проблема? Чувствую, что с числовой переменной засада.

C++
1
2
3
4
5
6
String str=AddrEdt->Text;
int i=100;
Form1->ADOQuery2->Close();
Form1->ADOQuery2->SQL->Clear();
Form1->ADOQuery2->SQL->Add("INSERT INTO [Meas] (Addr, Counter) values ('"+str+"', i)");
Form1->ADOQuery2->ExecSQL();
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
21.03.2018, 17:53
Ответы с готовыми решениями:

Как записать результат выполнения функции COUNT(*) в переменную типа integer?
Подскажите пожалуйста. Хочу узнать, сколько записей в поле names содержат 'Petr' Выполняю вот...

Сформировать в переменной B типа Integer переменную А, прочитанную как число
Сформировать случайным образом переменную A типа String, состоящую из 8 цифр. Сформировать в...

Как правильно записать часть HTTP-кода в переменную типа String
Как правильно записать часть http кода в переменную типа стринг ? string str1 = "<h2...

В переменную типа integer прочитать число длиною в 4 байта
Добрый день. Кто чем может, помогите разобраться. Решил разобраться с изображениями (пока формат...

12
4956 / 2420 / 531
Регистрация: 05.06.2008
Сообщений: 7,518
Записей в блоге: 3
21.03.2018, 18:01 2
Используй параметризированный запрос.
1
139 / 67 / 46
Регистрация: 15.10.2015
Сообщений: 308
21.03.2018, 18:19 3
C++
1
2
3
4
5
6
7
String str=AddrEdt->Text;
int i=100;
Form1->ADOQuery2->Close();
Form1->ADOQuery2->SQL->Clear();
Form1->ADOQuery2->SQL->Add("INSERT INTO [Meas] (Addr, Counter) values ('" + str + "', :NAME)");
Form1->ADOQuery2->Parameters->ParamByName("NAME")->Value = i;
Form1->ADOQuery2->ExecSQL();
1
Программист по неволе
24 / 24 / 8
Регистрация: 22.04.2015
Сообщений: 476
Записей в блоге: 1
21.03.2018, 23:18  [ТС] 4
Цитата Сообщение от Reavolt Посмотреть сообщение
Form1->ADOQuery2->SQL->Add("INSERT INTO [Meas] (Addr, Counter) values ('" + str + "', :NAME)");
Form1->ADOQuery2->Parameters->ParamByName("NAME")->Value = i;
Не сработало. Выдает ту же ошибку.
Попробовал разделить запись на 2 запроса: 1) строку записать
2)через UPDATE внести число
C++
1
2
3
4
5
Form1->ADOQuery2->Close();
Form1->ADOQuery2->SQL->Clear();
Form1->ADOQuery2->SQL->Add("UPDATE [Measurments] SET Counter= ':NAME' WHERE Addr='"+str+"'");
Form1->ADOQuery2->Parameters->ParamByName("NAME")->Value = i;
Form1->ADOQuery2->ExecSQL();
Но теперь говорит, что параметр NAME не найден.
0
479 / 392 / 112
Регистрация: 24.04.2012
Сообщений: 1,632
Записей в блоге: 3
22.03.2018, 03:41 5
C++
1
2
3
Form1->ADOQuery2->SQL->Add("UPDATE [Measurments] SET Counter = :NAME WHERE Addr = :Addr");
Form1->ADOQuery2->Parameters->ParamByName("NAME")->Value = i;
Form1->ADOQuery2->Parameters->ParamByName("Addr")->Value = str;
1
Программист по неволе
24 / 24 / 8
Регистрация: 22.04.2015
Сообщений: 476
Записей в блоге: 1
22.03.2018, 08:50  [ТС] 6
Цитата Сообщение от Bit_Man Посмотреть сообщение
Form1->ADOQuery2->SQL->Add("UPDATE [Measurments] SET Counter = :NAME WHERE Addr = :Addr");
Form1->ADOQuery2->Parameters->ParamByName("NAME")->Value = i;
Form1->ADOQuery2->Parameters->ParamByName("Addr")->Value = str;
Говорит, что ошибка синтаксиса в инструкции UPDATE.
0
4956 / 2420 / 531
Регистрация: 05.06.2008
Сообщений: 7,518
Записей в блоге: 3
22.03.2018, 12:39 7
Тебе надо строку обновить или добавить новую в базу?
1
Программист по неволе
24 / 24 / 8
Регистрация: 22.04.2015
Сообщений: 476
Записей в блоге: 1
22.03.2018, 12:51  [ТС] 8
Цитата Сообщение от Sasha Посмотреть сообщение
Тебе надо строку обновить или добавить новую в базу?
Мне надо бы в базу добавить строку. В таблице 1 поле - Текст, второе - число.
Вот текст записывать в базу у меня хорошо получается.
А число записать не выходит.
Пробовал двумя путями:
1) записывать и то и то сразу
2) а второй как раз основывается на UPDATE хотел сначала текстовое поле заполнить, а уже затем обновить эту строку, дополнив её записью в поле Сounter, что является типом Число.
0
4956 / 2420 / 531
Регистрация: 05.06.2008
Сообщений: 7,518
Записей в блоге: 3
22.03.2018, 13:32 9
C++
1
2
3
4
5
6
7
8
String str=AddrEdt->Text;
int i=100;
Form1->ADOQuery2->Close();
Form1->ADOQuery2->SQL->Clear();
Form1->ADOQuery2->SQL->Add("INSERT INTO Meas (Addr, Counter) VALUES (:part1, :part2)");
Form1->ADOQuery2->Parameters->ParamByName("part1")->AsInteger = i;
Form1->ADOQuery2->Parameters->ParamByName("part2")->AsString = str;
Form1->ADOQuery2->ExecSQL();
1
Программист по неволе
24 / 24 / 8
Регистрация: 22.04.2015
Сообщений: 476
Записей в блоге: 1
22.03.2018, 16:31  [ТС] 10
Цитата Сообщение от Sasha Посмотреть сообщение
Form1->ADOQuery2->Parameters->ParamByName("part1")->AsInteger = i;
Form1->ADOQuery2->Parameters->ParamByName("part2")->AsString = str;
Говорит, что AsInteger и AsString не являются методами класса TParametrs ([C++ Error] ResultsUnit.cpp(86): E2316 'AsInteger' is not a member of 'TParameter')
0
4956 / 2420 / 531
Регистрация: 05.06.2008
Сообщений: 7,518
Записей в блоге: 3
22.03.2018, 17:22 11
Цитата Сообщение от Alex_From_777 Посмотреть сообщение
Говорит, что AsInteger и AsString не являются методами класса TParametrs ([C++ Error] ResultsUnit.cpp(86): E2316 'AsInteger' is not a member of 'TParameter')
Да, я ошибся
C++
1
2
3
4
5
6
7
8
String str=AddrEdt->Text;
int i=100;
Form1->ADOQuery2->Close();
Form1->ADOQuery2->SQL->Clear();
Form1->ADOQuery2->SQL->Add("INSERT INTO Meas (Addr, Counter) VALUES (:part1, :part2)");
Form1->ADOQuery2->Parameters->ParamByName("part1")->Value = i;
Form1->ADOQuery2->Parameters->ParamByName("part2")->Value = str;
Form1->ADOQuery2->ExecSQL();
1
Программист по неволе
24 / 24 / 8
Регистрация: 22.04.2015
Сообщений: 476
Записей в блоге: 1
22.03.2018, 19:50  [ТС] 12
Цитата Сообщение от Sasha Посмотреть сообщение
Form1->ADOQuery2->Parameters->ParamByName("part2")->Value = str;
Все равно пишет: ошибка синтаксиса INSERT INTO

Добавлено через 32 минуты
Я не знаю в чем было дело, но я удалил тот столбец Counter. Создал новый под другим именем, то же типа "Число" и все заработало.
0
1212 / 706 / 335
Регистрация: 22.02.2018
Сообщений: 2,059
Записей в блоге: 2
23.03.2018, 02:23 13
Counter - зарезервированое слово в SQL
1
23.03.2018, 02:23
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
23.03.2018, 02:23
Помогаю со студенческими работами здесь

Как записать шестнадцатеричное число в переменную типа string?
Есть ф-ция, которая переводит целочисленный переменные или просто цифры в шестнадцатеричный вид....

Как правильно число в ячейке типа string, перекинуть в ячейку в тип double ?
Cуть вопроса описанна в теме. Может не правильно объяснил, но всё же, вот пример: #include...

Как правильно объявить в модуле переменную, тип данных которой описан в основной программе?
Как обратиться из модуля к записе, которая определена в программе? Например, есть такой код...

Составить процедуру для ввода данных в массив A(n) типа integer. Данные вводятся из типизированного файла типа integer, начиная с k-ой по n-ую
Составить процедуру для ввода данных в массив A(n) типа integer. Данные вводятся из типизированного...


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

Или воспользуйтесь поиском по форуму:
13
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru