Официальный форум Simple-Scada.
var aVirtual: Int64; {Обновляем таблицу tblSpisok_TH03 "Перечень компонентов ручного ввода"} procedure UpdateTableTH03; var aQuery:string; begin aQuery := 'SELECT AR.AR_ARTICLE_ID AS AR_ARTICLE_ID '+ ',AR.AR_NAME AS AR_NAME'+ ',CASE WHEN SUM(ROUND(TMP.TDB_DOSINGWEIGHT, 2)) = SUM(ROUND(TMP.TDB_DOSINGWEIGHT, 0)) '+ 'THEN '+ 'CONVERT(varchar(10), SUM(TMP.TDB_DOSINGWEIGHT)) + ''.00'' '+ 'ELSE '+ 'CASE WHEN SUM(ROUND(TMP.TDB_DOSINGWEIGHT, 2)) = SUM(ROUND(TMP.TDB_DOSINGWEIGHT, 1)) '+ 'THEN '+ 'CONVERT(varchar(10), SUM(TMP.TDB_DOSINGWEIGHT)) + ''0'' '+ 'ELSE '+ 'CONVERT(varchar(10), SUM(ROUND(TMP.TDB_DOSINGWEIGHT, 2))) '+ 'END '+ 'END AS TDB_DOSINGWEIGHT '+ ',CASE TMP.TDB_ACTIVE WHEN 1 THEN ''Добавлен'' ELSE '''' end AS ACTIVE '+ 'FROM TMP_DOSINGBATCHES TMP '+ 'INNER JOIN CFG_BATCHES BD ON BD.BD_PLC_BATCHNUMBER = TMP.TDB_PLC_BATCHNUMBER '+ 'INNER JOIN CFG_RAWMATERIAL RM ON RM.RM_RAWMAT_ID = TMP.TDB_RAWMAT_ID '+ 'INNER JOIN CFG_ARTICLE AR ON AR.AR_ARTICLE_ID = RM.RM_RAWMAT_ID '+ 'WHERE BD_BATCHNUMBER = (SELECT MAX(BD_BATCHNUMBER) '+ 'FROM CFG_BATCHES '+ 'INNER JOIN TMP_DOSINGBATCHES ON TDB_PLC_BATCHNUMBER = BD_PLC_BATCHNUMBER '+ 'INNER JOIN CFG_WEIGHER ON WG_WEIGHER_ID = TDB_WEIGHER_ID '+ 'INNER JOIN CFG_UNITS ON UN_BATCHNUMBER = BD_BATCHNUMBER '+ 'INNER JOIN CFG_UNIT_DEVICES ON UN_UNIT_ID = UDS_UNIT_ID AND WG_DEVICE_ID = UDS_DEVICE_ID '+ 'AND UN_BATCHNUMBER > 1 '+ 'AND TDB_WEIGHER_ID = 6) '+ 'AND TMP.TDB_WEIGHER_ID = 6 '+ 'AND TMP.TDB_MODIFYTYPE <> ''D'' '+ 'GROUP BY TMP.TDB_PLC_BATCHNUMBER'+ ',RTRIM(AR.AR_ARTICLECODE)'+ ',AR.AR_NAME '+ ',AR.AR_ARTICLE_ID '+ ',TMP.TDB_WEIGHER_ID '+ ',TMP.TDB_ACTIVE '+ 'ORDER BY TMP.TDB_PLC_BATCHNUMBER, MIN(TDB_SEQUENCENUMBER) '; tblSpisok_TH03.RunSQL(aQuery, tsSaveFixRow); end; {Процедура проверяет все ли сырье добавлено} procedure CheckAddedTableTH03; var aQuery:string; begin aQuery := 'SELECT CASE WHEN sum(convert(int,TMP.TDB_ACTIVE)) = COUNT(*) '+ 'THEN 1 '+ 'ELSE 0 '+ 'END AS TMP_READY '+ 'FROM TMP_DOSINGBATCHES TMP '+ 'INNER JOIN CFG_BATCHES BD ON BD.BD_PLC_BATCHNUMBER = TMP.TDB_PLC_BATCHNUMBER '+ 'INNER JOIN CFG_RAWMATERIAL RM ON RM.RM_RAWMAT_ID = TMP.TDB_RAWMAT_ID '+ 'INNER JOIN CFG_ARTICLE AR ON AR.AR_ARTICLE_ID = RM.RM_RAWMAT_ID '+ 'WHERE BD_BATCHNUMBER = (SELECT MAX(BD_BATCHNUMBER) '+ 'FROM CFG_BATCHES '+ 'INNER JOIN TMP_DOSINGBATCHES ON TDB_PLC_BATCHNUMBER = BD_PLC_BATCHNUMBER '+ 'INNER JOIN CFG_WEIGHER ON WG_WEIGHER_ID = TDB_WEIGHER_ID '+ 'INNER JOIN CFG_UNITS ON UN_BATCHNUMBER = BD_BATCHNUMBER '+ 'INNER JOIN CFG_UNIT_DEVICES ON UN_UNIT_ID = UDS_UNIT_ID AND WG_DEVICE_ID = UDS_DEVICE_ID '+ 'AND UN_BATCHNUMBER > 1 '+ 'AND TDB_WEIGHER_ID = 6) '+ 'AND TMP.TDB_WEIGHER_ID = 6 '+ 'AND TMP.TDB_MODIFYTYPE <> ''D'''; RunSQL(aQuery, nil, 54); end;{********************************************************************************************}begin if DataSet.Tag = 50 then vPM01_ID.Value := DataSet[0].AsStr; if DataSet.Tag = 51 then vMB02_ID.Value := DataSet[0].AsStr; if DataSet.Tag = 52 then begin imgLoading_1.Visible:=false; imgLoading_2.Visible:=false; btnReport_reload.States[0].FontAlpha:=179; //tblReport_dosing.Alpha:=255; end; if DataSet.Tag = 53 then {Обнавляем таблицу tblSpisok_TH03 после отметки строки} begin UpdateTableTH03; CheckAddedTableTH03; end;end.
процедуру не нужно обьявлять в var области?