Добавление данных в БД

galaxystar
Дата: 25.04.2011 18:43:20
Доброе время суток.
Пишу программу которая должна содержать данные и вычислять
Создал набор таблиц, всего их 5
Начал писать формы для заполнения таблиц справочников но форму вытянул такие компоненты:
2 - Edit1, Edit2
1 - StoredProc1
1 - DataSource1
1 - DBGrid1
1 - button1
Настроил следующим образом:
В Edit убрал значение "Текст". В StoredProc1 выбрал базу данных (выбор идет по предварительно созданному элиасу)
Databasename: alias_bd
StoredProcName: insert_otdelenie_1;1
============
в DataSource1 выбираю следующее
DataSet: StoredProc1
============
в DBGrid1 выбираю
DataSource: DataSource1
============
в button прописываю следующее
procedure TForm1.Button1Click(Sender: TObject);
begin
DataSource1.DataSet:=StoredProc1;
DBGrid1.DataSource:=DataSource1;
storedProc1.Close;
storedProc1.ParamByName('@id_otdelenie_1').Value:=Edit1.Text;
storedProc1.ParamByName('@name_otdelenie_2').Value:=Edit2.Text;
DBGrid1.Update;
storedProc1.Open;
Edit1.Clear;
Edit2.Clear;
end;

В хранимой процедуре прописываю следующее
set ANSI_NULLS ON
set QUOTED_IDENTIFIER ON
go


ALTER PROCEDURE [dbo].[insert_otdelenie_1]
	(@id_otdelenie_1 	[int],
	 @name_otdelenie_2 	[varchar](50))

AS INSERT INTO [bak].[dbo].[otdelenie] 
	 ( [id_otdelenie],
	 [name_otdelenie]) 
 
VALUES 
	( @id_otdelenie_1,
	 @name_otdelenie_2)
после компиляции и запуска программы при добавлении данных в таблицу ругается что "...raised exception class ENoResultSet with message "Error creating cursor handle...
при попытки выставить у компонента StoredProc1 Active:true ошибка повторятся
автор
Error creating cursor handle...


В чем может быть проблема? Заранее благодарю!
Evgen2010
Дата: 25.04.2011 20:25:07
Думаю, что дело в
storedProc1.Open;
Т.к. это процедура, то у нее должно быть что-то вроде Execute.
Evgen2010
Дата: 25.04.2011 20:27:11
Open применяется в случаях, когда нужно вернуть на клиента какой-то набор данных и показать его, допустим, в гриде.
galaxystar
Дата: 28.04.2011 15:50:39
Данные добавляются, когда не указываешь storedProc1.Open;
Порекомендуйте что лучше использовать в Delphi для вызова хранимых процедур?
SQLFalkon
Дата: 28.04.2011 15:57:26
Используйте метод Execute а не Open, так как хранимая процедура не возвращает данные.
Ega
Дата: 28.04.2011 16:36:48
galaxystar
Данные добавляются, когда не указываешь storedProc1.Open;
Порекомендуйте что лучше использовать в Delphi для вызова хранимых процедур?


Они и будут добавляться. Исключение вызывается после, когда компонент ожидает возврата набора данных (select), а его нет.