我在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
在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)