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

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

20.03.2018, 22:45. Показов 1802. Ответов 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
5985 / 4560 / 1095
Регистрация: 29.08.2013
Сообщений: 28,198
Записей в блоге: 3
20.03.2018, 23:42
Цитата Сообщение от 6elka1703 Посмотреть сообщение
Но запись в базу добавилась, тогда из за чего ошибка?
потому что вместо
Цитата Сообщение от 6elka1703 Посмотреть сообщение
ADOQuery3.Active:=true;
надо делать
Delphi
1
AdoQuery.ExecSQL;
Только для запросов которые начинаются на Select надо делать Active или Open, для остальных Exec\Execute\ExecSQL

PS это есть в любом учебнике
1
 Аватар для 6elka1703
91 / 85 / 27
Регистрация: 29.10.2016
Сообщений: 928
21.03.2018, 08:23  [ТС]
еше одна проблемка тоже добавляю записи в бд через процедуру но выскакивает ошибка делфи ругается на параметр дата
Delphi
1
2
3
4
5
6
7
ADoQuery3.SQL.clear;
ADoQuery3.SQL.Text:='exec insert_buy @id_customer=:id, @data=:dt, @id_session=:id_s,  @number_buy_ticket=:number';
ADOQuery3.Parameters.ParamByName('id').Value:='select id_customer from Customers where name=@name';
ADOQuery3.Parameters.ParamByName('dt').Value:=Date;
ADOQuery3.Parameters.ParamByName('id_s').Value:=sDBGrid1.DataSource.DataSet.Fields[3].asString;
ADOQuery3.Parameters.ParamByName('number').Value:=sEdit4.Text;
ADOQuery3.ExecSQL;
ругается на эту строку
Delphi
1
ADOQuery3.Parameters.ParamByName('dt').Value:=Date;
Ошибка : приложение использует для текущей операции значение неверного типа.
Хотя в хранимой процедуре и таблице стоит тип Date
0
5985 / 4560 / 1095
Регистрация: 29.08.2013
Сообщений: 28,198
Записей в блоге: 3
21.03.2018, 10:26
дата в субд и в делфи может отличаться
0
 Аватар для 6elka1703
91 / 85 / 27
Регистрация: 29.10.2016
Сообщений: 928
21.03.2018, 10:34  [ТС]
qwertehok, так что делать? Переводить в varchar? или можно как то по другому сделать?
0
5985 / 4560 / 1095
Регистрация: 29.08.2013
Сообщений: 28,198
Записей в блоге: 3
21.03.2018, 10:55
вместо субд аксесс?
тогда можно попробовать так
Delphi
1
ADOQuery3.Parameters.ParamByName('dt').Value:='#'+DateToStr(Date)+'#';
#03.04.1998# - это формат даты в аксессе - нужно передать такое же
0
 Аватар для 6elka1703
91 / 85 / 27
Регистрация: 29.10.2016
Сообщений: 928
21.03.2018, 11:03  [ТС]
СУБД sql server
0
5985 / 4560 / 1095
Регистрация: 29.08.2013
Сообщений: 28,198
Записей в блоге: 3
21.03.2018, 11:17
версия делфи
версия MSSQL
скрин типов данных в таблице
0
 Аватар для 6elka1703
91 / 85 / 27
Регистрация: 29.10.2016
Сообщений: 928
21.03.2018, 12:29  [ТС]
Delphi7
MS SQL Server 2008 r2
Миниатюры
Добавление записей в БД  
0
 Аватар для 6elka1703
91 / 85 / 27
Регистрация: 29.10.2016
Сообщений: 928
21.03.2018, 14:52  [ТС]
с датой скорее всего проблему решил,пока проверить не могу, т.к. выдает ошибку на эту строку
Delphi
1
ADOQuery3.Parameters.ParamByName('id_s').Value:=sDBGrid2.DataSource.DataSet.Fields[3].AsInteger;
поле в таблице имеет тип инт вроде делаю все правильно но ошибка такая же как и с датой
0
 Аватар для 6elka1703
91 / 85 / 27
Регистрация: 29.10.2016
Сообщений: 928
22.03.2018, 16:41  [ТС]
может кто нибудь сказать в чем ошибка?
0
554 / 484 / 191
Регистрация: 11.12.2013
Сообщений: 2,507
22.03.2018, 17:03
а текст ошибки какой?
0
 Аватар для 6elka1703
91 / 85 / 27
Регистрация: 29.10.2016
Сообщений: 928
22.03.2018, 17:22  [ТС]
Алекcей, Ошибка : приложение использует для текущей операции значение неверного типа.
0
554 / 484 / 191
Регистрация: 11.12.2013
Сообщений: 2,507
22.03.2018, 17:24
попробуйте так:
Delphi
1
ADOQuery3.Parameters.ParamByName('id_s').asInteger:=sDBGrid2.DataSource.DataSet.Fields[3].AsInteger;
0
 Аватар для 6elka1703
91 / 85 / 27
Регистрация: 29.10.2016
Сообщений: 928
22.03.2018, 17:39  [ТС]
Алекcей, после точки у меня даже такого метода нет
0
554 / 484 / 191
Регистрация: 11.12.2013
Сообщений: 2,507
22.03.2018, 17:45
а так
Delphi
1
ADOQuery3.Parameters.ParamValues['id_s']:=sDBGrid2.DataSource.DataSet.Fields[3].AsInteger;
а точно поле id_s не автоинкрементное?
0
 Аватар для 6elka1703
91 / 85 / 27
Регистрация: 29.10.2016
Сообщений: 928
22.03.2018, 18:47  [ТС]
Алекcей, ты имеешь ввиду счетчик?
0
554 / 484 / 191
Регистрация: 11.12.2013
Сообщений: 2,507
22.03.2018, 19:14
Да.
0
 Аватар для 6elka1703
91 / 85 / 27
Регистрация: 29.10.2016
Сообщений: 928
22.03.2018, 19:27  [ТС]
Алекcей, ну в таблице sesions это поле счетчик, но я заношу его в таблицу Buy там оно просто число
0
 Аватар для 6elka1703
91 / 85 / 27
Регистрация: 29.10.2016
Сообщений: 928
24.03.2018, 21:35  [ТС]
Алекcей, так вы не знаете в чем проблема?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
24.03.2018, 21:35
Помогаю со студенческими работами здесь

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

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

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

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

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


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
модель ЗдравоСохранения 8. Подготовка к разному выполнению заданий
anaschu 08.04.2026
https:/ / github. com/ shumilovas/ med2. git main ветка * содержимое блока дэлэй из старой модели теперь внутри зайца новой модели 8ATzM_2aurI
Блокировка документа от изменений, если он открыт у другого пользователя
Maks 08.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа, разработанного в конфигурации КА2. Задача: запретить редактирование документа, если он открыт у другого пользователя. / / . . .
Система безопасности+живучести для сервера-слоя интернета (сети). Двойная привязка.
Hrethgir 08.04.2026
Далее были размышления о системе безопасности. Сообщения с наклонным текстом - мои. А как нам будет можно проверить, что ссылка наша, а не подделана хулиганами, которая выбросит на другую ветку и. . .
Модель ЗдрввоСохранения 7: больше работников, больше ресурсов.
anaschu 08.04.2026
работников и заданий может быть сколько угодно, но настроено всё так, что используется пока что только 20% kYBz3eJf3jQ
Дальние перспективы сервера - слоя сети с космологическим дизайном интефейса карты и логики.
Hrethgir 07.04.2026
Дальнейшее ближайшее планирование вывело к размышлениям над дальними перспективами. И вот тут может быть даже будут нужны оценки специалистов, так как в дальних перспективах всё может очень сильно. . .
Горе от ума
kumehtar 07.04.2026
Эта мне ментальная установка, что вот прямо сейчас, мол, мне для полного счастья не хватает (нужное вписать), и когда я этого достигну - тогда и полный кайф. Одна из самых сильных ловушек на пути. . . .
Использование значений реквизитов справочника в документе, с определенными условиями и правами
Maks 07.04.2026
1. Контроль срока действия договора Алгоритм из решения ниже реализован на примере нетипового документа "ЗаявкаНаРаботу", разработанного в конфигурации КА2. Задача: уведомлять пользователя, если. . .
Доступность команды формы по условию
Maks 07.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: сделать доступной кнопку (команда формы "ЗавершитьСписание") при. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru