テキストボックスとdatetimeは整数を入力できます。私はこれをSQL Serverデータベースに保存したいと思います。何も入力しなければ、NULL
を保存します。 ただし、テキストボックスを空白のままにすると、入力文字列が正しい形式でないというエラーが表示されます。テキストボックスから整数フィールドにnullを挿入する方法
どうすればこの問題を回避でき、dbをnullにできますか?
public void Add_ItemSeasonalPrices(string ItemCode, DateTime FromDate, DateTime ToDate, decimal WholeSaleForFirstUnit, decimal WholeSaleForSecondUnit, decimal WholeSaleForThirdUnit,
decimal HalfWholeSaleForFirstUnit, decimal HalfWholeSaleForSecondUnit, decimal HalfWholeSaleForThirdUnit,
decimal DistributorForFirstUnit, decimal DistributorForSecondUnitt)
{
DAL.DataAccessLayer DAL = new DAL.DataAccessLayer();
DAL.open();
SqlParameter[] param = new SqlParameter[22];
param[0] = new SqlParameter("@ItemCode", SqlDbType.NVarChar, 25);
param[0].Value = ItemCode;
param[1] = new SqlParameter("@FromDate", SqlDbType.DateTime);
param[1].Value = FromDate;
param[2] = new SqlParameter("@ToDate", SqlDbType.DateTime);
param[2].Value = ToDate;
param[3] = new SqlParameter("@WholeSaleForFirstUnit", SqlDbType.Decimal);
param[3].Value = WholeSaleForFirstUnit;
param[4] = new SqlParameter("@WholeSaleForSecondUnit", SqlDbType.Decimal);
param[4].Value = WholeSaleForSecondUnit;
param[5] = new SqlParameter("@WholeSaleForThirdUnit ", SqlDbType.Decimal);
param[5].Value = WholeSaleForThirdUnit;
param[6] = new SqlParameter("@HalfWholeSaleForFirstUnit", SqlDbType.Decimal);
param[6].Value = HalfWholeSaleForFirstUnit;
param[7] = new SqlParameter("@HalfWholeSaleForSecondUnit", SqlDbType.Decimal);
param[7].Value = HalfWholeSaleForSecondUnit;
param[8] = new SqlParameter("@HalfWholeSaleForThirdUnit", SqlDbType.Decimal);
param[8].Value = HalfWholeSaleForThirdUnit;
param[9] = new SqlParameter("@DistributorForFirstUnit", SqlDbType.Decimal);
param[9].Value = DistributorForFirstUnit;
param[10] = new SqlParameter("@DistributorForSecondUnit", SqlDbType.Decimal);
param[10].Value = DistributorForSecondUnit;
DAL.ExecuteCommand("Add_ItemSeasonalPrices", param);
DAL.close();
}
とbtnSave
Item.Add_ItemSeasonalPrices(txt_ItemCode.Text, Convert.ToDateTime(FromDate.Text), Convert.ToDateTime(ToDate.Text), Convert.ToDecimal(txt_WholeSaleForFirstUnit.Text), Convert.ToDecimal(txt_WholeSaleForSecondUnit.Text),
Convert.ToDecimal(txt_WholeSaleForThirdUnit.Text), Convert.ToDecimal(txt_HalfWholeSaleForFirstUnit.Text),
Convert.ToDecimal(txt_HalfWholeSaleForSecondUnit.Text), Convert.ToDecimal(txt_HalfWholeSaleForThirdUnit.Text),
Convert.ToDecimal(txt_DistributorForFirstUnit.Text), Convert.ToDecimal(txt_DistributorForSecondUnit.Text));
でこのコードと、このテーブルを
CREATE TABLE [dbo].[ItemSeasonalPrices](
[ItemCode] [nvarchar](25) NOT NULL,
[FromDate] [date] NULL,
[ToDate] [date] NULL,
[WholeSaleForFirstUnit] [decimal](18, 3) NULL,
[WholeSaleForSecondUnit] [decimal](18, 3) NULL,
[WholeSaleForThirdUnit] [decimal](18, 3) NULL,
[HalfWholeSaleForFirstUnit] [decimal](18, 3) NULL,
[HalfWholeSaleForSecondUnit] [decimal](18, 3) NULL,
[HalfWholeSaleForThirdUnit] [decimal](18, 3) NULL,
[DistributorForFirstUnit] [decimal](18, 3) NULL,
[DistributorForSecondUnit] [decimal](18, 3) NULL,
[DistributorForThirdUnit] [decimal](18, 3) NULL,
[ExportForFirstUnit] [decimal](18, 3) NULL,
[ExportForSecondUnit] [decimal](18, 3) NULL,
[ExportForThirdUnit] [decimal](18, 3) NULL,
[RetailForFirstUnit] [decimal](18, 3) NULL,
[RetailForSecondUnit] [decimal](18, 3) NULL,
[RetailForThirdUnit] [decimal](18, 3) NULL,
[EndUserForFirstUnit] [decimal](18, 3) NULL,
[EndUserForSecondUnit] [decimal](18, 3) NULL,
[EndUserForThirdUnit] [decimal](18, 3) NULL,
[PriceDefault] [int] NULL
) ON [PRIMARY]
属性の検証 –
を使用すると、コードを簡略化してポイントにする必要があります。多くの人がこのコードをすべて読んでもらうことはありません。 – FLICKER