问题也就是说,医疗账户对应一种医疗费用,只能给一种基金。意思再解释一下。比如在职的,门诊,100元。退休的,门诊
150元,在职的,住院的,1000元。这里让他设置唯一。不能再添加相同的费用标准。帮我看一下我写的这个事件哪里出问题了。
.CS页:
void RecordEdit1_UserInputValidating(string FieldName, DataRow drRecord, RecordEdit re)
{
if (FieldName == "account_type,cost_type")
{
string strCheck = "select * from Th_MedicalCostStandard where if_remove=0 and account_type and cost_type='" + drRecord["account_type"] + drRecord["cost_type"] + "'";
if (!FlatBase.IsNullOrEmpty(strID) & FlatBase.IsNullOrEmpty(Request["c"]))
{
strCheck += " and standard_id<>" + strID;
}
DataTable dtCheck = myDb.GetDataTable(strCheck);
if (dtCheck.Rows.Count > 0)
{
re.Message = "“费用标准”不能重复,您输入的费用标准" + drRecord["account_type"] + drRecord["cost_type"] + "已存在";
}
}
}
我这样写哪里不对么。为什么这个费用标准,我还是能重复。
4 个解决方案
#1
方法一,在数据库中设置这两个字段为复合主键,或者复合唯一索引,然后再INSERT时CATCH 异常处理。
方法二,仍然在你的程序中判断,但你需要断点调试一下,看看你的strCheck到底是什么语句。
方法二,仍然在你的程序中判断,但你需要断点调试一下,看看你的strCheck到底是什么语句。
#2
string strCheck = "select * from Th_MedicalCostStandard where if_remove=0 and account_type and cost_type='" + drRecord["account_type"] + drRecord["cost_type"] + "'";这个不是对strCheck的定义么。
您再帮我看下,我的条件写的对不对呢。
#3
strChec中的内容是什么,贴出来
#4
没有你的程序,别要怎么调试?怎么知道strCheck 的实际内容是什么? 断点调试,然后贴出实际的字符串内容,这样别不就不用花时间去猜了。
#1
方法一,在数据库中设置这两个字段为复合主键,或者复合唯一索引,然后再INSERT时CATCH 异常处理。
方法二,仍然在你的程序中判断,但你需要断点调试一下,看看你的strCheck到底是什么语句。
方法二,仍然在你的程序中判断,但你需要断点调试一下,看看你的strCheck到底是什么语句。
#2
string strCheck = "select * from Th_MedicalCostStandard where if_remove=0 and account_type and cost_type='" + drRecord["account_type"] + drRecord["cost_type"] + "'";这个不是对strCheck的定义么。
您再帮我看下,我的条件写的对不对呢。
#3
strChec中的内容是什么,贴出来
#4
没有你的程序,别要怎么调试?怎么知道strCheck 的实际内容是什么? 断点调试,然后贴出实际的字符串内容,这样别不就不用花时间去猜了。