zoukankan      html  css  js  c++  java
  • 相关性配置模块总结

    此模块可以用做公共模块使用,只用做简单修改即可使用;

      用到的Form、SS脚本、DS脚本、数据库表以及主任审核相关性检查按钮的代码

      

    •   相关性检查按钮代码:
       1 var arrFolders = [];
       2     var arrOris = [];
       3     for(var row in dgFolders.DataSet.Tables[0].Rows) 
       4     {
       5         if(row["SELECTED"] == "Y") 
       6         {
       7             arrFolders = lims.AAdd(arrFolders,row["FOLDERNO"]);
       8             arrOris = lims.AAdd(arrOris,row["ORIGREC"]);
       9         }
      10     }
      11     if(lims.Len(arrOris) == 0)
      12     {
      13         arrFolders = dgFolders.GetSelectedRowsData("FOLDERNO");
      14         arrOris = dgFolders.GetSelectedRowsData("ORIGREC");
      15     } 
      16     var oOrdno = lims.CallServer("AppResultByDept.SS_GetOrdNO",[arrFolders]);
      17     var reg = form.ShowModalDialog(lims.GetFormSource("AppResultByDept.DataRelationCheck"),[oOrdno]);
      相关性检查按钮代码

    相关性配置页面:

    1.   调用Form实现初步添加公式信息,并且在公式里面实现对输入名称的非空判断、重名判断,实现多行操作、添加定位;
       1 var reg = form.ShowModalDialog(lims.GetFormSource("TEST_MANAGER.AddDLCheck"));
       2     if(reg == null | reg == "")
       3     {
       4         return ;
       5     }
       6     var dummy = lims.CallServer("TEST_MANAGER.ADD_DLCheck",[reg[0],reg[1]]);
       7     if(lims.Len(dummy) > 0 && dummy[0] == true)
       8     {
       9         dgDLCheck.Refresh();
      10         dgDLCheck.Find(["ORIGREC"],[dummy[1]]);
      11     }
      View Code
       1 var reg = form.ShowModalDialog(lims.GetFormSource("TEST_MANAGER.AddDLCheck"));
       2     if(reg == null | reg == "")
       3     {
       4         return ;
       5     }
       6     var dummy = lims.CallServer("TEST_MANAGER.ADD_DLCheck",[reg[0],reg[1]]);
       7     if(lims.Len(dummy) > 0 && dummy[0] == true)
       8     {
       9         dgDLCheck.Refresh();
      10         dgDLCheck.Find(["ORIGREC"],[dummy[1]]);
      11     }
      12 
      13 var DLCName = txtDLCName.Text;
      14     var isTrue = lims.CallServer("TEST_MANAGER.DLCName_Check",[DLCName]);
      15     if(isTrue == true)
      16     {
      17         Dialogs.MessageBox(form.Resources["名称已存在,请重新输入!"],"提示!","OK","WARNING");
      18         txtDLCName.Text = null;
      19         txtDLCName.Focus();
      20     }
      21 
      22 重名判断
      重名判断
    2. 调用公式:使用UD弹窗的方式调用公共Form,
       1 var origrec = dgDLCheck.GetCurrentRowData("ORIGREC");
       2     var ReadOnly = true;
       3     var bStyle = "";
       4     if(eventArgs["Column"].Id == 'DATALC_CALCNAME')
       5     {  
       6         var calcName = dgDLCheck.GetCurrentRowData("DATALC_CALCNAME");
       7         var prompt = form.ShowModalDialog(lims.GetFormSource("TEST_MANAGER.DLC_CALCNAME"), [ calcName, origrec,"DATA_RELATION_CHECK"]);
       8         dgDLCheck.Refresh();
       9         dgDLCheck.Find(["ORIGREC"],[origrec]);
      10     }
      11     else if(eventArgs["Column"].Id == 'DATALC_DESCRIPTION')
      12     {
      13         UpdateUD(eventArgs, dgDLCheck, "DATA_RELATION_CHECK", eventArgs["Column"].Id, !ReadOnly, bStyle);
      14     }
      UD弹窗代码
    3. 公式Form,实现添加默认公式内容(从别处拷贝修改使用,只是修改了添加公式的代码,其他使用原先代码)
      1 var origrecAnalytes = form.formArguments[1];
      2     var calcName = lims.CallServer("TEST_MANAGER.SS_Update_Calculation", [ "", "", origrecAnalytes,"" ]);
      3     //此处第二个参数可以设置公式默认内容;
      4     dgdCalcs.Data = lims.GetDataSource("TEST_MANAGER.getCalcVersions", [ calcName ]);
      5     dgdCalcs.Refresh();
      添加公式
    4. 添加公式脚本SS_Update_Calculation,
       1 /********************************************************************************
       2 Description.. :    
       3 
       4 Parameters... :    - 
       5 
       6 Returns...... :    - 
       7 
       8 Author....... :    CAOSS
       9 Date......... : 2015-08-27
      10 ********************************************************************************
      11 _______________________________________________________________________________
      12 
      13 Modification. : 
      14 Author....... :    
      15 Date......... :    
      16 _______________________________________________________________________________
      17 ********************************************************************************/;
      18 :PARAMETERS CalcName, Calculation, origrec, CALCDESC;
      19 :DEFAULT CalcName, "";
      20 :DEFAULT Calculation, "";
      21 :DEFAULT origrec, -1;
      22 :DEFAULT CALCDESC, "";
      23 
      24 :DECLARE CalcNames, CurrCalcName,CurrTestCodeAnalyte,CurrTestCode,CurrAnalyte,anaTestCode,testAnalyte,analyteMethod;
      25 
      26 /*region add/update calculation;
      27 :IF Empty(CALCDESC);    
      28     :IF Empty(CalcName);
      29         CalcNames := SqlExecute("select Max(CALCNAME) from CALCS_ACTIONS where CALCNAME like 'CALC%'");
      30         :IF Empty(CalcNames[1,1]);
      31             CurrCalcName := "CALC-" + "00001";
      32         :ELSE;
      33             CurrCalcName := Val(Right(CalcNames[1,1], 5)) + 1;
      34             CurrCalcName := "CALC-" + StrZero(CurrCalcName, 5, 0);
      35         :ENDIF;
      36         SqlExecute("insert into CALCS_ACTIONS (CALCNAME, CALCUL, CALCDESC, FROMDATE) 
      37                         values (?CurrCalcName?, ?Calculation?, ?CurrCalcName?, ?Today()?)");
      38                             
      39         SqlExecute("update DATA_RELATION_CHECK set DATALC_CALCNAME = ?CurrCalcName? where ORIGREC = ?origrec?");
      40         
      41     :ELSE;    
      42         SqlExecute("update CALCS_ACTIONS set CALCUL = ?Calculation? where CALCNAME = ?CalcName?");    
      43         SqlExecute("update DATA_RELATION_CHECK set DATALC_CALCUL = ?Calculation? where DATALC_CALCNAME = ?CalcName?");    
      44     :ENDIF;
      45 :ELSE;
      46     CalcNames := SqlExecute("select Max(CALCNAME) from CALCS_ACTIONS where CALCNAME Like 'CALC%'");
      47     
      48     CurrCalcName := Val(Right(CalcNames[1,1], 5)) + 1;
      49     CurrCalcName := "CALC-" + StrZero(CurrCalcName, 5, 0);
      50     
      51     SqlExecute("insert into CALCS_ACTIONS (CALCNAME, CALCDESC, CALCUL,FROMDATE) 
      52                         select ?CurrCalcName?, ?CALCDESC?, CALCUL,?Today()?
      53                         from    CALCS_ACTIONS 
      54                         where  ORIGREC = (select max(ORIGREC)
      55                                           from CALCS_ACTIONS
      56                                           where CALCDESC=?CALCDESC?)");
      57     SqlExecute("update DATA_RELATION_CHECK set DATALC_CALCUL = ?CALCUL? where DATALC_CALCNAME = ?CalcName?");
      58     SqlExecute("update DATA_RELATION_CHECK set DATALC_CALCNAME = ?CurrCalcName? where ORIGREC = ?origrec?");
      59 :ENDIF;
      60 
      61 :RETURN CurrCalcName;
      添加公式SSL脚本
    5. 多个勾选,如果没有勾选,则默认选定当前选定行
       1 var arrFolders = [];
       2     var arrOris = [];
       3     for(var row in dgFolders.DataSet.Tables[0].Rows) 
       4     {
       5         if(row["SELECTED"] == "Y")//如果勾选的字段为Y,则执行下面的代码 
       6         {
       7             arrFolders = lims.AAdd(arrFolders,row["FOLDERNO"]);//把所有满足条件的FOLDERNO添加到数组中
       8             arrOris = lims.AAdd(arrOris,row["ORIGREC"]);//同上
       9         }
      10     }
      11     if(lims.Len(arrOris) == 0)//如果没有符合条件的,则添加当前行到数组中;
      12     {
      13         arrFolders = dgFolders.GetSelectedRowsData("FOLDERNO");
      14         arrOris = dgFolders.GetSelectedRowsData("ORIGREC");
      15     } 
      设置多行勾选||当前行选定
    6. 循环传入一维数组(存有folderno)返回一维数组ordno;
       1 :PARAMETERS fFOLDERNO;
       2 :DEFAULT fFOLDERNO,"";
       3 :DECLARE StrSql, Results,DataLoop,Result,DataLoop1;
       4 DataLoop := 1;
       5 Results := {};
       6 /*:RETURN LEN(fFOLDERNO);
       7 :WHILE DataLoop <= LEN(fFOLDERNO);
       8     StrSql  := "    SELECT ORDNO FROM ORDERS , FOLDERS
       9                 WHERE ORDERS.FOLDERNO = FOLDERS.FOLDERNO 
      10                 AND FOLDERS.FOLDERNO = ?fFOLDERNO[DataLoop]?
      11                 AND ORDERS.QCTYPE='N/A'";    
      12     Result := SQLEXECUTE(StrSql);
      13     DataLoop1 := 1;
      14     :WHILE DataLoop1 <= LEN(Result);
      15         AADD(Results,Result[DataLoop1]);
      16         DataLoop1 := DataLoop1 + 1;
      17     :ENDWHILE;
      18 /*    :RETURN Results;
      19     DataLoop := DataLoop + 1;
      20     USRMES("Results",Results);
      21 :ENDWHILE;
      22 
      23 :RETURN Results;
      返回ordno一维数组
    7. 传入参数ORDNO调用公式脚本
      1 var reg = lims.CallServer("AppResultByDept.SS_SqlExeCalcul",[Data_Calcul[i],form.Variables["CURRENTORDNO"][k]]);
      调用函数
      1 :PARAMETERS CALCUL, ORENO;
      2 :DEFAULT CALCUL,"";
      3 :DEFAULT ORENO,"";
      4 :RETURN EXECUDF(CALCUL,ORENO);
      View Code
    8. 使用数据集为DataGrid赋值
       1 var dt : System.Data.DataTable = new System.Data.DataTable();//新建数据表格,
       2     dt.Columns.Add("Name");//添加数据表格的格式
       3     dt.Columns.Add("Ordno");
       4     dt.Columns.Add("Result");
       5     dt.Columns.Add("Color");
       6 for(var i= 0; i < lims.Len(Data_Calcul); i++)
       7     {
       8         var name = lims.CallServer("AppResultByDept.SS_GetCalculName",[Data_Calcul[i]]);
       9         for(var k = 0; k < lims.Len(form.Variables["CURRENTORDNO"]) ; k++)
      10         {
      11             var reg = lims.CallServer("AppResultByDept.SS_SqlExeCalcul",[Data_Calcul[i],form.Variables["CURRENTORDNO"][k]]);
      12             if(reg[0] == true)
      13             {
      14                 dt.Rows.Add( name, reg[1] ,reg[2],"Green");//把这行满足公式的数据插入到数据表dt中去
      15             }
      16             else 
      17             {    
      18                 dt.Rows.Add( name, reg[1] ,reg[2],"Red"); //把这行不满足公式的数据插入到数据表dt中去
      19             }
      20         }
      21     }
      22     var ds : System.Data.DataSet = new System.Data.DataSet();//新建数据集
      23     ds.Tables.Add(dt);    //把数据表中的内容添加到数据集中去;
      24     dgCheckResult.DataSet = ds;//然后赋值给DataGrid显示结果
      使用数据集为DataGrid赋值
    9. 使用数据集为DataGrid设置行字体颜色
       1 //   在显示数据的DataGrid中设置AttributesMember的值为能控制颜色的字段的Color,
       2 //   此处在代码中对应的是dt.Columns.Add("Color");,然后在往数据表中填充数据的时候,
       3 //   把该列的值设置成想要设置的颜色即可;
       4 //如下:
       5     dt.Columns.Add("Name");
       6     dt.Columns.Add("Ordno");
       7     dt.Columns.Add("Result");
       8     dt.Columns.Add("Color");
       9     dt.Rows.Add( name, reg[1] ,reg[2],"Green");
      10 //数据表有四列,只要设置第四列的值为颜色的英文即可,在DataGrid中不必添加Color字段,
      11 //但是一定要满足第一行所说的设置属性
      设置行颜色
  • 相关阅读:
    转【jenkins插件】
    【BZOJ】1492: [NOI2007]货币兑换Cash
    【BZOJ】3295: [Cqoi2011]动态逆序对
    【算法专题】卡特兰数(计数数列)
    【CodeForces】908 E. New Year and Entity Enumeration
    【CodeForces】698 C. LRU
    【CodeForces】908 D. New Year and Arbitrary Arrangement
    【BZOJ】4032: [HEOI2015]最短不公共子串(LibreOJ #2123)
    【BZOJ】4596: [Shoi2016]黑暗前的幻想乡
    【BZOJ】4766: 文艺计算姬
  • 原文地址:https://www.cnblogs.com/csschn/p/4915107.html
Copyright © 2011-2022 走看看