小编Ant*_*llo的帖子

日期范围重叠检查约束

我在sql server 2005中有一个简单的表,有3列:DateStart,DateEnd和Value.我试图设置"表检查约束"以避免插入重叠记录.例如,如果在此表中有DateStart = 2012-01-01(第一月1月)和DateEnd 2012-01-15(1月15日)的记录,则Check约束必须避免插入DateStart = 2012-01-10的记录(没有关心DateEnd),DateEnd = 2012-01-10(无关日期启动)的记录或DateStart 2011-12-10和DateEnd 2012-02-01的记录.

我以这种方式定义了一个UDF:

CREATE FUNCTION [dbo].[ufn_checkOverlappingDateRange]
(
    @DateStart AS DATETIME
    ,@DateEnd AS DATETIME
)
RETURNS BIT 
AS
BEGIN
  DECLARE @retval BIT
  /* date range at least one day */
  IF (DATEDIFF(day,@DateStart,@DateEnd) < 1)
    BEGIN
      SET @retval=0
    END
  ELSE
    BEGIN
      IF EXISTS
        (
          SELECT
              *
            FROM [dbo].[myTable]
            WHERE
            ((DateStart <= @DateStart) AND (DateEnd > @DateStart))
            OR
            ((@DateStart <= DateStart) AND (@DateEnd > DateStart))
        )
        BEGIN
          SET @retval=0
        END
    ELSE
      BEGIN
            SET …
Run Code Online (Sandbox Code Playgroud)

database sql-server database-design sql-server-2005 check-constraints

21
推荐指数
1
解决办法
1万
查看次数

将ASP.NET TreeView控件绑定到数据集

MSDN中,他们说有关TreeView控件("绑定到数据"段落):

TreeView控件也可以绑定到具有关系的XmlDocument对象或DataSet对象.若要绑定到其中一个数据源,请将TreeView控件的DataSource属性设置为数据源,然后调用DataBind方法.

所以在一个简单的WebForms页面中只写了一个TreeView我写道:

     DataSet ds = new DataSet();
     DataTable dt = new DataTable("Masters");
     ds.Tables.Add(dt);
     dt.Columns.Add("MasterId", typeof(Int32));
     dt.Columns.Add("Name", typeof(String));
     DataTable dt1 = new DataTable("Details");
     ds.Tables.Add(dt1);
     dt1.Columns.Add("DetailId", typeof(Int32));
     dt1.Columns.Add("MasterId", typeof(Int32));
     dt1.Columns.Add("Name", typeof(String));

     DataRow rw;
     DataRow rw1;
     for (int i = 0; i < 5; i++)
     {
        rw=dt.NewRow();
        dt.Rows.Add(rw);
        rw["MasterId"] = i;
        rw["Name"] = "Master Name " + i.ToString();
        for (int j = 0; j < 10; j++)
        {
           rw1 = dt1.NewRow();
           dt1.Rows.Add(rw1);
           rw1["DetailId"] = i * …
Run Code Online (Sandbox Code Playgroud)

c# asp.net

7
推荐指数
1
解决办法
5173
查看次数