Fechas en rejillas

Gracias por tu ayuda... Vuelvo a tener que preguntarte... Verás en la misma rejilla tengo que sacar el nombre y fecha de nacimiento del alumno de mayor edad. Yo he puesto este código pero me da un fallo al usar la función datevalue.
Te agradecería me echarás un vistazo al código o me dijeras como puedo hacerlo.
Gracias por tu inestimable ayuda.
Un amigo.
Dim i As Integer
Dim ventana As String
Dim nombre As String
Dim fecha1 As String
Dim fecha As Date
Dim fecha_actual As Date
Dim edad As Integer
Dim edadmayor As Integer
mediamayor = 0
media = 0
nota1 = 0
nota2 = 0
nombre = ""
fecha_actual = Date
For i = 1 To rejilla.Rows - 1
rejilla.Col = 2 'se posiciona en la columna de fechas
rejilla.Row = i 'se lee fila a fila gracias al bucle for
fecha = DateValue(Val(rejilla.Text)) ' se introduce la f/ en fecha
edad = DateDiff("yyyy", fecha, fecha_actual) 'calculamos la edad
edadmayor = edad ' asignamos la edad a edadmayor
If edadmayor < edad Then
'en el momento que una edad sea superior a la ya calculada
'es asignada como nueva edad
edadmayor = edad
rejilla.Col = 1 'se posiciona el columna 1 que es la q tiene
'los nombres
nombre = rejilla.Text 'asigna a nombre el valor de la celda
rejilla.Col = 2 'se posiciona en columna 2 que tiene las fechas
fecha1 = rejilla.Text ' toma el valor de la fecha y la almacena
End If
Next i
ventana = MsgBox("Alumno con mayor nota media es: " & nombre & " con un promedio de " _
& mediamayor & " y nacio el " & fecha & " ", vbInformation, "Resultado")

1 respuesta

Respuesta
1
Dim i As Integer
Dim ventana As String
Dim nombre As String
Dim fecha1 As String
Dim fecha As Date
Dim fecha_actual As Date
Dim edad As Integer
Dim edadmayor As Integer
mediamayor = 0
media = 0
nota1 = 0
nota2 = 0
nombre = ""
fecha_actual = Date
For i = 1 To rejilla.Rows - 1
rejilla.Col = 2 'se posiciona en la columna de fechas
rejilla.Row = i 'se lee fila a fila gracias al bucle for
ESTO ESTA MAL POR QUE LA FUNCION 'VAL' TRANSFORMA UNA CADENA A UN VALOR NUMERICO,COMO PODRAS DARTE CUENTA FECHA NO ES UN VALOR NUMERICO YA QUE TIENE / O - ENTRE EL DIA EL MES Y EL AÑO fecha = DateValue(Val(rejilla.Text)) ' se introduce la f/ en fecha
PRIMERO DEVERIAS VALIDAR QYE LA REJILLA.TEXT SEA DE TIPO FECHA ASI
IF ISDATE(REGILLA.TEXT) THEN
FECHA=CDATE(REGILLA.TEXT)
LA FUNCION CDATE TRANSFORMA UNA CADENA A FECHA SIEMPRE Y CUANDO LA CADENA SE PUEDA TRANSFORMAR A FECHA
ELSE
FECHA='01-01-1960'
END IF
edad = DateDiff("yyyy", fecha, fecha_actual) 'calculamos la edad
edadmayor = edad ' asignamos la edad a edadmayor
If edadmayor < edad Then
'en el momento que una edad sea superior a la ya calculada
'es asignada como nueva edad
edadmayor = edad
rejilla.Col = 1 'se posiciona el columna 1 que es la q tiene
'los nombres
nombre = rejilla.Text 'asigna a nombre el valor de la celda
rejilla.Col = 2 'se posiciona en columna 2 que tiene las fechas
fecha1 = rejilla.Text ' toma el valor de la fecha y la almacena
End If
Next i
Bueno espero que la observación que te introduje en tu código te sirva
Gracias, pero tu código no me funciona...
He pensado lo siguiente, yo entro las fechas en la rejilla a través de una caja de texto, como puedo hacer para luego pasar esas fechas que ya están en la rejilla a "fechas reales" para que luego no me de conflicto de que no coinciden los tipos. Me aclaro, es decir introducir fechas directamente sin tener que usar ninguna función para convertirlas a formato de fecha.
Un saludo, amigo.
Tenemos:
Texto1.text= "25-05-2003" todo esto esta en formato de texto
Ademas tienes una grilla, que no se si es un datagrid o un mesflexgrid, como sea da lo mismo.
Pondremos el valor de fecha en la segunda columna y en el segundo registro.
MsFlexgrid1. Col= 1 ' por que el cero es la primera
Msflexgrid1.Row=2
Msflexgrid1.text=Texto1.Text ESTO DEVERIA FUNCIONAR SIN NUNGUN PROBLEMAS, HASTA EL MOMENTO NO HEMOS TRABAJADO CON FECHAS.
Supongamod que deseamos pasar el campo la segunda columna de mi grilla, que se supone sus datos tiene las caracteristicasd de fecha, en el caso de que no hay que hacer otra cosa entonces hacemos lo siguiente.
Si tenemos una varable de tipo fecha o un campo en alguna tabla de tipo fechas y queremos pasar los datos de la segunda columna, seria así...
Dim Var_Fecha as Date
for i= 0 to msflexgrid1.rows
msflexgris1.col= 1
msflexgris1.row= I
if not isdate(msflexgrid1.text) then
Var_Fecha="01-01-2003"
else
Val_Fecha=Cdate(MsflexGrid1.Text)
endif
next I
Esot funciona sin ningun porblrma en Visual se te arrija errores es por que tienes en la colimna de la grill, a algun valor que no puede ser convertido a fecha evisa eso.
Bueno un saludo
Chao.
Un amigo

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas