Marzieh_A
جمعه 25 دی 1388, 16:16 عصر
من وقتی می خوام رکوردی رو در جدولی که دارای Identity column هست درج کنم، نیاز به مقدار این Identity column داره.اگر این مقدار رو ندم error میده متغیر مربوط به ستون ID که در stored procedure مورد نظر با @ID مشخص شده پاس نشده. و اگر هم مقدار این فیلد رو بدم خطای زیر رو میده
Explicit value must be specified for identity column in table 'Log_usr' either when IDENTITY_INSERT is set to ON or when a replication user is inserting into a NOT FOR REPLICATION identity column.
یه راه حل در نظر گرفتم که اول max آی دی هایی رو که تو حدول دارم بگیرم بعد به تابعی که برای insert کردن نوشتم پاس کنم اما error زیر رو میده
Error converting data type varchar to bigint.
البته باید بگم که تابع یا کلاسی که برای این بازیابی اطلاعات نوشتم(که max رو میگیره) به صورت زیر هستش
public int User_Log_Count(int TypeSql)
{
SqlConnection MyConnection = new SqlConnection("Data Source=PC;Initial Catalog=nemoone;Integrated Security=True");
SqlCommand cmd1 = new SqlCommand("SP_Log_usr", MyConnection);
MyConnection.Open();
cmd1.CommandType = CommandType.StoredProcedure;
cmd1.Parameters.Add(new SqlParameter("@TypeSql", SqlDbType.SmallInt)).Value = TypeSql;
cmd1.Parameters.Add(new SqlParameter("@ID", SqlDbType.BigInt)).Value = 1;
return (cmd1.ExecuteNonQuery());
MyConnection.Close();
}
و اون قسمت از stored procedure iم که این کار رو می کنه به صورت زیر هستش
set ANSI_NULLS ON
set QUOTED_IDENTIFIER ON
go
-- Create the stored procedure.
ALTER PROCEDURE [dbo].[SP_Log_usr]
@TypeSql smallint = 0 ,
@ID bigint,
@IdUser int = 0 ,
@DateRunSql nvarchar(50) = null ,
@Field_Value ntext = null ,
@NameForm nvarchar(50) = null ,
@NameTable nvarchar(50) = null ,
@TyoeSql nvarchar(1) = null ,
@SqlCommand ntext = null ,
@Marhale smallint = 0
AS
BEGIN
if @TypeSql=5
begin
declare @Max AS bigint ;
set @Max=0;
select @Max=MAx('ID') from Log_usr;
return @Max;
end
return 0
END
اگر ممکنه بگید مشکل کارم کجاست چون واقعا هر کاری می کنم درست نمیشه :ناراحت:
Explicit value must be specified for identity column in table 'Log_usr' either when IDENTITY_INSERT is set to ON or when a replication user is inserting into a NOT FOR REPLICATION identity column.
یه راه حل در نظر گرفتم که اول max آی دی هایی رو که تو حدول دارم بگیرم بعد به تابعی که برای insert کردن نوشتم پاس کنم اما error زیر رو میده
Error converting data type varchar to bigint.
البته باید بگم که تابع یا کلاسی که برای این بازیابی اطلاعات نوشتم(که max رو میگیره) به صورت زیر هستش
public int User_Log_Count(int TypeSql)
{
SqlConnection MyConnection = new SqlConnection("Data Source=PC;Initial Catalog=nemoone;Integrated Security=True");
SqlCommand cmd1 = new SqlCommand("SP_Log_usr", MyConnection);
MyConnection.Open();
cmd1.CommandType = CommandType.StoredProcedure;
cmd1.Parameters.Add(new SqlParameter("@TypeSql", SqlDbType.SmallInt)).Value = TypeSql;
cmd1.Parameters.Add(new SqlParameter("@ID", SqlDbType.BigInt)).Value = 1;
return (cmd1.ExecuteNonQuery());
MyConnection.Close();
}
و اون قسمت از stored procedure iم که این کار رو می کنه به صورت زیر هستش
set ANSI_NULLS ON
set QUOTED_IDENTIFIER ON
go
-- Create the stored procedure.
ALTER PROCEDURE [dbo].[SP_Log_usr]
@TypeSql smallint = 0 ,
@ID bigint,
@IdUser int = 0 ,
@DateRunSql nvarchar(50) = null ,
@Field_Value ntext = null ,
@NameForm nvarchar(50) = null ,
@NameTable nvarchar(50) = null ,
@TyoeSql nvarchar(1) = null ,
@SqlCommand ntext = null ,
@Marhale smallint = 0
AS
BEGIN
if @TypeSql=5
begin
declare @Max AS bigint ;
set @Max=0;
select @Max=MAx('ID') from Log_usr;
return @Max;
end
return 0
END
اگر ممکنه بگید مشکل کارم کجاست چون واقعا هر کاری می کنم درست نمیشه :ناراحت: