Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Recorrer Una Tabla Calendario Y Añadir Los Años Concatenados Sin Duplicarlos (https://www.clubdelphi.com/foros/showthread.php?t=88123)

sorianolloret 15-04-2015 06:51:19

Recorrer Una Tabla Calendario Y Añadir Los Años Concatenados Sin Duplicarlos
 
Buenas tengo el siguiente codigo en un boton calcular datos, el cual recorre una tabla calendario, busca las condiciones para esa fecha en una tabla condiciones, y actualiza una tabla resultado parcial segun los calculos hechos. los registros de la tabla resultado parcial ya estan previamente creados segun las difentes condiciones para cada empleado con los campos a cero.
El problema es que necesito si la fecha a calcular abarca varios años los concatene en la tabla resultado parcial campo año, segun idcondiciones, pero sin duplicar los años.
los años los tengo y guardo como string.
este codigo funciona pero solo almacena el ultimo año valido para cada condicion.
la tabla calculoresultadoparcial es:
si la fecha de baja es null lo controlo asignando eventualmente la fecha de hoy.
COMO PODRIA CONCATENAR LOS AÑOS + ; EN UNA VARIALBLE STRING HE IR ELIMINANDO DE LA MISMA LOS DUPLICADOS?
unit calculoresultadoparcial;

interface

uses
Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.ExtCtrls, Vcl.DBCtrls, Vcl.Grids,
Vcl.DBGrids, Data.DB, Data.Win.ADODB, Vcl.StdCtrls, Vcl.ComCtrls,Math;

type
Tfrmcalculoparcial = class(TForm)
Panel2: TPanel;
Panel7: TPanel;
Panel8: TPanel;
Panel9: TPanel;
DBNavigator3: TDBNavigator;
DBGrid3: TDBGrid;
RadioGroup1: TRadioGroup;
Panel10: TPanel;
Label2: TLabel;
Label3: TLabel;
DateTimePickerdesde: TDateTimePicker;
DateTimePickerhasta: TDateTimePicker;
btnresultadoparcial: TButton;
Panel11: TPanel;
DBNavigator4: TDBNavigator;
DBGrid4: TDBGrid;
ADOConnectionEmpleados: TADOConnection;
DataSourceEmpleados: TDataSource;
ADODataSetEmpleados: TADODataSet;
Panel1: TPanel;
Panel3: TPanel;
DBGrid1: TDBGrid;
Panel12: TPanel;
DBGrid5: TDBGrid;
Panel4: TPanel;
DBNavigator1: TDBNavigator;
Panel5: TPanel;
DBGrid2: TDBGrid;
Panel6: TPanel;
DBNavigator2: TDBNavigator;
DataSourceCalendario: TDataSource;
ADODataSetCalendario: TADODataSet;
ADOConnectionCalendario: TADOConnection;
DataSourceCondiciones: TDataSource;
ADODataSetCondiciones: TADODataSet;
ADOConnectionCondiciones: TADOConnection;
ADOConnectionresultadoparcial: TADOConnection;
DataSourceresultadoparcial: TDataSource;
ADODataSetresultadoparcial: TADODataSet;
btncalcular: TButton;
DBGrid6: TDBGrid;
DBNavigatorcondiciones: TDBNavigator;
DataSourceconvenio: TDataSource;
ADOConnectionconvenio: TADOConnection;
ADODataSetconvenio: TADODataSet;
btnira: TButton;
DateTimePickerira: TDateTimePicker;
procedure FormShow(Sender: TObject);
procedure btncalcularClick(Sender: TObject);
procedure btnresultadoparcialClick(Sender: TObject);
procedure btniraClick(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
frmcalculoparcial: Tfrmcalculoparcial;

implementation

{$R *.dfm}

uses tipodiatrabajado, tipodialibre, tipodebaja, tipodevacaciones, convenio,
progreso;

procedure Tfrmcalculoparcial.btncalcularClick(Sender: TObject);
var
año:integer;
fechacondicioninicio,fechacondicionfinal:string;
fechadesde, fechahasta:Tdate;
diasaño, diastrabajados, diaslibrados, vacacionesdisfrutadas, correspondenlibres:integer;
diassueltossinagrupar, diassueltossinagruparañoanterior, acumuladoañoanterior:integer;
vacacionesnodisfrutadas, correspondenvacaciones, lunestrabajados, martestrabajados:integer;
miercolestrabajados, juevestrabajados, viernestrabajados, sabadostrabajados:integer;
domingostrabajados, lunesnotrabajados, martesnotrabajados:integer;
miercolesnotrabajados, juevesnotrabajados, viernesnotrabajados, sabadosnotrabajados:integer;
diaslibresporconvenio, diasdebaja:integer;
añocerrado, ENCONTRADO:boolean;
CONDICION:INTEGER;
DNI:STRING;
añadiraño:boolean;
contadorfechascalculas:integer;
begin
año:=0;
añadiraño:=true;
adodatasetcalendario.Close;
adodatasetcalendario.Open;
ADODATASETRESULTADOPARCIAL.Close;
ADODATASETRESULTADOPARCIAL.Open;


fechacondicioninicio:=datetostr(datetimepickerdesde.Date);
fechacondicionfinal:=DATETOSTR(datetimepickerhasta.Date);
adodatasetcalendario.First;
DNI:=ADODATASETEMPLEADOS.FieldByName('DNI').Value;

ADODATASETRESULTADOPARCIAL.Close;
ADODATASETRESULTADOPARCIAL.OPEN;

ADODATASETRESULTADOPARCIAL.Edit;
ADODATASETRESULTADOPARCIAL.First;
adodatasetcalendario.locate('DNI;FECHA',Vararrayof([DNI, FECHACONDICIONINICIO]),[loCaseInsensitive, loPartialKey]);


frmprogreso.ProgressBarprogreso.Max:=trunc(DateTimePickerhasta.Date)-trunc(DateTimePickerdesde.Date);
while ((not adodatasetcalendario.Eof) and ((adodatasetcalendario.FieldByName('FECHA').AsDateTime)<=(STRTODATE(fechacondicionfinal)))) do
begin


frmprogreso.ProgressBarprogreso.StepIt;
adodatasetcalendario.Edit;
CONDICION:=ADODATASETCALENDARIO.FieldByName('IDCONDICIONES').Value;
ADODATASETCONDICIONES.First;

adodatasetcondiciones.Locate('IDCONDICIONES',CONDICION, []);




ADODATASETRESULTADOPARCIAL.Edit;
CONDICION:=ADODATASETCALENDARIO.FieldByName('IDCONDICIONES').Value;
ADODATASETRESULTADOPARCIAL.Locate('IDCONDICIONES',CONDICION,[]);
ADODATASETRESULTADOPARCIAL.Edit;
if ADODATASETCALENDARIO.FieldByName('DIASEMANA').VALUE='LUNES' then
BEGIN
ADODATASETRESULTADOPARCIAL.Edit;
adodatasetresultadoparcial.FieldByName('TOTAL LUNES').value:=adodatasetresultadoparcial.FieldByName('TOTAL LUNES').value+1;
END;
if ADODATASETCALENDARIO.FieldByName('DIASEMANA').VALUE='MARTES' then
BEGIN
ADODATASETRESULTADOPARCIAL.Edit;
adodatasetresultadoparcial.FieldByName('TOTAL MARTES').value:=adodatasetresultadoparcial.FieldByName('TOTAL MARTES').value+1;
END;
if ADODATASETCALENDARIO.FieldByName('DIASEMANA').VALUE='MIERCOLES' then
BEGIN
ADODATASETRESULTADOPARCIAL.Edit;
adodatasetresultadoparcial.FieldByName('TOTAL MIERCOLES').value:=adodatasetresultadoparcial.FieldByName('TOTAL MIERCOLES').value+1;
END;
if ADODATASETCALENDARIO.FieldByName('DIASEMANA').VALUE='JUEVES' then
BEGIN
ADODATASETRESULTADOPARCIAL.Edit;
adodatasetresultadoparcial.FieldByName('TOTAL JUEVES').value:=adodatasetresultadoparcial.FieldByName('TOTAL JUEVES').value+1;
END;
if ADODATASETCALENDARIO.FieldByName('DIASEMANA').VALUE='VIERNES' then
BEGIN
ADODATASETRESULTADOPARCIAL.Edit;
adodatasetresultadoparcial.FieldByName('TOTAL VIERNES').value:=adodatasetresultadoparcial.FieldByName('TOTAL VIERNES').value+1;
END;
if ADODATASETCALENDARIO.FieldByName('DIASEMANA').VALUE='SABADO' then
BEGIN
ADODATASETRESULTADOPARCIAL.Edit;
adodatasetresultadoparcial.FieldByName('TOTAL SABADOS').value:=adodatasetresultadoparcial.FieldByName('TOTAL SABADOS').value+1;
END;
if ADODATASETCALENDARIO.FieldByName('DIASEMANA').VALUE='DOMINGO' then
BEGIN
ADODATASETRESULTADOPARCIAL.Edit;
adodatasetresultadoparcial.FieldByName('TOTAL DOMINGOS').value:=adodatasetresultadoparcial.FieldByName('TOTAL DOMINGOS').value+1;
END;

ADODATASETRESULTADOPARCIAL.FieldByName('DIAS AÑO').Value:=365;
if ADODATASETCALENDARIO.FieldByName('BISIESTRO').VALUE=TRUE then
BEGIN
ADODATASETRESULTADOPARCIAL.FieldByName('DIAS AÑO').Value:=366;
END;
//**** AQUI ES DONDE TENGO EL PROBLEMA ***************
ADODATASETRESULTADOPARCIAL.FieldByName('AÑO').Value:=ADODATASETCALENDARIO.FieldByName('AÑO').VALUE;
//************

FRMTIPODIATRABAJADO.ADODataSettipodiatrabajado.First;
while NOT FRMTIPODIATRABAJADO.ADODataSettipodiatrabajado.EOF do
BEGIN
if ADODATASETCALENDARIO.FieldByName('TIPO DIA').Value=FRMTIPODIATRABAJADO.ADODataSettipodiatrabajado.FieldByName('DIATRABAJADO').VALUE then
BEGIN
ADODATASETRESULTADOPARCIAL.FieldByName('DIAS TRABAJADOS').Value:=ADODATASETRESULTADOPARCIAL.FieldByName('DIAS TRABAJADOS').Value +1;
if ADODATASETCALENDARIO.FieldByName('DIASEMANA').VALUE='LUNES' then
BEGIN
ADODATASETRESULTADOPARCIAL.Edit;
adodatasetresultadoparcial.FieldByName('LUNES TRABAJADOS').value:=adodatasetresultadoparcial.FieldByName('LUNES TRABAJADOS').value+1;
END;
//**BORRADO NO CABE EN ESTE MENSAJE, CALCULO HASTA DOMINGOS
END;
FRMTIPODIATRABAJADO.ADODataSettipodiatrabajado.Next;
END;
FRMTIPODIALIBRE.ADODataSettipodialibre.First;
while NOT FRMTIPODIAlibre.ADODataSettipodialibre.EOF do
BEGIN
if ADODATASETCALENDARIO.FieldByName('TIPO DIA').Value=FRMTIPODIAlibre.ADODataSettipodialibre.FieldByName('DIAlibre').VALUE then
BEGIN
ADODATASETRESULTADOPARCIAL.FieldByName('DIAS LIBRADOS').Value:=ADODATASETRESULTADOPARCIAL.FieldByName('DIAS LIBRADOS').Value +1;
if ADODATASETCALENDARIO.FieldByName('DIASEMANA').VALUE='LUNES' then
BEGIN
ADODATASETRESULTADOPARCIAL.Edit;
adodatasetresultadoparcial.FieldByName('LUNES NO TRABAJADOS').value:=adodatasetresultadoparcial.FieldByName('LUNES NO TRABAJADOS').value+1;
END;
if ADODATASETCALENDARIO.FieldByName('DIASEMANA').VALUE='MARTES' then
BEGIN
ADODATASETRESULTADOPARCIAL.Edit;
adodatasetresultadoparcial.FieldByName('MARTES NO TRABAJADOS').value:=adodatasetresultadoparcial.FieldByName('MARTES NO TRABAJADOS').value+1;
END;
if ADODATASETCALENDARIO.FieldByName('DIASEMANA').VALUE='MIERCOLES' then
BEGIN
ADODATASETRESULTADOPARCIAL.Edit;
adodatasetresultadoparcial.FieldByName('MIERCOLES NO TRABAJADOS').value:=adodatasetresultadoparcial.FieldByName('MIERCOLES NO TRABAJADOS').value+1;
END;
if ADODATASETCALENDARIO.FieldByName('DIASEMANA').VALUE='JUEVES' then
BEGIN
ADODATASETRESULTADOPARCIAL.Edit;
adodatasetresultadoparcial.FieldByName('JUEVES NO TRABAJADOS').value:=adodatasetresultadoparcial.FieldByName('JUEVES NO TRABAJADOS').value+1;
END;
if ADODATASETCALENDARIO.FieldByName('DIASEMANA').VALUE='VIERNES' then
BEGIN
ADODATASETRESULTADOPARCIAL.Edit;
adodatasetresultadoparcial.FieldByName('VIERNES NO TRABAJADOS').value:=adodatasetresultadoparcial.FieldByName('VIERNES NO TRABAJADOS').value+1;
END;
if ADODATASETCALENDARIO.FieldByName('DIASEMANA').VALUE='SABADO' then
BEGIN
ADODATASETRESULTADOPARCIAL.Edit;
adodatasetresultadoparcial.FieldByName('SABADOS NO TRABAJADOS').value:=adodatasetresultadoparcial.FieldByName('SABADOS NO TRABAJADOS').value+1;
END;
if ADODATASETCALENDARIO.FieldByName('DIASEMANA').VALUE='DOMINGO' then
BEGIN
ADODATASETRESULTADOPARCIAL.Edit;
adodatasetresultadoparcial.FieldByName('DOMINGOS NO TRABAJADOS').value:=adodatasetresultadoparcial.FieldByName('DOMINGOS NO TRABAJADOS').value+1;
END;
END;
FRMTIPODIALIBRE.ADODataSettipodiaLIBRE.Next;
END;
FRMTIPODEVACACIONES.ADODataSetTIPODEVACACIONES.First;
while NOT FRMTIPODEvacaciones.ADODataSettipoDEvacaciones.EOF do
BEGIN
if ADODATASETCALENDARIO.FieldByName('TIPO DIA').Value=FRMTIPODEvacaciones.ADODataSettipoDEVACACIONES.FieldByName('DIAVACACIONES').VALUE then
BEGIN
ADODATASETRESULTADOPARCIAL.FieldByName('VACACIONES DISFRUTADAS').Value:=ADODATASETRESULTADOPARCIAL.FieldByName('VACACIONES DISFRUTADAS').Value +1;
if ADODATASETCALENDARIO.FieldByName('DIASEMANA').VALUE='LUNES' then
BEGIN
ADODATASETRESULTADOPARCIAL.Edit;
adodatasetresultadoparcial.FieldByName('LUNES NO TRABAJADOS').value:=adodatasetresultadoparcial.FieldByName('LUNES NO TRABAJADOS').value+1;
END;
if ADODATASETCALENDARIO.FieldByName('DIASEMANA').VALUE='MARTES' then
BEGIN
ADODATASETRESULTADOPARCIAL.Edit;
adodatasetresultadoparcial.FieldByName('MARTES NO TRABAJADOS').value:=adodatasetresultadoparcial.FieldByName('MARTES NO TRABAJADOS').value+1;
END;
if ADODATASETCALENDARIO.FieldByName('DIASEMANA').VALUE='MIERCOLES' then
BEGIN
ADODATASETRESULTADOPARCIAL.Edit;
adodatasetresultadoparcial.FieldByName('MIERCOLES NO TRABAJADOS').value:=adodatasetresultadoparcial.FieldByName('MIERCOLES NO TRABAJADOS').value+1;
END;
if ADODATASETCALENDARIO.FieldByName('DIASEMANA').VALUE='JUEVES' then
BEGIN
ADODATASETRESULTADOPARCIAL.Edit;
adodatasetresultadoparcial.FieldByName('JUEVES NO TRABAJADOS').value:=adodatasetresultadoparcial.FieldByName('JUEVES NO TRABAJADOS').value+1;
END;
if ADODATASETCALENDARIO.FieldByName('DIASEMANA').VALUE='VIERNES' then
BEGIN
ADODATASETRESULTADOPARCIAL.Edit;
adodatasetresultadoparcial.FieldByName('VIERNES NO TRABAJADOS').value:=adodatasetresultadoparcial.FieldByName('VIERNES NO TRABAJADOS').value+1;
END;
if ADODATASETCALENDARIO.FieldByName('DIASEMANA').VALUE='SABADO' then
BEGIN
ADODATASETRESULTADOPARCIAL.Edit;
adodatasetresultadoparcial.FieldByName('SABADOS NO TRABAJADOS').value:=adodatasetresultadoparcial.FieldByName('SABADOS NO TRABAJADOS').value+1;
END;
if ADODATASETCALENDARIO.FieldByName('DIASEMANA').VALUE='DOMINGO' then
BEGIN
ADODATASETRESULTADOPARCIAL.Edit;
adodatasetresultadoparcial.FieldByName('DOMINGOS NO TRABAJADOS').value:=adodatasetresultadoparcial.FieldByName('DOMINGOS NO TRABAJADOS').value+1;
END;
END;

FRMTIPODEvacaciones.ADODataSettipoDEvacaciones.Next;
END;

FRMTIPODEBAJA.ADODataSettipoDEBAJA.First;
while NOT FRMTIPODEBAJA.ADODataSettipoDEBAJA.EOF do
BEGIN
if ADODATASETCALENDARIO.FieldByName('TIPO DIA').Value=FRMTIPODEBAJA.ADODataSettipoDEBAJA.FieldByName('DIABAJA').VALUE then
BEGIN
ADODATASETRESULTADOPARCIAL.FieldByName('DIAS DE BAJA').Value:=ADODATASETRESULTADOPARCIAL.FieldByName('DIAS DE BAJA').Value +1;
if ADODATASETCALENDARIO.FieldByName('DIASEMANA').VALUE='LUNES' then
BEGIN
ADODATASETRESULTADOPARCIAL.Edit;
adodatasetresultadoparcial.FieldByName('LUNES NO TRABAJADOS').value:=adodatasetresultadoparcial.FieldByName('LUNES NO TRABAJADOS').value+1;
END;
if ADODATASETCALENDARIO.FieldByName('DIASEMANA').VALUE='MARTES' then
BEGIN
ADODATASETRESULTADOPARCIAL.Edit;
adodatasetresultadoparcial.FieldByName('MARTES NO TRABAJADOS').value:=adodatasetresultadoparcial.FieldByName('MARTES NO TRABAJADOS').value+1;
END;
if ADODATASETCALENDARIO.FieldByName('DIASEMANA').VALUE='MIERCOLES' then
BEGIN
ADODATASETRESULTADOPARCIAL.Edit;
adodatasetresultadoparcial.FieldByName('MIERCOLES NO TRABAJADOS').value:=adodatasetresultadoparcial.FieldByName('MIERCOLES NO TRABAJADOS').value+1;
END;
if ADODATASETCALENDARIO.FieldByName('DIASEMANA').VALUE='JUEVES' then
BEGIN
ADODATASETRESULTADOPARCIAL.Edit;
adodatasetresultadoparcial.FieldByName('JUEVES NO TRABAJADOS').value:=adodatasetresultadoparcial.FieldByName('JUEVES NO TRABAJADOS').value+1;
END;
if ADODATASETCALENDARIO.FieldByName('DIASEMANA').VALUE='VIERNES' then
BEGIN
ADODATASETRESULTADOPARCIAL.Edit;
adodatasetresultadoparcial.FieldByName('VIERNES NO TRABAJADOS').value:=adodatasetresultadoparcial.FieldByName('VIERNES NO TRABAJADOS').value+1;
END;
if ADODATASETCALENDARIO.FieldByName('DIASEMANA').VALUE='SABADO' then
BEGIN
ADODATASETRESULTADOPARCIAL.Edit;
adodatasetresultadoparcial.FieldByName('SABADOS NO TRABAJADOS').value:=adodatasetresultadoparcial.FieldByName('SABADOS NO TRABAJADOS').value+1;
END;
if ADODATASETCALENDARIO.FieldByName('DIASEMANA').VALUE='DOMINGO' then
BEGIN
ADODATASETRESULTADOPARCIAL.Edit;
adodatasetresultadoparcial.FieldByName('DOMINGOS NO TRABAJADOS').value:=adodatasetresultadoparcial.FieldByName('DOMINGOS NO TRABAJADOS').value+1;
END;
END;

FRMTIPODEBAJA.ADODataSettipoDEBAJA.Next;
ADODataSetConvenio.First;
while NOT ADODataSetConvenio.Eof do
BEGIN
if ADODATASETCALENDARIO.FieldByName('FECHA').Value=ADODataSetConvenio.FieldByName('FECHA').Value then
BEGIN
ADODATASETRESULTADOPARCIAL.Edit;
ADODATASETRESULTADOPARCIAL.FieldByName('DIAS LIBRES POR CONVENIO').Value:=ADODATASETRESULTADOPARCIAL.FieldByName('DIAS LIBRES POR CONVENIO').Value+ADODataSetConvenio.FieldByName('FACTOR').VALUE;
END;
ADODataSetConvenio.Next;
END;





ADODATASETCALENDARIO.Next;
END;
ADODATASETRESULTADOPARCIAL.Edit;
if ADODATASETRESULTADOPARCIAL.FieldByName('IDCONDICIONES').Value>0 then
BEGIN
ADODATASETRESULTADOPARCIAL.FieldByName('TOTAL DIAS DE ALTA').Value:=ADODATASETRESULTADOPARCIAL.FieldByName('TOTAL DIAS DE ALTA').Value+1;
END
ELSE
BEGIN
ADODATASETRESULTADOPARCIAL.FieldByName('TOTAL DIAS DE ALTA').Value:=0;
END;

end;
ADODATASETRESULTADOPARCIAL.Post;
ADODATASETRESULTADOPARCIAL.Edit;





ADODATASETRESULTADOPARCIAL.First;
while NOT ADODATASETresultadoparcial.Eof do
BEGIN
ADODATASETRESULTADOPARCIAL.Edit;
condicion:=ADODATASETRESULTADOPARCIAL.FieldByName('IDCONDICIONES').Value;
ADODATASETRESULTADOPARCIAL.Edit;
ADODATASETcondiciones.Locate('IDCONDICIONES',CONDICION,[]);
ADODATASETRESULTADOPARCIAL.Edit;
if ADODATASETCONDICIONES.FieldByName('DIASTRABAJA').IsNull then
BEGIN
ADODATASETRESULTADOPARCIAL.FieldByName('CORRESPONDEN LIBRES').Value:=0;
END
ELSE
BEGIN
ADODATASETRESULTADOPARCIAL.FieldByName('CORRESPONDEN LIBRES').Value:=ROUNDTO((ADODATASETRESULTADOPARCIAL.FieldByName('DIAS TRABAJADOS').Value)/ADODATASETCONDICIONES.FieldByName('DIASTRABAJA').Value,-2);
END;
ADODATASETRESULTADOPARCIAL.Edit;
if ADODATASETCONDICIONES.FieldByName('DIASTRABAJA').IsNull then
BEGIN
ADODATASETRESULTADOPARCIAL.FieldByName('DIAS SUELTOS SIN AGRUPAR').Value:=0;
END
ELSE
BEGIN
ADODATASETRESULTADOPARCIAL.FieldByName('DIAS SUELTOS SIN AGRUPAR').Value:=(ADODATASETRESULTADOPARCIAL.FieldByName('DIAS TRABAJADOS').Value) MOD (ADODATASETCONDICIONES.FieldByName('DIASTRABAJA').Value);
END;

ADODATASETRESULTADOPARCIAL.Edit;
if ADODATASETCONDICIONES.FieldByName('DIASTRABAJA').IsNull then
BEGIN
ADODATASETRESULTADOPARCIAL.FieldByName('CORRESPONDEN VACACIONES').Value:=0;
END
ELSE
BEGIN
if ADODATASETRESULTADOPARCIAL.FieldByName('IDCONDICIONES').Value>0 then
BEGIN
ADODATASETRESULTADOPARCIAL.FieldByName('CORRESPONDEN VACACIONES').AsCurrency:=roundto((ADODATASETRESULTADOPARCIAL.FieldByName('TOTAL DIAS DE ALTA').Value*ADODATASETCONDICIONES.FieldByName('VACACIONES ANUALES').Value) / 365,-2);
END
ELSE
BEGIN
ADODATASETRESULTADOPARCIAL.FieldByName('CORRESPONDEN VACACIONES').Value:=0;
END;
END;

ADODATASETRESULTADOPARCIAL.Edit;
if ADODATASETCONDICIONES.FieldByName('DIASTRABAJA').IsNull then
BEGIN
ADODATASETRESULTADOPARCIAL.FieldByName('VACACIONES NO DISFRUTADAS').Value:=0;
END
ELSE
BEGIN
// ADODATASETRESULTADOPARCIAL.FieldByName('VACACIONES NO DISFRUTADAS').AsCurrency:=(ADODATASETRESULTADOPARCIAL.FieldByName('TOTAL DIAS DE ALTA').Value*ADODATASETCONDICIONES.FieldByName('VACACIONES ANUALES').Value) / 365;
END;
if adodatasetresultadoparcial.FieldByName('IDCONDICIONES').Value>0 then
BEGIN
ADODATASETRESULTADOPARCIAL.FieldByName('VACACIONES NO DISFRUTADAS').AsCurrency:=roundto(ADODATASETRESULTADOPARCIAL.FieldByName('CORRESPONDEN VACACIONES').ASCURRENCY-ADODATASETRESULTADOPARCIAL.FieldByName('VACACIONES DISFRUTADAS').Value,-2);
END
ELSE
BEGIN
adodatasetresultadoparcial.FieldByName('VACACIONES NO DISFRUTADAS').Value:=0;
END;
ADODATASETRESULTADOPARCIAL.Post;
ADODATASETRESULTADOPARCIAL.Next;
ADODATASETCALENDARIO.First;
frmprogreso.ProgressBarprogreso.StepIt;
END;


end;

AgustinOrtu 15-04-2015 07:32:45

Buenas sorianolloret

Creo que no entendi nada, solamente se me ocurre que si son varios años, guardar algo como esto en tu tabla:

"01/01/2000 - 01/01/2015"

Eso lo podrias hacer masomenos asi:

Código Delphi [-]
interface

  function ConcatDates(DateFrom, DateTo: TDate): string; overload;
  function ConcatDates(DateFrom, DateTo: string): string; overload;

implementation

function ConcatDates(DateFrom, DateTo: TDate): string;
begin
  Result := ConcatDates(DateToStr(DateFrom), DateToStr(DateTo));
end;

function ConcatDates(DateFrom, DateTo: string): string;
begin
  Result := Format('%s - %s', [DateFrom, DateTo]);
end;

Y un ejemplo de llamada

Código Delphi [-]
procedure TForm1.Button1Click(Sender: TObject);
var
    DateFrom, DateTo: TDate;
    sDateFrom, sDateTo: string;
begin
    DateFrom := EncodeDate(2000, 1, 1);
    DateTo := EncodeDate(2015, 1, 1);
    sDateFrom := '01/01/2000';
    sDateTo := '01/01/2015';

    ShowMessageFmt('Mandando dates: %s', [ConcatDates(DateFrom, DateTo)]);
    ShowMessageFmt('Mandando strings: %s', [ConcatDates(sDateFrom, sDateTo)]);
end;

Saludos y person si no entendi bien


La franja horaria es GMT +2. Ahora son las 19:42:34.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi