0

特定の条件下でのみ表示されるテキストボックスがいくつかあるWebがあります。これらのテキストボックスはカレンダーエクステンダーにバインドされていますが、表示されない場合は常にnull文字列をデータベースに渡します。テーブル内の対応するデータ型はですdatetime。これらのnull文字列を格納している間、それらはに変換され1/1/1900 12:00:00 AMます。代わりにここにnull値を保存するにはどうすればよいですか?

データ型を別のものに変更する必要がありますか?

datetime後でいくつかの比較操作を実行する必要があるため、使用しています。

関連するコードはこちらです。

public class Asset
{ 

public string dbStatus { get; set; }
public string wtyEndDate { get; set; }
public string amcEndDate { get; set; }


 public Asset()
 {
    dbStatus = default(String);
    wtyEndDate = default(String);
    amcEndDate = default(String);
 }
}

 protected void btnSaveAsset_Click(object sender, EventArgs e)
  { 
    Asset a = new Asset();
    a.wtyEndDate = txtWtyEndDate.Text;
    a.amcEndDate = txtAmcEndDate.Text;
    string msg = "";
    if (a.dbStatus == "INSERT")
    {
      try
       {
           msg = (ab.EXE_Assets_Master(a).Rows.Count>0) ? "Record Inserted"; : "Error"
        }
        catch (Exception)
        {
            msg = "Record with this service tag already exists in the database";
        }
    }
 }

 protected DataTable _EXE_Asset_Details(Asset a)
  {
    Parameters.Clear();

    AddParameter("@wtyEndDate", a.wtyEndDate);
    AddParameter("@amcEndDate",a.amcEndDate);
    AddParameter("@DBStatus", a.dbStatus);

    return ExecuteDataSet("[Asset_Details]").Tables[0];
    }

// Asset_Details

CREATE PROCEDURE [Asset_Details]
@wtyEndDate datetime = NULL, 
@amcEndDate datetime =null, 
@dbStatus nvarchar(50)

AS
IF(@DBStatus='INSERT')
BEGIN
 INSERT INTO [assetsMaster]
       ([warrantyEndDate],[amcEndDate])
  VALUES
       ( @wtyEndDate,@amcEndDate)
  SELECT @@rowcount

END
4

1 に答える 1

0

DateTimeオプションのパラメータは、データが含まれている場合にのみ追加してください。

例えば:

if(!string.IsNullOrWhiteSpace(a.wtyEndDate))
{
    AddParameter("@wtyEndDate", a.wtyEndDate);
}
于 2012-04-25T10:20:49.673 に答える