![]() |
Calculo de Años
Necesito calcular los anos transcurridos entre el año de compra de una producto el cual lo introdusco a una tabla mediante un dbedit, y la fecha actual que posee la computador.
Ejemplo: AÑo de compra: 1999 Año actual : 2004 Resultado: 5 Precisaria que si se puede me pasen todo el codigo completo del calculo. Desde ya muchas gracias. Aclaración: trabajo en Delphi 5 entreprice y con tablas paradox 7 |
Me suena que hay una función, pero como no tengo el Delphi delante....
Código:
var Cita:
|
Calculo de anio
CADETILL UTILICE EL SIGUIENTE CODIGO :
procedure TModeloDatos.TblMuebleCalcFields(DataSet: TDataSet); Var D, M, AIni, AFin : Word; Begin DecodeDate(AFin, M, D, Date); AIni:=ModeloDatos.TblMueble.FieldValues['Añocompra']; ShowMessage('Diferencia de años : ' + IntToStr(AFin - AIni)); end; PARA CALCULAR LOS ANOS TRANSCURRIDOS ENTRE EL AÑO DE COMPRA DE UN PRODUCTO Y EL ACTUAL Y ME DA EL SIGUIENTE ERROR: [Error] ModDat.pas(104): Types of actual and formal var parameters must be identical [Fatal Error] CStock.dpr(15): Could not compile used unit 'ModDat.pas' Y NO SE COMO ARREGLARLO Saludos, jrcosta75 |
Código:
procedure TForm1.Button1Click(Sender: TObject); |
se supone que
Código:
ModeloDatos.TblMueble.FieldValues['Añocompra'] Pues entonces has de hacer lo que te proponia en el mensaje anterior Código:
var |
pregunta
que ocurre si compro algo el 31/12/03 y lo vendo el 01/01/04. ?
que resultado debe dar? deberia dar 0 años. no? creo que no habria querestar solo los años, sino tener en cuenta toda la fecha. :confused: |
manrueda... yo intento poner mi granito de arena conforme a mis conocimientos (o capacidad de búsqueda de información), es verdad lo que dices, debería de dar la fecha completa, el caso es que no se :d
|
Código:
FecNac: Fecha de Nacimiento FecAct: Fecha Actual o fecha a la cual se quiere calcular la edad Cualquier duda pregunten, esta funcion esta 100% operativa |
sin animo de ofender
darkbyte, no tenia intencion de infravalorar tus conocimientos . Seguro que son superiores a los mios. solamente que anoche viendo esta pregunta se me ocurrio que podria tener esa pega. Que ademas es muy comun , no solo en programacion sino en cualquier ambito de la vida, cuando calculamos el tiempo transcurrido entre dos fechas. Solo di mi punto de vista. Espero no ofender a nadie. Aqui estamos para aprender y compartir conocimientos, ya que 4 ojos ven mas que 2. Son muchas las veces que alguien de este foro me ha ayudado con algun problema, o me ha aclarado alguno duda. un :) saludo.
|
Me alegro de la aclaración hecha pues DarkByte es un asiduo coloborador del Club, por otra parte añadir que si restamos 2 fechas es decir dos variables del tipo Tdate, obtenemos días:
Código:
procedure TForm1.Button1Click(Sender: TObject); Lo que propongo como solución sería restar los 2 fechas y dividirlas entre 365 si es que es posible es decir si el resultante fuera > 365 Un Saludo. |
Hola a todos, en este caso yo propondría utilizar una de las funciones que tenemos en los utilitarios de fechas (unit DateUtils), de forma general podemos usar el siguiente código:
Código:
procedure TForm1.Button1Click(Sender: TObject); Esta función devuelve los años con fracciones y solventa el caso de periodos menores de uno vale para el asunto señalado por Marcos para amortizaciones. Si se trabaja con otras funciones de este grupo se pudiera llegar a mostrar los años, meses y días transcurridos quedando mas elegante la presentación. Saludos |
Cita:
Cita:
Cita:
Cita:
Cita:
;) :) |
Aqui encontrarás unas Units que son una maravilla
|
Ayudaaaaa.
Probe de todas formas para calcular los anos transcurridos y no hay forma me da error
PUSE: procedure TForm10.BitBtn1Click(Sender: TObject); Var d,m,Aini,Afin:Word; begin Decodedate(Date,Afin,m,d,); Decodedate(ModeloDatos.TblMueble.FieldValues['Fechcomp'],Aini,m,d,); ShowMessage('Diferencia de años:'+IntToStr(Afin-Aini)); end; Y ME DIO EL SIGUIENTE ERROR [Error] Unit10.pas(105): Too many actual parameters [Error] Unit10.pas(106): Too many actual parameters [Fatal Error] CStock.dpr(15): Could not compile used unit 'Unit10.pas' TAMBIEN PUSE: procedure TForm10.BitBtn1Click(Sender: TObject); Var d,m,Aini,Afin:Word; begin Decodedate(Afin,m,d,Date); Decodedate(Aini,m,d,ModeloDatos.TblMueble.FieldValues['Fechcomp']); ShowMessage('Diferencia de años:'+IntToStr(Afin-Aini)); end; Y ME DIO EL SIGUIENTE ERROR [Error] Unit10.pas(105): Types of actual and formal var parameters must be identical [Error] Unit10.pas(106): Types of actual and formal var parameters must be identical [Fatal Error] CStock.dpr(15): Could not compile used unit 'Unit10.pas' NO SE COMO HACERLO NECESITO AYUDA GRACIAS. |
Con solo darle a F1 verás que la sintaxis correcta es la primera. Para que te funcione, prueba a no poner paréntesis de más.
Código:
procedure TForm10.BitBtn1Click(Sender: TObject); |
Código:
procedure TForm10.BitBtn1Click(Sender: TObject); |
donde dije paréntesis de más, digo diego, digo quise decir comas de más. :)
|
Escribimos casi al mismo tiempo Marc, cuando he enviado mi mensaje aún no estaba el tuyo.
Donde dije Diego no digo nada. Un Saludo. |
La franja horaria es GMT +2. Ahora son las 01:58:22. |
Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi