unit frmSarzeVydej; interface uses Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics, Vcl.Controls, Vcl.Forms, Vcl.Dialogs, ddPlugin_TLB, Vcl.ExtCtrls, Vcl.StdCtrls, Data.DB, Vcl.Grids, Vcl.DBGrids, JvDBUltimGrid, JvExDBGrids, JvDBGrid, JvExControls, JvSpeedButton; type TformSarzeVydej = class(TForm) GridPanel1: TGridPanel; GridPanel2: TGridPanel; GridPanel3: TGridPanel; btnOK: TButton; btnZrusit: TButton; grdMaterial: TJvDBUltimGrid; grdSarze: TJvDBUltimGrid; btnAdd: TJvSpeedButton; btnDel: TJvSpeedButton; procedure btnOKClick (Sender: TObject); procedure btnZrusitClick (Sender: TObject); procedure FormShow(Sender: TObject); procedure grdMaterialCellClick(Column: TColumn); procedure grdSarzeCanEditCell(Grid: TJvDBGrid; Field: TField; var AllowEdit: Boolean); procedure btnAddClick(Sender: TObject); procedure btnDelClick(Sender: TObject); private function TestOK: boolean; public idVydejka: integer; sIdPohybuOZ: string; Helios: IHelios; mrVal: integer; retOK: boolean; end; var formSarzeVydej: TformSarzeVydej; idKZ, idPZ: integer; implementation uses System.StrUtils, datMod, helUtils; {$R *.dfm} function TformSarzeVydej.TestOK: Boolean; var i: integer; begin result:= true; if (dm.vtMaterial.RecordCount>0) then begin dm.vtMaterial.DisableControls; i:= dm.vtMaterial.RecNo; dm.vtMaterial.First; while not(dm.vtMaterial.Eof) do begin if not(dm.vtMaterial.FieldByName('colMamSarzi').AsBoolean) then result:= false; dm.vtMaterial.Next; end; dm.vtMaterial.RecNo:= i; dm.vtMaterial.EnableControls; end; end; procedure TformSarzeVydej.btnAddClick (Sender: TObject); var s: string; begin s:= InputBox ('ŠARŽE', 'Zadejte šarži materiálu:', '').Trim; if (s<>'') then begin if not(dm.vtSarze.Active) then dm.vtSarze.Open; dm.vtSarze.Append; dm.vtSarze.FieldByName('colSarze').AsString:= s; dm.vtSarze.FieldByName('colMnoz').AsInteger:= 0; dm.vtSarze.FieldByName('colIDKmen').AsInteger:= idKZ; dm.vtSarze.FieldByName('colIDPohybOZ').AsInteger:= idPZ; dm.vtSarze.Post; dm.vtMaterial.Edit; dm.vtMaterial.FieldByName('colMamSarzi').AsBoolean:= true; dm.vtMaterial.Post; end; end; procedure TformSarzeVydej.btnDelClick (Sender: TObject); var f: string; begin if not(dm.vtSarze.Active) then dm.vtSarze.Open; if not(dm.vtSarze.IsEmpty) then dm.vtSarze.Delete; dm.vtSarze.Refresh; if (dm.vtSarze.IsEmpty) then begin dm.vtMaterial.Edit; dm.vtMaterial.FieldByName('colMamSarzi').AsBoolean:= false; dm.vtMaterial.Post; end; end; procedure TformSarzeVydej.btnOKClick (Sender: TObject); var lSQL, s: string; idPZ: Integer; begin if (dm.vtMaterial.RecordCount>0) then begin if (TestOK) then begin dm.vtSarze.Filtered:= false; if not(dm.vtSarze.IsEmpty) then begin dm.vtSarze.First; while not(dm.vtSarze.Eof) do begin idPZ:= dm.vtSarze.FieldByName('colIDPohybOZ').AsInteger; lSQL:= 'INSERT dbo._TabVyroba_VydejMatSarze (IDPohybZbozi, Sarze) SELECT ' + idPZ.ToString + ', N' + dm.vtSarze.FieldByName('colSarze').AsString.Trim.QuotedString; Helios.ExecSQL(lSQL); s:= helUtils.getHeliosStrVal(Helios, '', 'SELECT _Vyroba_Sarze FROM ' + tblPZe + ' WHERE ID=' + idPZ.ToString); s:= s + IfThen(s<>'', ',', '') + dm.vtSarze.FieldByName('colSarze').AsString.Trim; lSQL:= 'UPDATE ' + tblPZe + ' SET _Vyroba_Sarze=N' + s.QuotedString; lSQL:= lSQL + ' WHERE ID=' + dm.vtSarze.FieldByName('colIDPohybOZ').AsString + CRLF + 'IF (@@ROWCOUNT=0) INSERT ' + tblPZe + ' (ID, _Vyroba_Sarze)'; lSQL:= lSQL + ' SELECT ' + dm.vtSarze.FieldByName('colIDPohybOZ').AsString + ', N' + s.QuotedString; Helios.ExecSQL(lSQL); dm.vtSarze.Next; end; end; mrVal:= 10; Close; end; end else begin mrVal:= 10; Close; end; end; procedure TformSarzeVydej.btnZrusitClick (Sender: TObject); begin mrVal:= 0; Close; end; procedure TformSarzeVydej.FormShow (Sender: TObject); begin if (idVydejka>0) or (sIdPohybuOZ<>'') then begin dm.NactiMaterialyProSarze (idVydejka, sIdPohybuOZ); grdMaterial.Invalidate; end; end; procedure TformSarzeVydej.grdMaterialCellClick (Column: TColumn); begin idKZ:= dm.vtMaterial.FieldByName('colIDKmen').AsInteger; idPZ:= dm.vtMaterial.FieldByName('colIDPohyb').AsInteger; dm.NactiSarzeProMaterial (idKZ, idPZ); dm.vtSarze.Filter:= 'colIDKmen=' + idKZ.ToString; dm.vtSarze.Filtered:= true; grdSarze.Invalidate; end; procedure TformSarzeVydej.grdSarzeCanEditCell(Grid: TJvDBGrid; Field: TField; var AllowEdit: Boolean); begin AllowEdit:= (Field=dm.vtSarze.FieldByName('colMnoz')); end; end.