Clipper/FiveWin - Dudas con las Fechas

 
Vista:

Dudas con las Fechas

Publicado por Roberto Torres (11 intervenciones) el 31/01/2008 13:35:31
Hola amigos.

Tengo una duda, cuando creo en una base de datos el campo fecha inmediatamente me da un largo de 8 caracteres. Mi duada es la siguiente... el campo fecha quedaria así (31/01/08) ya que ahí tenemos los 8 caracteres. Yo necesito guardar mi fecha así (31/01/2008) pero para este modo ya hay 10 caracteres.

El SET CENTURY ON
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Dudas con las Fechas

Publicado por Roberto Torres (11 intervenciones) el 31/01/2008 13:39:50
Hola amigos.

Tengo una duda, cuando creo en una base de datos el campo fecha inmediatamente me da un largo de 8 caracteres. Mi duada es la siguiente... el campo fecha quedaria así (31/01/08) ya que ahí tenemos los 8 caracteres. Yo necesito guardar mi fecha así (31/01/2008) pero para este modo ya hay 10 caracteres.

El SET CENTURY ON, activa el año en 4 digitos, pero hay otros comandos y funciones que tambien trabajan con las fechas,

Alguien seria tan amable de ayudarme y explicarme el uso de esas funciones, desde ya les estare muy agradecido.

Nota: No tomen en cuenta el mensaje anterior, por error lo envie sin terminar.
Gracias
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Dudas con las Fechas

Publicado por Roberto Torres (11 intervenciones) el 31/01/2008 13:39:52
Hola amigos.

Tengo una duda, cuando creo en una base de datos el campo fecha inmediatamente me da un largo de 8 caracteres. Mi duada es la siguiente... el campo fecha quedaria así (31/01/08) ya que ahí tenemos los 8 caracteres. Yo necesito guardar mi fecha así (31/01/2008) pero para este modo ya hay 10 caracteres.

El SET CENTURY ON, activa el año en 4 digitos, pero hay otros comandos y funciones que tambien trabajan con las fechas,

Alguien seria tan amable de ayudarme y explicarme el uso de esas funciones, desde ya les estare muy agradecido.

Nota: No tomen en cuenta el mensaje anterior, por error lo envie sin terminar.
Gracias
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Dudas con las Fechas

Publicado por Adalberto Baqueros (213 intervenciones) el 31/01/2008 14:17:30
Hola Roberto.

Así como describiste, así funciona clipper.

En las máscaras de los GET's puedes usar para que reciba los 10 caracteres que necesitas, y cuando lo mandes grabar clipper grabará 8 caracteres; al recuperar el campo fecha se mostrará con 10 digitos si la mascara en el Say/Get está establecida de esa manera.

Yo utilizo siempre de esta forma:

LOCAL dFecha:= CTOD( "")
SET CENTURY ON
@ 10,10 SAY 'Fecha de compra:'
@ 10,27 GET dFecha PICT "@E"
READ

y todo anda bien!

¡ EXITOS !

Saludos, desde Santa Cruz de la Sierra - Bolivia
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Dudas con las Fechas

Publicado por Roberto Torres (11 intervenciones) el 31/01/2008 16:15:04
Hola Como estas?¿

Gracias por el ejemplo, lo voy a probar hoy en la tarde, pero me asalta otra duda...

Para que sirve el PICT "@E" y porque pones una letra minuscula antes del nombre de la variable.? ¿Solo curiosidad?

Cualquier cosa te aviso como me fue... gracias por todo.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Dudas con las Fechas

Publicado por Ruben Francisco Mucino (25 intervenciones) el 31/01/2008 16:59:39
HOLA TE RECOMINEDO QUE LEAS EL ULTIMO ARTICULO ESCRITO POR EL MAESTRO RENE FLORES EN objetopersistente.blogspot.com QUE HABLA DE LOS CAMPOS FECHA.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Dudas con las Fechas

Publicado por Ramon Paredes (47 intervenciones) el 31/01/2008 18:44:58
Roberto,

Efectivamente como te indica adalberto asi funciona lo unico que hay que agregar para tu informacion es que al almacenarse las fechas no se almacenan las "/" por lo que las fechas sin "/" son de ocho digitos exactamente la longitud que se queda pre - establecido en la tabla.

