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

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

20.03.2018, 22:45. Показов 2106. Ответов 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
6003 / 4578 / 1096
Регистрация: 29.08.2013
Сообщений: 28,276
Записей в блоге: 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
6003 / 4578 / 1096
Регистрация: 29.08.2013
Сообщений: 28,276
Записей в блоге: 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
6003 / 4578 / 1096
Регистрация: 29.08.2013
Сообщений: 28,276
Записей в блоге: 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
6003 / 4578 / 1096
Регистрация: 29.08.2013
Сообщений: 28,276
Записей в блоге: 3
27.03.2018, 18:47
если у вас в Edit5 - дата в правильном формате, то прокатит
0
 Аватар для 6elka1703
91 / 85 / 27
Регистрация: 29.10.2016
Сообщений: 928
27.03.2018, 18:50  [ТС]
qwertehok, так поле в бд текстовое так что должно быть все равно
0
6003 / 4578 / 1096
Регистрация: 29.08.2013
Сообщений: 28,276
Записей в блоге: 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
6003 / 4578 / 1096
Регистрация: 29.08.2013
Сообщений: 28,276
Записей в блоге: 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
6003 / 4578 / 1096
Регистрация: 29.08.2013
Сообщений: 28,276
Записей в блоге: 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
6003 / 4578 / 1096
Регистрация: 29.08.2013
Сообщений: 28,276
Записей в блоге: 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
Ответ Создать тему
Новые блоги и статьи
Беседа с ИИ о программистах, недопускающих к созданию и правке кода генеративные ИИ и причины этого
zorxor 21.09.2026
Раньше я радовался или получал некоторые эмоции, пусть небольшие, но всё же, от самого процесса написания кода, рекомпиляции и запуска, видя постепенное развитие программы и прочее. А теперь лень. . .
Мобильное приложение ColorStep
pavlinmavlin 17.09.2026
Реализовал приложение Красный, Зеленый, Синий в Unity3d + c#. Название изменил на ColorStep. Приложение прошло модерацию и теперь доступно для скачивания. Делал его сам, шаг за шагом — и вот,. . .
Запрет дублирования строк в табличной части
Maks 13.09.2026
Реализация из решения ниже выполнена на нетиповом справочнике "Нормы ТО" с табличной часть "Виды ТО", разработанного в КА2, со следующими реквизитами: - ВидТО (СправочникСсылка. ВидыТО); - ВидГСМ. . .
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр.
Jin X 06.09.2026
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр. Работая с форумом и нейросетями в браузере часто хочется что-то подкорректировать или добавить какого-то функционала. Ниже прикреплён. . .
Программа опроса у.з. расходомера SLS-720F
Argus19 02.09.2026
Программа опроса у. з. расходомера SLS-720F Программа опрашивает один раз в минуту три ультразвуковых расходомера SLS-720F через интерфейс RS-485 по протоколу Modbus RTU. Опрашиваются регистры. . .
Hyper-V: Компьютер должен поддерживать доверенный платформенный модуль 2.0.
Maks 31.08.2026
При установке Windows 11 на виртуальную машину Hyper-V 2-го поколения вылезла такая ошибка: Решение: в параметрах виртуальной машины, в разделе "Безопасность" (Security) активировать флаг. . .
Архитектура биовида Стива в Майнкрафте: Зачем бонобо кубический каннибализм
anaschu 30.08.2026
Кубический Вагинокапитализм в Minecraft: Математический инвариант ОДУ и рок Стивов-бонобо Главная задача разработанной «Модели Всего» — наглядно продемонстрировать наличие системной «судьбы». . .
Оттачиваю умение писать js программы.
russiannick 30.08.2026
Проектом выходного дня стало написание Книги шифров Виженера. Итогом стала версия 200, синий туман. Синий туман назван так, потому что замораживает текст под собой. Нажатие синих кнопок управляют. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru