Форум программистов, компьютерный форум, киберфорум
Delphi: Базы данных
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.63/8: Рейтинг темы: голосов - 8, средняя оценка - 4.63
 Аватар для 6elka1703
91 / 85 / 27
Регистрация: 29.10.2016
Сообщений: 928

Добавление записей в БД

20.03.2018, 22:45. Показов 1890. Ответов 47
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Добавляю записи в таблицу через хранимую процедуру
SQL
1
2
3
4
5
ALTER PROC [dbo].[Insert_customers]
@name VARCHAR(40), @adres VARCHAR(40), @DATA VARCHAR(50), @phone VARCHAR(40)
AS
INSERT INTO Customers( fio, adres, data_birthday, telephone)
VALUES(@name,@adres,@DATA,@phone)
вот код delphi
Delphi
1
2
3
4
5
6
ADoQuery3.SQL.Text:='exec insert_customers @name=:n, @adres=:a, @date=:d, @phone=:p';
ADOQuery3.Parameters.ParamByName('n').Value:=sEdit3.Text;
ADOQuery3.Parameters.ParamByName('a').Value:=sEdit2.Text;
ADOQuery3.Parameters.ParamByName('d').Value:=sEdit1.Text;
ADOQuery3.Parameters.ParamByName('p').Value:=sMaskEdit1.Text;
ADOQuery3.Active:=true;
когда нажимаю кнопку добавить выскакивает ошибка что процедура insert_customers ожидает параметр @data который не был указан. Хотя я вроде указал его. В чем ошибка?

Добавлено через 2 минуты
Ошибку понял неправильно написал параметр. Моя невнимательность меня погубит)

Добавлено через 45 минут
еще вопросик после нажатия на кнопку выскочила ошибка
project raised exception class EDatabaseError with message 'Adoquery :CommandText does not return a result set'
Но запись в базу добавилась, тогда из за чего ошибка?
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
20.03.2018, 22:45
Ответы с готовыми решениями:

База данных на основе массива записей: добавление, удаление, поиск записей
Комрады, учусь асму, а некоторые моменты не осиливаю :( задача в реализовании некой базы данных с записями "фамилия",...

Добавление записей невозможно: ключ связи таблицы не входит в набор записей
Люди помогите пожалуйста. Есть база данных с 4 таблицами. Есть форма, на ней располагается подчиненная форма с полями и полем со...

Добавление записей невозможно: ключ связи таблицы не входит в набор записей
Здравствуйте! Возникла проблема при заполнении формы основанной на запросе. Как можно исправить? Читал уже другие темы с...

47
554 / 484 / 191
Регистрация: 11.12.2013
Сообщений: 2,507
24.03.2018, 21:39
Студворк — интернет-сервис помощи студентам
так не могу сказать, надо смотреть в режиме отладки, но у меня не установлен MSSQL и нет желания его устанавливать(даже Express)
0
 Аватар для 6elka1703
91 / 85 / 27
Регистрация: 29.10.2016
Сообщений: 928
27.03.2018, 15:43  [ТС]
Может кто посмотреть проект что не так с покупкой билетов(добавление записей в бд). БД MS SQL Server
Вложения
Тип файла: rar Курсач БД.rar (2.54 Мб, 1 просмотров)
0
 Аватар для 6elka1703
91 / 85 / 27
Регистрация: 29.10.2016
Сообщений: 928
27.03.2018, 17:30  [ТС]
Скажите что не так в этой строке
Delphi
1
ADOQuery3.Parameters.ParamByName('newW').Value:=sEdit5.Text;
в таблице это поле varchar(50).
Бьет ошибку
Миниатюры
Добавление записей в БД  
0
5997 / 4572 / 1096
Регистрация: 29.08.2013
Сообщений: 28,237
Записей в блоге: 3
27.03.2018, 18:25
Цитата Сообщение от 6elka1703 Посмотреть сообщение
Скажите что не так в этой строке
полностью с запросом выкладывай
0
 Аватар для 6elka1703
91 / 85 / 27
Регистрация: 29.10.2016
Сообщений: 928
27.03.2018, 18:31  [ТС]
qwertehok,
Delphi
1
2
3
4
5
6
7
8
9
ADOQuery3.SQL.Clear;
ADOQuery3.SQL.Add('INSERT INTO buy(id_customer,data_buy, id_session,cost_all_tickets, number_buy_tickets)');
ADOQuery3.SQL.Add('values(:newF,:newW,:newL,:newm,:newk)');
ADOQuery3.Parameters.ParamByName('newF').Value:='select id_customer from Customers where name=@name';
ADOQuery3.Parameters.ParamByName('newW').Value:=sEdit5.Text;
ADOQuery3.Parameters.ParamByName('newL').Value:=StrToInt(sEdit6.Text);
ADOQuery3.Parameters.ParamByName('newm').Value:=sEdit7.Text;
ADOQuery3.Parameters.ParamByName('newk').Value:=StrToInt(sEdit4.Text);
ADOQuery3.ExecSQL;
0
5997 / 4572 / 1096
Регистрация: 29.08.2013
Сообщений: 28,237
Записей в блоге: 3
27.03.2018, 18:34
Оригинально

вторая колонка у тебя даже называется очень интересно - data_buy
а ты пихаешь туда sEdit5.Text

ЗЫ
а это как так?
Цитата Сообщение от 6elka1703 Посмотреть сообщение
Value:='select id_customer from Customers where name=@name';
@name это переменная в MSSQL, как ты ее тут используешь?
0
 Аватар для 6elka1703
91 / 85 / 27
Регистрация: 29.10.2016
Сообщений: 928
27.03.2018, 18:37  [ТС]
qwertehok, data_buy сделал текстовым, а вот с @name я не знаю как сделать думал так прокатит.
0
5997 / 4572 / 1096
Регистрация: 29.08.2013
Сообщений: 28,237
Записей в блоге: 3
27.03.2018, 18:38
Цитата Сообщение от 6elka1703 Посмотреть сообщение
а вот с @name я не знаю как сделать думал так прокатит.
не прокатит
0
 Аватар для 6elka1703
91 / 85 / 27
Регистрация: 29.10.2016
Сообщений: 928
27.03.2018, 18:45  [ТС]
qwertehok, так а что с data_buy не так?
0
5997 / 4572 / 1096
Регистрация: 29.08.2013
Сообщений: 28,237
Записей в блоге: 3
27.03.2018, 18:47
если у вас в Edit5 - дата в правильном формате, то прокатит
0
 Аватар для 6elka1703
91 / 85 / 27
Регистрация: 29.10.2016
Сообщений: 928
27.03.2018, 18:50  [ТС]
qwertehok, так поле в бд текстовое так что должно быть все равно
0
5997 / 4572 / 1096
Регистрация: 29.08.2013
Сообщений: 28,237
Записей в блоге: 3
27.03.2018, 18:54
тогда еще раз приведи
1. сам запрос
2. скрин ошибки с выделенной строкой в делфи
3. скрин с типами данных в таблице
0
 Аватар для 6elka1703
91 / 85 / 27
Регистрация: 29.10.2016
Сообщений: 928
27.03.2018, 19:02  [ТС]
qwertehok,
Delphi
1
2
3
4
5
6
7
8
9
ADOQuery3.SQL.Clear;
ADOQuery3.SQL.Add('INSERT INTO buy(id_customer,data_buy, id_session,cost_all_tickets, number_buy_tickets)');
ADOQuery3.SQL.Add('values(:newF,:newW,:newL,:newm,:newk)');
ADOQuery3.Parameters.ParamByName('newF').Value:='select id_customer from Customers where name=@name';
ADOQuery3.Parameters.ParamByName('newW').Value:=sEdit5.Text;
ADOQuery3.Parameters.ParamByName('newL').Value:=StrToInt(sEdit6.Text);
ADOQuery3.Parameters.ParamByName('newm').Value:=sEdit7.Text;
ADOQuery3.Parameters.ParamByName('newk').Value:=StrToInt(sEdit4.Text);
ADOQuery3.ExecSQL;
строка с ошибкой
Delphi
1
ADOQuery3.Parameters.ParamByName('newW').Value:=sEdit5.Text;
сама ошибка
Миниатюры
Добавление записей в БД   Добавление записей в БД  
0
5997 / 4572 / 1096
Регистрация: 29.08.2013
Сообщений: 28,237
Записей в блоге: 3
27.03.2018, 19:04
в четвертой строке напиши
Delphi
1
ADOQuery3.Parameters.ParamByName('newF').Value:=random(100)
и попробуй выполнить
1
 Аватар для 6elka1703
91 / 85 / 27
Регистрация: 29.10.2016
Сообщений: 928
27.03.2018, 19:09  [ТС]
qwertehok, вот ошибка скорее всего из-за того что там нет такого айдишника. Попробую просто свое число вставить
Миниатюры
Добавление записей в БД  
0
 Аватар для 6elka1703
91 / 85 / 27
Регистрация: 29.10.2016
Сообщений: 928
27.03.2018, 19:12  [ТС]
qwertehok, нормально сработало. Это было из за того что запрос не правильный был с первым параметром?
0
5997 / 4572 / 1096
Регистрация: 29.08.2013
Сообщений: 28,237
Записей в блоге: 3
27.03.2018, 19:16
Цитата Сообщение от 6elka1703 Посмотреть сообщение
Это было из за того что запрос не правильный был с первым параметром?
из-за того что тут
Delphi
1
ADOQuery3.Parameters.ParamByName('newF').Value:='select id_customer from Customers where name=@name';
ты присваиваешь в VALUE текст
1
 Аватар для 6elka1703
91 / 85 / 27
Регистрация: 29.10.2016
Сообщений: 928
28.03.2018, 17:10  [ТС]
qwertehok, ясно,спасибо за помощь

Добавлено через 21 час 53 минуты
qwertehok, подскажите как правильно написать запрос с параметром.
Я пишу так
Вот весь запрос на добавление
Delphi
1
2
3
4
5
6
7
8
9
ADOQuery3.SQL.Clear;
ADOQuery3.SQL.Add('INSERT INTO buy(id_customer,data_buy, id_session,cost_all_tickets, number_buy_tickets)');
ADOQuery3.SQL.Add('values(:newF,:newW,:newL,:newm,:newk)');
ADOQuery3.Parameters.ParamByName('newF').Value:='select id_customer from Customers where name='''+'%'+'''+'''+sedit3.text+'''+'''+'%'+'''';
ADOQuery3.Parameters.ParamByName('newW').Value:=DateToStr(Date);
ADOQuery3.Parameters.ParamByName('newL').Value:=sDBGrid2.DataSource.DataSet.Fields[3].asString;
ADOQuery3.Parameters.ParamByName('newm').Value:=StrToInt(sEdit4.Text);
ADOQuery3.Parameters.ParamByName('newk').Value:=StrToInt(sEdit4.Text);
ADOQuery3.ExecSQL;
проблема в этой строке. Как правильно написать этот запрос
Delphi
1
ADOQuery3.Parameters.ParamByName('newF').Value:='select id_customer from Customers where name='''+'%'+'''+'''+sedit3.text+'''+'''+'%'+'''';
0
5997 / 4572 / 1096
Регистрация: 29.08.2013
Сообщений: 28,237
Записей в блоге: 3
28.03.2018, 17:18
Цитата Сообщение от 6elka1703 Посмотреть сообщение
Как правильно написать этот запрос
1. когда пишешь NAME= не надо указывать %, они не для этого
2. запрос это просто текст, что бы получить результат - запрос надо выполнить
0
 Аватар для 6elka1703
91 / 85 / 27
Регистрация: 29.10.2016
Сообщений: 928
28.03.2018, 17:46  [ТС]
qwertehok, сделал так но выскакивает ошибка
[DELPHI]
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
ADOQuery3.SQL.Clear;
id:=ADOQuery3.SQL.Add('select id_customer from Customers where name=''''''+'''+sedit3.text+'''+''''''');
ADOQuery3.ExecSQL;
 
ADOQuery3.SQL.Clear;
ADOQuery3.SQL.Add('INSERT INTO buy(id_customer,data_buy, id_session,cost_all_tickets, number_buy_tickets)');
ADOQuery3.SQL.Add('values(:newF,:newW,:newL,:newm,:newk)');
ADOQuery3.Parameters.ParamByName('newF').Value:=id;
ADOQuery3.Parameters.ParamByName('newW').Value:=DateToStr(Date);
ADOQuery3.Parameters.ParamByName('newL').Value:=sDBGrid2.DataSource.DataSet.Fields[3].asString;
ADOQuery3.Parameters.ParamByName('newm').Value:=StrToInt(sEdit4.Text);
ADOQuery3.Parameters.ParamByName('newk').Value:=StrToInt(sEdit4.Text);
ADOQuery3.ExecSQL;
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
28.03.2018, 17:46
Помогаю со студенческими работами здесь

Добавление новых записей невозможно, ключ связи таблицы не входит в набор записей
Не могу добавить данные в поля, выводит такое сообщение: Добавление новых записей невозможно,ключ связи таблицы ЧЕК не входит не входит в...

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

Удаление всех записей из DataGridView и добавление записей
Всем доброго времени суток. Столкнулся со следующей проблемой: написал код на удаление строк DataGridView. Строки удаляет но не все, а...

простая база с одним полем (оно же ключ), но много записей. как максимально быстро организовать проверку и добавление пакета новых записей?
есть простейшая БД (с одним полем), состоящая из уникальных строковых ключей, типа: SDPT234ddfs4545FFqsdfs TXB2ZQ5d ...

Добавление записей
Здравствуйте, пытаюсь добавить строчку, но постоянно выдает ошибку Required field(s) is missing" в файле db_config находится...


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

Или воспользуйтесь поиском по форуму:
40
Ответ Создать тему
Новые блоги и статьи
20. Мат мед. Абсентеизм как отдельный тип простоя
anaschu 29.05.2026
Апдейт модели: исправленные баги, абсентеизм и новые механизмы Продолжаю развивать ранее описанную модель рабочего коллектива на AnyLogic. За последние несколько дней был проведён серьёзный. . .
19. здоровье, усталость и психотип работника влияют на производительность предприятия, и наоборот, производительность на здоровье, усталось и психотип
anaschu 28.05.2026
Дискретно-событийная модель рабочего коллектива на AnyLogic: здоровье, выгорание, психотипы и микростимуляция Привет, коллеги. Хочу поделиться итогами нескольких недель работы над симуляционной. . .
"Прокси" для последовательного порта
Eddy_Em 28.05.2026
Эту штуку написал я достаточно давно. Но сейчас вот понадобилось настроить датчик грозы, но при этом не отключать его от "метеодемона". Соответственно, надо запустить этот "прокси": метеодемон будет. . .
Рефакторинг программы уравнивания.
Massaraksh7 26.05.2026
Пример по предыдущей записи в блоге. Но, надо заметить, что, во-первых, там оптимизация не только математики, но и работы с базой данных, и с графами, а во-вторых, это ещё не всё.
Использование TThread в Lazarus для математических вычислений.
Massaraksh7 25.05.2026
Производя рефакторинг своих программ на предмет ускорения их работы, обратил внимание на такой аспект, как сокращение времени матвычислений. Дело в том, что приходится работать с большими матрицами. . .
Модель здравосохранения 18. Чем здоровее работник, тем быстрее выгорает
anaschu 24.05.2026
Имитационная модель корпоративного здравоохранения: что показывает математика Сегодня в модели рабочего коллектива на AnyLogic появились три новые механики — выгорание через накопленную усталость,. . .
Модель здравосохранения 17. Планы на выгорание
anaschu 23.05.2026
Вот конкретная схема реализации: В классе Работник добавить: накопленнаяУсталость — растёт каждый час работы, снижается в перерывы и болезни коэффициентПрезентеизма — снижает продуктивность. . .
Изменение цветов в палитре gif файла aka фавикона
russiannick 23.05.2026
Изменение цветов в палитре gif файла, юзаемого как фавиконка в составе html-файла, помещенная в base64, средствами нативного Java Script, навеянное сном в майский день. Для работы необходим браузер,. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru