السلام عليكم تحية طيبة وبعد
لدي فورم فيه مجموعة من التكست بوكس (text boxes) اريد ان اضيف بيانات هذة التكست بوكس الى قاعدة البيانات وهي من نوع int لكن اذا تركت واحد منtext boxt فارغ يعطيني الخطأ التالي
Input string was not in a correct format
انا استخدم اجراء مخزن قاعدة البيانات لدي من نوع sql server
الكود الخاص بالكلاس هو
public void Add_Items(string ItemCode, string ItemName, string CategorizationCode, string Size, string Origin, string Location, string Company, string Color,
string Provenance, string Quality, string Model, string FirstUnit, string FirstUnitBarcode, string SecondUnit,
string SecondUnitBarcode,int SecountUnitOperatingConversion,string ThirdUnit,string ThirdUnitBarcode,int ThirdUnitOperatingConversion,
int MaxLimitForFirstUnit,int MinLimitForFirstUnit,int OrderLimitForFirstUnit, int MaxLimitForSecondUnit ,int MinLimitForSecondUnit,
int OrderLimitForSecondUnit, int MaxLimitForThirdUnit, int MinLimitForThirdUnit, int OrderLimitForThirdUnit, byte[] PicItem,int UnitDefault,
string Itemserial, DateTime ProductionDate, DateTime ExpaireDate, int SaleStrategy, bool status, string criterion)
{
DAL.DataAccessLayer DAL = new DAL.DataAccessLayer();
DAL.open();
SqlParameter[] param = new SqlParameter[36];
param[0] = new SqlParameter("@ItemCode", SqlDbType.NVarChar, 25);
param[0].Value = ItemCode;
param[1] = new SqlParameter("@ItemName", SqlDbType.NVarChar, 70);
param[1].Value = ItemName;
param[2] = new SqlParameter("@CategorizationCode", SqlDbType.NVarChar, 25);
param[2].Value = CategorizationCode;
param[3] = new SqlParameter("@Size", SqlDbType.NVarChar,15);
param[3].Value = Size;
param[4] = new SqlParameter("@Origin", SqlDbType.NVarChar,50);
param[4].Value = Origin;
param[5] = new SqlParameter("@Location", SqlDbType.NVarChar, 70);
param[5].Value = Location;
param[6] = new SqlParameter("@Company", SqlDbType.NVarChar, 50);
param[6].Value = Company;
param[7] = new SqlParameter("@Color", SqlDbType.NVarChar, 30);
param[7].Value = Color;
param[8] = new SqlParameter("@Provenance", SqlDbType.NVarChar, 70);
param[8].Value = Provenance;
param[9] = new SqlParameter("@Quality", SqlDbType.NVarChar, 30);
param[9].Value = Quality;
param[10] = new SqlParameter("@Model", SqlDbType.NVarChar,50);
param[10].Value = Model;
param[11] = new SqlParameter("@FirstUnit", SqlDbType.NVarChar,50);
param[11].Value = FirstUnit;
param[12] = new SqlParameter("@FirstUnitBarcode", SqlDbType.NVarChar,25);
param[12].Value = FirstUnitBarcode;
param[13] = new SqlParameter("@SecondUnit", SqlDbType.NVarChar,50);
param[13].Value = SecondUnit;
param[14] = new SqlParameter("@SecondUnitBarcode", SqlDbType.NVarChar,25);
param[14].Value = SecondUnitBarcode;
param[15] = new SqlParameter("@SecountUnitOperatingConversion", SqlDbType.Int);
param[15].Value = SecountUnitOperatingConversion;
param[16] = new SqlParameter("@ThirdUnit", SqlDbType.NVarChar, 50);
param[16].Value = ThirdUnit;
param[17] = new SqlParameter("@ThirdUnitBarcode", SqlDbType.NVarChar, 25);
param[17].Value = ThirdUnitBarcode;
param[18] = new SqlParameter("@ThirdUnitOperatingConversion", SqlDbType.Int);
param[18].Value = ThirdUnitOperatingConversion;
param[19] = new SqlParameter("@MaxLimitForFirstUnit", SqlDbType.Int);
param[19].Value = MaxLimitForFirstUnit;
param[20] = new SqlParameter("@MinLimitForFirstUnit", SqlDbType.Int);
param[20].Value = MinLimitForFirstUnit;
param[21] = new SqlParameter("@OrderLimitForFirstUnit", SqlDbType.Int);
param[21].Value = OrderLimitForFirstUnit;
param[22] = new SqlParameter("@MaxLimitForSecondUnit", SqlDbType.Int);
param[22].Value = MaxLimitForSecondUnit;
param[23] = new SqlParameter("@MinLimitForSecondUnit", SqlDbType.Int);
param[23].Value = MinLimitForSecondUnit;
param[24] = new SqlParameter("@OrderLimitForSecondUnit", SqlDbType.Int);
param[24].Value = OrderLimitForSecondUnit;
param[25] = new SqlParameter("@MaxLimitForThirdUnit", SqlDbType.Int);
param[25].Value = MaxLimitForThirdUnit;
param[26] = new SqlParameter("@MinLimitForThirdUnit", SqlDbType.Int);
param[26].Value = MinLimitForThirdUnit;
param[27] = new SqlParameter("@OrderLimitForThirdUnit", SqlDbType.Int);
param[27].Value = OrderLimitForThirdUnit;
param[28] = new SqlParameter("@PicItem", SqlDbType.Image);
param[28].Value = PicItem;
param[29] = new SqlParameter("@UnitDefault", SqlDbType.Int);
param[29].Value = UnitDefault;
param[30] = new SqlParameter("@Itemserial", SqlDbType.NVarChar,70);
param[30].Value = Itemserial;
param[31] = new SqlParameter("@ProductionDate", SqlDbType.Date);
param[31].Value = ProductionDate;
param[32] = new SqlParameter("@ExpaireDate", SqlDbType.Date);
param[32].Value = ExpaireDate;
param[33] = new SqlParameter("@SaleStrategy", SqlDbType.Int);
param[33].Value = SaleStrategy;
param[34] = new SqlParameter("@status", SqlDbType.Bit);
param[34].Value = status;
param[35] = new SqlParameter("@criterion", SqlDbType.NVarChar,50);
param[35].Value = criterion;
DAL.ExecuteCommand("Add_Items", param);
DAL.close();
}
اما الكود في زر اضافة فهو
if (pictureBox2.Image == null)
{
PicItem = new byte[0];
Item.Add_Items(txt_ItemCode.Text, txt_ItemName.Text, cmb_Ctagorization.Text, txt_Size.Text, txt_Origin.Text, txt_Location.Text, txt_Company.Text,
txt_Color.Text, txt_Provenance.Text, txt_Quality.Text, txt_Model.Text, txt_FirstUnit.Text, txt_FirstUnitBarcode.Text, txt_SecondUnit.Text,
txt_SecondUnitBarcode.Text, Convert.ToInt32(txt_SecountUnitOperatingConversion.Text), txt_ThirdUnit.Text, txt_ThirdUnitBarcode.Text, Convert.ToInt32(txt_ThirdUnitOperatingConversion.Text),
Convert.ToInt32(txt_MaxLimitForFirstUnit.Text), Convert.ToInt32(txt_MinLimitForFirstUnit.Text), Convert.ToInt32(txt_OrderLimitForFirstUnit.Text),
Convert.ToInt32(txt_MaxLimitForSecondUnit.Text), Convert.ToInt32(txt_MinLimitForSecondUnit.Text), Convert.ToInt32(txt_OrderLimitForSecondUnit.Text),
Convert.ToInt32(txt_MaxLimitForThirdUnit.Text), Convert.ToInt32(txt_MinLimitForThirdUnit.Text), Convert.ToInt32(txt_OrderLimitForThirdUnit.Text),
PicItem, UnitDefaultval, txt_Itemserial.Text, Convert.ToDateTime(mask_date_production.Text), Convert.ToDateTime(mask_expiration_date.Text), cmb_SaleStrategy.SelectedIndex, true, "without_Image");
}
والاجراء المخزن هو
ALTER proc [dbo].[Add_Items]
@ItemCode nvarchar (25),
@ItemName nvarchar (70),
@CategorizationCode nvarchar (25),
@Size nvarchar (15),
@Origin nvarchar(50),
@Location nvarchar (70),
@Company nvarchar (50),
@Color nvarchar (30),
@Provenance nvarchar (70),
@Quality nvarchar (30),
@Model nvarchar (50),
@FirstUnit nvarchar (50),
@FirstUnitBarcode nvarchar (25),
@SecondUnit nvarchar (50),
@SecondUnitBarcode nvarchar (25),
@SecountUnitOperatingConversion int,
@ThirdUnit nvarchar (50),
@ThirdUnitBarcode nvarchar (25),
@ThirdUnitOperatingConversion int,
@MaxLimitForFirstUnit int,
@MinLimitForFirstUnit int,
@OrderLimitForFirstUnit int,
@MaxLimitForSecondUnit int,
@MinLimitForSecondUnit int,
@OrderLimitForSecondUnit int,
@MaxLimitForThirdUnit int,
@MinLimitForThirdUnit int ,
@OrderLimitForThirdUnit int ,
@PicItem image,
@UnitDefault int ,
@Itemserial nvarchar (70),
@ProductionDate date,
@ExpaireDate date,
@SaleStrategy int ,
@status bit,
@criterion nvarchar (50)
as
if @criterion='with_Image'
begin
INSERT INTO [stores].[dbo].[Items]
([ItemCode]
,[ItemName]
,[CategorizationCode]
,[Size]
,[Origin]
,[Location]
,[Company]
,[Color]
,[Provenance]
,[Quality]
,[Model]
,[FirstUnit]
,[FirstUnitBarcode]
,[SecondUnit]
,[SecondUnitBarcode]
,[SecountUnitOperatingConversion]
,[ThirdUnit]
,[ThirdUnitBarcode]
,[ThirdUnitOperatingConversion]
,[MaxLimitForFirstUnit]
,[MinLimitForFirstUnit]
,[OrderLimitForFirstUnit]
,[MaxLimitForSecondUnit]
,[MinLimitForSecondUnit]
,[OrderLimitForSecondUnit]
,[MaxLimitForThirdUnit]
,[MinLimitForThirdUnit]
,[OrderLimitForThirdUnit]
,[PicItem]
,[UnitDefault]
,[Itemserial]
,[ProductionDate]
,[ExpaireDate]
,SaleStrategy
,[status])
VALUES
(@ItemCode
,@ItemName
,@CategorizationCode
,@Size
,@Origin
,@Location
,@Company
,@Color
,@Provenance
,@Quality
,@Model
,@FirstUnit
,@FirstUnitBarcode
,@SecondUnit
,@SecondUnitBarcode
,@SecountUnitOperatingConversion
,@ThirdUnit
,@ThirdUnitBarcode
,@ThirdUnitOperatingConversion
,@MaxLimitForFirstUnit
,@MinLimitForFirstUnit
,@OrderLimitForFirstUnit
,@MaxLimitForSecondUnit
,@MinLimitForSecondUnit
,@OrderLimitForSecondUnit
,@MaxLimitForThirdUnit
,@MinLimitForThirdUnit
,@OrderLimitForThirdUnit
,@PicItem
,@UnitDefault
,@Itemserial
,@ProductionDate
,@ExpaireDate
,@SaleStrategy
,1)
end
كل ما اريده هو كيف ان اخزن قيمة الTextbox المرتبطة بحقول رقمية هي null في حالة انها فارغة
ولكم جزيل الشكر