Поиск:

Ответ в темуСоздание новой темы Создание опроса
> как передать параметры в процедуру Insert 
:(
    Опции темы
Morgana
  Дата 12.8.2009, 00:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 3
Регистрация: 11.8.2009

Репутация: нет
Всего: нет



Здравствуйте, вы не подскажете, как передать параметры в процедуру.
База данных, состоящая из одной таблицы, написана в SQL 2005, там же создана процедура:
Код

 CREATE PROC InsertPasport
 @s_n INT
,@surname VARCHAR(30)
,@name1 VARCHAR(30)
,@name2 VARCHAR(30)
,@birthday DATETIME
,@who_v VARCHAR(500)
,@when_v DATETIME 
,@registration VARCHAR(500)
,@adres VARCHAR(500)
,@family VARCHAR(20)
AS
Begin
INSERT INTO Pasport 
(S_N, SURNAME, NAME1, NAME2, BIRTHDAY, WHO_V, 
WHEN_V, REGISTRATION, ADRES, FAMILY)
VALUES (@s_n, @surname, @name1, @name2, @birthday, @who_v, 
        @when_v, @registration, @adres, @family)
end
GO


Интерфейс к базе создаётся на Delphi. Проблема в том что при обращении к процедуре “InsertPasport” :

Код

procedure TForm2.FormCreate(Sender: TObject);
begin
ADOQuery1.close;
ADOQuery1.SQL.Clear;
ADOQuery1.SQL.Add('EXEC InsertPasport');
ADOQuery1.Open;
ADOQuery1.Active:=true;
end; 


Появляется ощибка: Exception class EOleException with message 'Procedure or Function 'InsertPasport' expects parameter '@s_n', which was not supplied', 


Это сообщение отредактировал(а) Rrader - 12.8.2009, 08:30
PM MAIL   Вверх
Romikgy
Дата 12.8.2009, 09:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Любитель-программер
****


Профиль
Группа: Участник Клуба
Сообщений: 7326
Регистрация: 11.5.2005
Где: Porto Franco Odes sa

Репутация: 4
Всего: 146



1. попробывать выполнить 
Цитата(Morgana @  11.8.2009,  23:54 Найти цитируемый пост)
('EXEC InsertPasport');

это без дельфи ....
2. видать параметров не хватает процедуре этих
Цитата(Morgana @  11.8.2009,  23:54 Найти цитируемый пост)
 @s_n INT
,@surname VARCHAR(30)
,@name1 VARCHAR(30)
,@name2 VARCHAR(30)
,@birthday DATETIME
,@who_v VARCHAR(500)
,@when_v DATETIME 
,@registration VARCHAR(500)
,@adres VARCHAR(500)
,@family VARCHAR(20)

....


--------------------
Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. 
smile

PM   Вверх
former
Дата 12.8.2009, 10:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


MEMS Expert
***


Профиль
Группа: Завсегдатай
Сообщений: 1166
Регистрация: 1.3.2006
Где: Россия

Репутация: 7
Всего: 17



Цитата(Morgana @  12.8.2009,  00:54 Найти цитируемый пост)
Появляется ощибка: Exception class EOleException with message 'Procedure or Function 'InsertPasport' expects parameter '@s_n', which was not supplied', 

А всем параметрам перед выполнением присваивается значение? Если поле S_N автоинкрементное (т.е. NotNull), то значение для него должно либо генерироваться в триггере, либо задаваться иным способом.

Цитата(Romikgy @  12.8.2009,  09:55 Найти цитируемый пост)
1. попробывать выполнить 

Romikgy, только надо параметры указать. Или это ты предложил, что бы идентичность исключений проверить? smile 


--------------------
Достаточно снизить уровень мышления, чтобы иные почувствовали почву под ногами.
PM MAIL   Вверх
Morgana
Дата 12.8.2009, 12:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 3
Регистрация: 11.8.2009

Репутация: нет
Всего: нет



Спасибо, исправила ошибку в процедуре! 
Возникла новая проблема при обращенни кней из Delphi:
 
Код

ADOQuery1.close;
ADOQuery1.SQL.Clear;
ADOQuery1.SQL.add('EXEC InsertPasport :s_n, :surname, :name1, :name2, :birthday, :who_v, :when_v, :registration, :adres, :family');
ADOQuery1.Parameters[1].Value:=11;
ADOQuery1.Parameters.ParamByName('surname').Value:= DBEdit1.Text;
ADOQuery1.Parameters.ParamByName('name1').Value:= DBEdit2.Text;
ADOQuery1.Parameters.ParamByName('name2').Value:= DBEdit3.Text;
ADOQuery1.Parameters.ParamByName('birthday').Value:= DBEdit4.Text;
ADOQuery1.Parameters.ParamByName('who_v').Value:= DBMemo1.Text;
ADOQuery1.Parameters.ParamByName('when_v').Value:= DBEdit6.Text;
ADOQuery1.Parameters.ParamByName('registration').Value:= DBMemo2.Text;
ADOQuery1.Parameters.ParamByName('adres').Value:= DBMemo3.Text;
ADOQuery1.Parameters.ParamByName('family').Value:= DBEdit7.Text;
ADOQuery1.ExecSQL;
ADOQuery1.Active:=true;


 появляется такое сообщение:
Exception class EDatabaseError with message 'ADOQuery1: CommandText does not return a result set'.


Это сообщение отредактировал(а) Morgana - 12.8.2009, 12:36
PM MAIL   Вверх
Romikgy
Дата 12.8.2009, 14:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Любитель-программер
****


Профиль
Группа: Участник Клуба
Сообщений: 7326
Регистрация: 11.5.2005
Где: Porto Franco Odes sa

Репутация: 4
Всего: 146



Цитата(Morgana @  12.8.2009,  11:17 Найти цитируемый пост)
ADOQuery1.Active:=true;

лишнее имхо


--------------------
Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. 
smile

PM   Вверх
Morgana
Дата 12.8.2009, 14:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 3
Регистрация: 11.8.2009

Репутация: нет
Всего: нет



Исправила, но результат тот же.
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Базы данных и репортинг"
Vit
Петрович

Запрещено:

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами


Обязательно указание:

1. Базы данных (Paradox, Oracle и т.п.)

2. Способа доступа (ADO, BDE и т.д.)


  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи
  • Вопросы по SQL и вопросы по базам данных не связанные с Дельфи задавать здесь

FAQ раздела лежит здесь!


Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Vit, Петрович.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Базы данных и репортинг | Следующая тема »


 




[ Время генерации скрипта: 0.1154 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.