Ordenamiento

Buenas tardes experto necesito ordenar el resultado de este código para poder guardarlo de acuerdo a mi necesidad estuve intentando pero no graba como yo quiero te explico al restar fecha actual con fecha de Nacieminto obtengo Edad, Mes y Días pero cuando yo presiono guardar quiero que sea de esta manera:
Si tiene EDAD, No debe de guardar Mes y Días
Si tiene Mes, No guarda Días
Si solo es días es lo único que guardara
mFecNac=thisform.text1.value
mFecHoy=thisform.text2.value
mFecNacS=dtos(mFecNac)
mFecHoyS=dtos(mFecHoy)
mAños=year(mFecHoy)-year(mFecNac)
mAños=mAños-iif(right(mFecNacS,4)>right(mFecHoyS,4),1,0)
mMeses=month(mFecHoy)-month(mFecNac)
mMeses=iif(mMeses<=0,mMeses+11,mMeses)
mMesPasado=mFecHoy-30
mDias=mFecHoy-ctod(str(day(mFecNac),2)+'/'+iif(day(mFecNac)>day(mFecHoy),str(month(mMesPasado),2)+'/'+str(year(mMesPasado),4),str(month(mFecHoy),2)+'/'+str(year(mFecHoy),4)))
mEdadExacta=transform(mAños)
thisform.edad.value=mEdadExacta
m=transform(mMeses)
thisform.mes.value=m
d=transform(mDias)
thisform.dias.value=d
if messagebox("Desea grabar los registros",36,"Mensaje del Sistema")=6
append blank
replace edad with ed
replace mes with me
replace dias with di
endif
Gracias

1 respuesta

Respuesta
1
Intenta:
m.dFecNac = ThisForm.Text1.Value
m.dFecHoy = ThisForm.Text2.Value
m.nAños = Year(m.dFecHoy) - Year(m.dFecNac)
m.nMeses = Month(m.dFecHoy) - Month(m.dFecNac)
m.nDias = Day(m.dFecHoy) - Day(m.dFecNac)
If m.nDias < 0
   m.nAnterior = Day( Date(Year(m.dFecHoy), Month(m.dFecHoy), 1 ) - 1 )
   m.nDías = m.nDias - m.nAnterior
   m.nMeses = m.nMeses - 1
EndIf
If m.nMeses < 0
   m.nMeses = m.nMeses + 12
   m.nAños = m.nAños - 1
EndIf
m.nEdad = Iif( m.nAños > 0, m.nAños, Iif(m.nMeses > 0, m.nMeses, m.nDias))
If messagebox("Desea grabar los registros",36,"Mensaje del Sistema")=6
   Append Blank
   Replace edad With m.nEdad
EndIf
Hola experto sale un error y dice "No coincide los tipos de datos" y cuando presiono suspender se posiciona en replace edad with m.nEdad
¿El campo edad es numérico?
Hola experto es de tipo char la edad, mes y días
Entonces cambia la línea:
Replace edad With m.nEdad
por
Replace edad With AllTrim( Str( m.nEdad ) )
Gracias amigo por la ayuda te agradezco un montón, pero en mi tabla tengo 3 campos y me gustaría que si fue edad, mes o días se guarde en el campo correspondiente.
Gracias Experto
Tu dices que Si tiene EDAD, No debe de guardar Mes y Días
Si tiene Mes, No guarda Días
Si solo es días es lo único que guardara
Y por eso en la instrucción:
m.nEdad = Iif( m.nAños > 0, m.nAños, Iif(m.nMeses > 0, m.nMeses, m.nDias))
Se guarda en la variable "m.nEdad" los años, si existen, si son cero entonces los meses, y si los meses son cero entonces los días
Pero si deseas guardar en cada campo, cambia el código:
If Messagebox("Desea grabar los registros",36,"Mensaje del Sistema") = 6
     Append Blank
     Replace edad With Alltrim( Str( m.nEdad ) )
EndIf
Por:
If Messagebox("Desea grabar los registros",36,"Mensaje del Sistema")=6
     Append Blank
     Replace edad With Alltrim( Str( m.nAños ) )
     If m.nAños = 0
          Replace mes With Alltrim( Str( m.nMeses ) )
          If m.nMeses = 0
               Replace dias With Alltrim( Str( m.nDias ) )
          EndIf
     EndIf
EndIf

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas