角色 类别 权重 A(人数) B(人数) C(人数) D(人数)
角色A A类别 0.5 50 30 20 10
0.5 50 30 20 10
B类别
0.5 50 30 20 10
0.5 50 30 20 10
。 等类别角色都还有
。
。
。
表 A 角色A得分 角色B的分
表 B我现在想建一个触发器,让表A(指的是投票人数) 前台是对a b c d 进行的选择,统计了人数然后设计了( A=5,b=4 C=3 d=2)初值,
如果表A投票(批量更新的每行都是选择进行了投票,人数更新)根据人数 (A*权重)[第一类]所有相加。当表A更新时候,B表自动得到分数,更新到B表,
也许表达不清楚,重点就是想问下这个 触发器怎么建立
C# 写逻辑更新的方式如下:
#endregion
/// <summary>
/// 多级模糊查询模型建立的方法
/// </summary>
/// <param name="Roules">是传入的相应角色</param>
/// <returns></returns>
public string EvealueRelust(string roluesName)
{
Eveal.BLL.SmallClass mySmallclass=new SmallClass();
DataTable myTable = mySmallclass.GetData("distinct smallclass_name,S_Qz", "Rolues_Name='" + roluesName + "'").Tables[0];
//得到角色想应的类别 下面是取得相应类别所保护的子因子;
int rowsCount=myTable.Rows.Count;
double setHA = 0; double setHB = 0; double setHC = 0; double setHD = 0;
//循环相应类别,在
for(int i=0; i<rowsCount;i++)
{ string classSmall=myTable.Rows[i][0].ToString();
DataTable myStatistics=mystai.GetData("statistics_name,Roules_name,s_qz,A,B,C,D","smallclass_name='"+classSmall+"'").Tables[0];
int sRowsCount = myStatistics.Rows.Count;
double setA = 0; double setB = 0; double setC = 0; double setD = 0;
for (int j = 0; j < sRowsCount; j++)
{
//这一级循环是最里面的因子
doublyz=( Convert.ToDouble( myStatistics.Rows[j]["s_qz"].ToString())/100);
setA += Convert.ToDouble(myStatistics.Rows[j][3].ToString())*yz; //循环计算;
setB += Convert.ToDouble(myStatistics.Rows[j][4].ToString())*yz;
setC += Convert.ToDouble(myStatistics.Rows[j][5].ToString())*yz;
setD += Convert.ToDouble(myStatistics.Rows[j][6].ToString())*yz;
}
double Hyz=(Convert.ToDouble( myTable.Rows[i][1])/100);
setHA=setHA+setA*Hyz;
setHB=setHB+setB*Hyz;
setHC=setHC+setC*Hyz;
setHD=setHD+setD*Hyz;
}
return (setHA+"|"+setHB+"|"+setHC+"|"+setHD);
}
/// 执行插入到 最后评估表的分数
/// </summary> 第二个更新数据表方法
/// <param name="rolues"></param>
public void Exectjfen(string rolues)
{
string Roules=EvealueRelust(rolues);
string[] result = Roules.Split('|');
//查出set里面 A B C D 初值;这个地方先不根据数据库选;
string strr = new System_Set().GetData("BigClass_set", "").Tables[0].Rows[0][0].ToString();
string[] strrArry = strr.Split('|');
double allScore = 0;
for (int i = 0; i < 4; i++)
{
allScore = allScore + Convert.ToDouble(result[i]) * Convert.ToDouble(strrArry[i]);
}
DataTable myEvalue = (new Eveal.BLL.Evaluate()).GetData("Expert_Score,Teacher_Score,student_Score", "setoff=1").Tables[0];
DataTable myRolues = (new Eveal.BLL.Rolues()).GetData("R_Qz","").Tables[0];
double myAllScore = 0;
switch(rolues) {
case "专家":
{ (new Eveal.BLL.Evaluate()).ExecuteUpdate("Expert_Score='" + (allScore/100).ToString()+ "'", "setoff=1");
myAllScore = Convert.ToDouble(myEvalue.Rows[0][0]) * Convert.ToDouble(myRolues.Rows[0][0]);
(new Eveal.BLL.Evaluate()).ExecuteUpdate("Total_Score='" + (myAllScore / 100).ToString() + "'", "set /// 执行插入到 最后评估表的分数
/// </summary>
/// <param name="rolues"></param>
public void Exectjfen(string rolues)
{
string Roules=EvealueRelust(rolues);
string[] result = Roules.Split('|');
//查出set里面 A B C D 初值;这个地方先不根据数据库选;
string strr = new System_Set().GetData("BigClass_set", "").Tables[0].Rows[0][0].ToString();
string[] strrArry = strr.Split('|');
double allScore = 0;
for (int i = 0; i < 4; i++)
{
allScore = allScore + Convert.ToDouble(result[i]) * Convert.ToDouble(strrArry[i]);
}
DataTable myEvalue = (new Eveal.BLL.Evaluate()).GetData("Expert_Score,Teacher_Score,student_Score", "setoff=1").Tables[0];
DataTable myRolues = (new Eveal.BLL.Rolues()).GetData("R_Qz","").Tables[0];
double myAllScore = 0;
switch(rolues) {
case "专家":
{ (new Eveal.BLL.Evaluate()).ExecuteUpdate("Expert_Score='" + (allScore/100).ToString()+ "'", "setoff=1");
myAllScore = Convert.ToDouble(myEvalue.Rows[0][0]) * Convert.ToDouble(myRolues.Rows[0][0]);
(new Eveal.BLL.Evaluate()).ExecuteUpdate("Total_Score='" + (myAllScore / 100).ToString() + "'", "setoff=1");
break;
}
case "同行教师":
{
(new Eveal.BLL.Evaluate()).ExecuteUpdate("teacher_Score='" + (allScore / 100).ToString() + "'", "setoff=1");
myAllScore = Convert.ToDouble(myEvalue.Rows[0][1]) * Convert.ToDouble(myRolues.Rows[1][0]);
(new Eveal.BLL.Evaluate()).ExecuteUpdate("Total_Score='" + (myAllScore / 100).ToString() + "'", "setoff=1");
break;
}
case "学生":
{
(new Eveal.BLL.Evaluate()).ExecuteUpdate("student_Score='" + (allScore / 100).ToString() + "'", "setoff=1");
myAllScore = Convert.ToDouble(myEvalue.Rows[0][2]) * Convert.ToDouble(myRolues.Rows[2][0]);
(new Eveal.BLL.Evaluate()).ExecuteUpdate("Total_Score='" + (myAllScore / 100).ToString() + "'", "setoff=1");
break;
}
}
}
break;
}
case "同行教师":
{
(new Eveal.BLL.Evaluate()).ExecuteUpdate("teacher_Score='" + (allScore / 100).ToString() + "'", "setoff=1");
myAllScore = Convert.ToDouble(myEvalue.Rows[0][1]) * Convert.ToDouble(myRolues.Rows[1][0]);
(new Eveal.BLL.Evaluate()).ExecuteUpdate("Total_Score='" + (myAllScore / 100).ToString() + "'", "setoff=1");
break;
}
case "学生":
{
(new Eveal.BLL.Evaluate()).ExecuteUpdate("student_Score='" + (allScore / 100).ToString() + "'", "setoff=1");
myAllScore = Convert.ToDouble(myEvalue.Rows[0][2]) * Convert.ToDouble(myRolues.Rows[2][0]);
(new Eveal.BLL.Evaluate()).ExecuteUpdate("Total_Score='" + (myAllScore / 100).ToString() + "'", "setoff=1");
break;
}
}
}
现在想在数据库建触发器,请各位指教:
角色A A类别 0.5 50 30 20 10
0.5 50 30 20 10
B类别
0.5 50 30 20 10
0.5 50 30 20 10
。 等类别角色都还有
。
。
。
表 A 角色A得分 角色B的分
表 B我现在想建一个触发器,让表A(指的是投票人数) 前台是对a b c d 进行的选择,统计了人数然后设计了( A=5,b=4 C=3 d=2)初值,
如果表A投票(批量更新的每行都是选择进行了投票,人数更新)根据人数 (A*权重)[第一类]所有相加。当表A更新时候,B表自动得到分数,更新到B表,
也许表达不清楚,重点就是想问下这个 触发器怎么建立
C# 写逻辑更新的方式如下:
#endregion
/// <summary>
/// 多级模糊查询模型建立的方法
/// </summary>
/// <param name="Roules">是传入的相应角色</param>
/// <returns></returns>
public string EvealueRelust(string roluesName)
{
Eveal.BLL.SmallClass mySmallclass=new SmallClass();
DataTable myTable = mySmallclass.GetData("distinct smallclass_name,S_Qz", "Rolues_Name='" + roluesName + "'").Tables[0];
//得到角色想应的类别 下面是取得相应类别所保护的子因子;
int rowsCount=myTable.Rows.Count;
double setHA = 0; double setHB = 0; double setHC = 0; double setHD = 0;
//循环相应类别,在
for(int i=0; i<rowsCount;i++)
{ string classSmall=myTable.Rows[i][0].ToString();
DataTable myStatistics=mystai.GetData("statistics_name,Roules_name,s_qz,A,B,C,D","smallclass_name='"+classSmall+"'").Tables[0];
int sRowsCount = myStatistics.Rows.Count;
double setA = 0; double setB = 0; double setC = 0; double setD = 0;
for (int j = 0; j < sRowsCount; j++)
{
//这一级循环是最里面的因子
doublyz=( Convert.ToDouble( myStatistics.Rows[j]["s_qz"].ToString())/100);
setA += Convert.ToDouble(myStatistics.Rows[j][3].ToString())*yz; //循环计算;
setB += Convert.ToDouble(myStatistics.Rows[j][4].ToString())*yz;
setC += Convert.ToDouble(myStatistics.Rows[j][5].ToString())*yz;
setD += Convert.ToDouble(myStatistics.Rows[j][6].ToString())*yz;
}
double Hyz=(Convert.ToDouble( myTable.Rows[i][1])/100);
setHA=setHA+setA*Hyz;
setHB=setHB+setB*Hyz;
setHC=setHC+setC*Hyz;
setHD=setHD+setD*Hyz;
}
return (setHA+"|"+setHB+"|"+setHC+"|"+setHD);
}
/// 执行插入到 最后评估表的分数
/// </summary> 第二个更新数据表方法
/// <param name="rolues"></param>
public void Exectjfen(string rolues)
{
string Roules=EvealueRelust(rolues);
string[] result = Roules.Split('|');
//查出set里面 A B C D 初值;这个地方先不根据数据库选;
string strr = new System_Set().GetData("BigClass_set", "").Tables[0].Rows[0][0].ToString();
string[] strrArry = strr.Split('|');
double allScore = 0;
for (int i = 0; i < 4; i++)
{
allScore = allScore + Convert.ToDouble(result[i]) * Convert.ToDouble(strrArry[i]);
}
DataTable myEvalue = (new Eveal.BLL.Evaluate()).GetData("Expert_Score,Teacher_Score,student_Score", "setoff=1").Tables[0];
DataTable myRolues = (new Eveal.BLL.Rolues()).GetData("R_Qz","").Tables[0];
double myAllScore = 0;
switch(rolues) {
case "专家":
{ (new Eveal.BLL.Evaluate()).ExecuteUpdate("Expert_Score='" + (allScore/100).ToString()+ "'", "setoff=1");
myAllScore = Convert.ToDouble(myEvalue.Rows[0][0]) * Convert.ToDouble(myRolues.Rows[0][0]);
(new Eveal.BLL.Evaluate()).ExecuteUpdate("Total_Score='" + (myAllScore / 100).ToString() + "'", "set /// 执行插入到 最后评估表的分数
/// </summary>
/// <param name="rolues"></param>
public void Exectjfen(string rolues)
{
string Roules=EvealueRelust(rolues);
string[] result = Roules.Split('|');
//查出set里面 A B C D 初值;这个地方先不根据数据库选;
string strr = new System_Set().GetData("BigClass_set", "").Tables[0].Rows[0][0].ToString();
string[] strrArry = strr.Split('|');
double allScore = 0;
for (int i = 0; i < 4; i++)
{
allScore = allScore + Convert.ToDouble(result[i]) * Convert.ToDouble(strrArry[i]);
}
DataTable myEvalue = (new Eveal.BLL.Evaluate()).GetData("Expert_Score,Teacher_Score,student_Score", "setoff=1").Tables[0];
DataTable myRolues = (new Eveal.BLL.Rolues()).GetData("R_Qz","").Tables[0];
double myAllScore = 0;
switch(rolues) {
case "专家":
{ (new Eveal.BLL.Evaluate()).ExecuteUpdate("Expert_Score='" + (allScore/100).ToString()+ "'", "setoff=1");
myAllScore = Convert.ToDouble(myEvalue.Rows[0][0]) * Convert.ToDouble(myRolues.Rows[0][0]);
(new Eveal.BLL.Evaluate()).ExecuteUpdate("Total_Score='" + (myAllScore / 100).ToString() + "'", "setoff=1");
break;
}
case "同行教师":
{
(new Eveal.BLL.Evaluate()).ExecuteUpdate("teacher_Score='" + (allScore / 100).ToString() + "'", "setoff=1");
myAllScore = Convert.ToDouble(myEvalue.Rows[0][1]) * Convert.ToDouble(myRolues.Rows[1][0]);
(new Eveal.BLL.Evaluate()).ExecuteUpdate("Total_Score='" + (myAllScore / 100).ToString() + "'", "setoff=1");
break;
}
case "学生":
{
(new Eveal.BLL.Evaluate()).ExecuteUpdate("student_Score='" + (allScore / 100).ToString() + "'", "setoff=1");
myAllScore = Convert.ToDouble(myEvalue.Rows[0][2]) * Convert.ToDouble(myRolues.Rows[2][0]);
(new Eveal.BLL.Evaluate()).ExecuteUpdate("Total_Score='" + (myAllScore / 100).ToString() + "'", "setoff=1");
break;
}
}
}
break;
}
case "同行教师":
{
(new Eveal.BLL.Evaluate()).ExecuteUpdate("teacher_Score='" + (allScore / 100).ToString() + "'", "setoff=1");
myAllScore = Convert.ToDouble(myEvalue.Rows[0][1]) * Convert.ToDouble(myRolues.Rows[1][0]);
(new Eveal.BLL.Evaluate()).ExecuteUpdate("Total_Score='" + (myAllScore / 100).ToString() + "'", "setoff=1");
break;
}
case "学生":
{
(new Eveal.BLL.Evaluate()).ExecuteUpdate("student_Score='" + (allScore / 100).ToString() + "'", "setoff=1");
myAllScore = Convert.ToDouble(myEvalue.Rows[0][2]) * Convert.ToDouble(myRolues.Rows[2][0]);
(new Eveal.BLL.Evaluate()).ExecuteUpdate("Total_Score='" + (myAllScore / 100).ToString() + "'", "setoff=1");
break;
}
}
}
现在想在数据库建触发器,请各位指教:
Create trigger tri_Name
as
---
your sql.