unit frmVPrZmenaPlanuUkonceni; interface uses Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics, Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls, Vcl.ComCtrls, NxGridView6, NxColumns6, NxControls6, NxCustomGrid6, NxVirtualGrid6, NxGrid6, ddPlugin_TLB; type TformVPrZmenaPlanuUkonceni = class(TForm) grdPrikazy: TNextGrid6; cbZmenaVPlanu: TCheckBox; dtPlanUkonceni: TDateTimePicker; Label1: TLabel; lblPrikaz: TLabel; Label2: TLabel; btnOK: TButton; btnStorno: TButton; grdPrikazyView: TNxReportGridView6; colZmena: TNxCheckBoxColumn6; colRadaPrikaz: TNxTextColumn6; colNazev1: TNxTextColumn6; lblDilec: TLabel; colID: TNxIncrementColumn6; procedure FormShow (Sender: TObject); procedure btnStornoClick (Sender: TObject); procedure btnOKClick (Sender: TObject); private { Private declarations } public Helios: IHelios; idVPr: integer; end; var formVPrZmenaPlanuUkonceni: TformVPrZmenaPlanuUkonceni; implementation uses System.StrUtils, helUtils; {$R *.dfm} procedure TformVPrZmenaPlanuUkonceni.btnOKClick (Sender: TObject); var lSQL: string; i: integer; zmeny, eMsg: string; canCont: boolean; begin zmeny := ''; for i:=0 to grdPrikazy.RowCount-1 do zmeny := zmeny + IfThen(grdPrikazy.Cell[0, i].AsBoolean, '1', '0') + ','; if (zmeny<>'') then zmeny := LeftStr(zmeny, zmeny.Length-1); // odstran koncovou carku canCont := true; if (zmeny.LastIndexOf('0')0) then eMsg := FieldByNameValues('ErrMsg') else eMsg := 'Nemám zpětnou vazbu z výpočtu dat zahájení/ukončení'; if (eMsg<>'') then Helios.Error (#1 + eMsg + #1) else Close; except on E:Exception do Helios.Error (#1'Chyba zpracování: '#1 + E.Message); end; end else Helios.Error (#1'V řadě příkazů s povolenou změnou plánovaného data ukončení nesmí být příkaz bez změny.'#1); end; procedure TformVPrZmenaPlanuUkonceni.btnStornoClick (Sender: TObject); begin Close; end; procedure TformVPrZmenaPlanuUkonceni.FormShow (Sender: TObject); var lSQL: string; pSZ, pRC, pNazev1, pRPr: string; pStav, pUroven: byte; cnt: integer; begin grdPrikazy.RowCount := 0; self.Height := 325; lblPrikaz.Caption := ''; lblDilec.Caption := ''; dtPlanUkonceni.Date := Now; if (idVPr>0) then begin pSZ := ''; lSQL := 'SELECT p.RadaPrikaz, k.SkupZbo, k.RegCis, k.Nazev1, p.StavPrikazu, p.UrovenVnoreni, p.Plan_ukonceni_X FROM ' + tblVPr + ' p JOIN ' + tblKZ + ' k ON (k.ID=p.IDTabKmen) WHERE p.ID=' + idVPr.ToString; with Helios.OpenSQL (lSQL) do if not(EOF) then begin First; pSZ := FieldByNameValues('SkupZbo'); pRC := FieldByNameValues('RegCis'); pNazev1 := FieldByNameValues('Nazev1'); pRPr := FieldByNameValues('RadaPrikaz'); pStav := FieldByNameValues('StavPrikazu'); pUroven := FieldByNameValues('UrovenVnoreni'); lblPrikaz.Caption := pRPr + ' ' + pRC; lblDilec.Caption := pNazev1; dtPlanUkonceni.Date := FieldByNameValues('Plan_ukonceni_X'); end; if (pSZ<>'') then begin lSQL := 'SELECT p.RadaPrikaz, k.SkupZbo, k.RegCis, k.Nazev1, p.StavPrikazu, p.UrovenVnoreni FROM ' + tblVPr + ' p JOIN ' + tblKZ + ' k ON (k.ID=p.IDTabKmen) WHERE p.IDPrikazRidici=' + idVPr.ToString + ' AND p.UrovenVnoreni>' + pUroven.ToString + ' AND p.StavPrikazu IN (20,30) /*AND k.SkupZbo LIKE N''P[45]%''*/ ORDER BY p.UrovenVnoreni, k.SkupZbo DESC'; with Helios.OpenSQL (lSQL) do if (RecordCount>0) then begin cnt := 0; First; while not(EOF) do begin Inc (cnt); grdPrikazy.RowCount := cnt; pSZ := FieldByNameValues('SkupZbo'); if (LeftStr(pSZ,2)='P4') or (LeftStr(pSZ,2)='P5') then grdPrikazy.Cell [0, cnt-1].AsBoolean := true; grdPrikazy.Cells [1, cnt-1] := FieldByNameValues('RadaPrikaz'); grdPrikazy.Cells [2, cnt-1] := FieldByNameValues('Nazev1'); grdPrikazy.Cells [3, cnt-1] := cnt.ToString; self.Height := self.Height + 28; Next; end; end; end; end; end; end.