Te sugiero que en tu programa principal donde declaras tu ambiente definas las instancias que te serviran en toda la aplicacion desde ahi puedes declarar:

SET DATE FRENCH
SET CENTURY ON
SET EPOCH TO 1970

y cuando definas tus gets pones el picture que te indica adalberto o el picture completo PICTURE "99/99/9999" que tambien es valido,

Saludos desde Managua, Nicaragua

Ramon Paredes
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Dudas con las Fechas

Publicado por Adalberto Baqueros (213 intervenciones) el 01/02/2008 02:05:27
Hola Roberto.

Estoy bien, gracias por preguntar.

El PICT "@E' permite ingresar la fecha en formato Europeo, DD/MM/AAAA.

La letra minúscula delante del nombre de la variable me permite identificar el tipo de la variable, se llama notación Ungara, invento de Simonyi, programador magiar que trabaja o trabajaba para MicroSoft, estas reglas fueron adoptadas por todos los productos de MicroSoft y por otros de la competencia.

Por ejemplo:

nImporte, variable numérica
cNomClie, Variable de caracteres para nombre de cliente
anVecEdad, arreglo numérico para almacenar las edades

¡ EXITOS !

Saludos, desde Santa Cruz de la Sierra - Bolivia.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Dudas con las Fechas

Publicado por Gabriel Pascal (16 intervenciones) el 02/02/2008 23:07:46
Vale, solo para rizar un poco mas el rizo:

Dentro de la estructura de la tabla DBF, un campo fecha se almacena en 6 digitos que son:

AAAAMMDD

siempre en ese orden, primero el año con 4 digitos que incluyen el siglo
Luego los meses
Luego los dias.

Los separadores nunca se almacenan en la tabla.

El comando SET CENTURY lo unico que hace es activar el despliegue del siglo dentro de la fecha, que siempre esta presente aunque no esté visible.

Los formatos SET DATE solo son mascarillas de despliegue, es decir el formato en el cual se van a visualizar los datos.

OJO: si la tabla DBF esta creada con DBase o con Clipper, el año 00 es el 1900, para solucionar eso (Y2K bug) es necesario mover el "calendario" interno del programa Clipper usando la funcion SET EPOCH que fija el intervalo de 100 años se debe tomar para decidir si el 00 representa el siglo 20 o el 21. (follon interno de clipper).

Finalmente como dice René Flores en Objeto Persistente, la indexacion sobre una campo fecha SIEMPRE debe de hacerse sobre DTOS(campo fecha) y las busquedas sobre DBSEEK(DTOS(fecha))

Justo el artículo de la semana pasada en www.objetopersistente.blogspot hablaba sobre ello
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Dudas con las Fechas

Publicado por Adalberto Baqueros (213 intervenciones) el 03/02/2008 04:17:55
Hola a todos los del foro.

El rizo que no termina de rizarce, seguro que se le podran dar mucha vueltas más, yo sólo le daré una.

Primero: Gabriel, por un error de digitación dice: "...un campo fecha se almacena en 6 digitos que son: AAAAMMDD", debió decir: 8 digitos.

Segundo: Visité el blog recomendado por Gabriel, lo leí y me pareció bien trabajado, donde sin duda hay temas nuevos para aprender y que son de ayuda; es un artículo sobre el tipo de dato DateTime, y algunos comandos como: CTOT() y TOTC(), todo sobre xHabour.

Tercero: Esta es mi vuelta al rizo, o mi rizo al rizo. Para quienes implementen el comando clipper DTOS( dFecha ), les comento que NO es un comando seguro cuando en el DBF hay más de un año, el programador deberá realizar una función o procedimiento que garantice la búsqueda; la funcioncita que desarrollé es la siguiente:

FUNCTION XDtos( dFecha )
LOCAL cFecha := DTOC( dFecha )
RETURN( RIGHT( cFecha , 4 ) + LEFT( cFecha , 2 ) + SUBS( cFecha , 4 , 2 ) )

No he incluído las condiciones para validar el parámetro recibido por tratarse de una función de mi uso exclusivo.

A todos les deseo un feliz carnaval y sobre todo ¡ EXITOS !.

Saludos, desde Santa Cruz de la Sierra - Bolivia.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar