1.SQL2008中获取表的默认值.
--获取数据库中的默认值,返回一行数据
ALTER Procedure [dbo].[S_GetDefaultValue](
@table nvarchar(1000)) AS
select b.name,c.text,replace(replace(c.text,'(',''),')','') as value
from sysobjects a
inner join syscolumns b on b.id=a.id
inner join syscomments c on c.id=b.cdefault
where a.name=@table
--exec S_GetDefaultValue 'Sys_Modal'
2.保存操作时自动写入默认值,支持自定义默认值
DataSet das = (Grid1.DataSource as DataTable).DataSet;
DataRow drow = das.Tables[0].NewRow();
if (!string.IsNullOrEmpty(TableName)))
{
DataHelper myHelper = new DataHelper();
DataSet ds1 = myHelper.GetDs("exec S_GetDefaultValue " + TableName);
foreach (DataRow dr in ds1.Tables[0].Rows)
{
////保留思路,变更为在设计界面调用字段
if (dr["value"].ToString() == "'getuser'")
{
//设置默认建档人员
drow[dr["name"].ToString()] = SysParam.SyU_EmpName;
continue;
}
if (dr["value"].ToString() == "getdate")
{
//设置建档默认时间
drow[dr["name"].ToString()] = SysInvoke.GetDate().ToString();
continue;
}
if (drow.Table.Columns[dr["name"].ToString()].DataType == typeof(Boolean)) //布尔型赋值
{
drow[dr["name"].ToString()] = (dr["value"].ToString() != "0");
continue;
}
drow[dr["name"].ToString()] = dr["value"];
}
}