Update Error. Found 0 Records

Discussion of open issues, suggestions and bugs regarding SDAC (SQL Server Data Access Components) for Delphi, C++Builder, Lazarus (and FPC)
Post Reply
Eugene Khrustalev

Update Error. Found 0 Records

Post by Eugene Khrustalev » Wed 11 May 2005 16:32

I use component TMSQuery.

In property SQL following set of operators is used:

Code: Select all

SELECT * FROM PR_DEMANDS
In property SQLUpdate following set of operators is used:

Code: Select all

{:RETURN_VALUE = CALL pr_demands_update;1(:demand_id, :product_id, :product_litera, :product_count, :demand_mark)}
In property SQLInsert following set of operators is used:

Code: Select all

{:DEMAND_ID = CALL pr_demands_insert;1(:product_id, :product_litera, :product_count)}
The full source code for stored procedures is:

Code: Select all

CREATE procedure pr_demands_insert 
	@product_id int,
	@product_litera int,
	@product_count int
as
begin
	set nocount on

	declare @demand_number int
	declare @demand_id int
	
	begin tran
	select @demand_number = max(demand_number) from pr_demands with (TABLOCKX)
	if @demand_number is null 
		set @demand_number = 1
	else
		set @demand_number = @demand_number + 1

	insert into pr_demands(demand_number, demand_date, demand_user, product_id, product_litera, product_count) values(@demand_number, getdate(), current_user, @product_id, @product_litera, @product_count)
	
	set @demand_id = SCOPE_IDENTITY()
	exec pr_demands_update @demand_id, @product_id, @product_litera, @product_count, 0 

	commit tran

	return @demand_id
end
GO

CREATE procedure pr_demands_update
	@demand_id int,
	@product_id int,
	@product_litera int,
	@product_count int,
	@demand_mark bit
as
begin
	set nocount on

	declare @product_spec1 varchar(50)
	declare @product_spec1_date datetime
	declare @product_spec2 varchar(50) 
	declare @product_spec2_date datetime
	declare @product_spec3 varchar(50)
	declare @product_spec3_date datetime
	declare @product_version_po varchar(50)
	declare @product_version_po_date datetime
	declare @product_dopspec1 varchar(50)
	declare @product_dopspec1_date datetime
	declare @product_dopspec2 varchar(50)
	declare @product_dopspec2_date datetime
	declare @product_dopspec3 varchar(50)
	declare @product_dopspec3_date datetime

	select 	@product_spec1 = product_spec1,
		@product_spec1_date = product_spec1_date,
		@product_spec2 = product_spec2,
		@product_spec2_date = product_spec2_date,
		@product_spec3 = product_spec3,
		@product_spec3_date = product_spec3_date,
		@product_version_po = product_version_po,
		@product_version_po_date = product_version_po_date,
		@product_dopspec1 = product_dopspec1,
		@product_dopspec1_date = product_dopspec1_date,
		@product_dopspec2 = product_dopspec2,
		@product_dopspec2_date = product_dopspec2_date,
		@product_dopspec3 = product_dopspec3,
		@product_dopspec3_date = product_dopspec3_date
	from pr_products where product_id = @product_id

	update pr_demands set 
		product_id = @product_id,
		product_litera = @product_litera,
		product_count = @product_count,
		product_spec1 = @product_spec1,
		product_spec1_date = @product_spec1_date,
		product_spec2 = @product_spec2,
		product_spec2_date = @product_spec2_date,
		product_spec3 = @product_spec3,
		product_spec3_date = @product_spec3_date,
		product_version_po = @product_version_po,
		product_version_po_date = @product_version_po_date,
		product_dopspec1 = @product_dopspec1,
		product_dopspec1_date = @product_dopspec1_date,
		product_dopspec2 = @product_dopspec2,
		product_dopspec2_date = @product_dopspec2_date,
		product_dopspec3 = @product_dopspec3,
		product_dopspec3_date = @product_dopspec3_date,
		demand_user = current_user,
		demand_date = getdate(),
		demand_mark = @demand_mark
	where demand_id = @demand_id	
	
	return @demand_id
end
When records are updated or inserted following message is displayed:
Update failed. Found 0 records.

What might be the problem and how we can fix it?

Thanks.

Ikar
Posts: 1693
Joined: Thu 28 Oct 2004 13:56

Post by Ikar » Thu 12 May 2005 08:17

This message means that on execution Post, from the point of view of the server, none record was modified. If it is not so, you can disable this message setting TMSQuery.Options.StrictUpdate to False.

Post Reply