Gambas - Guardar la fecha en un capo del mismo tipo

 
Vista:

Guardar la fecha en un capo del mismo tipo

Publicado por aristicol (9 intervenciones) el 13/03/2009 17:15:42
Hola, estoy tratando de guardar la fecha actual del sistema en un capo tipo fecha de un tabla por medio de INSERT INTO
pero no lo consigo pues solo se guarda 00:00:00

lo he hecho de mil formas

1. Format$(Now, "mm/dd/yyyy")
2. Date(now)

y nada, nada parece ser valido para que el campo de la tabla que es de tipo fecha guarde la fecha.

Alguien me puede comentar acerca de la forma de guardar pues la lógica indica que debería guardar la fecha con lo que estoy haciendo.
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:Guardar la fecha en un capo del mismo tipo

Publicado por Lecuije (2 intervenciones) el 18/03/2009 01:41:09
Hola que tal yo tuve el mismo problema y lo resolvi haciendo una función que convirtiera la fecha a la correcta para Mysql, a lo mejor no es la forma más elegante de hacerlo pero funciona, si encuentras alguna otra solucion comentala.

PUBLIC FUNCTION toDate(d AS String, h AS String) AS String
DIM s AS String
s = "20" & Mid$(d, 5, 2) & "-" & Mid$(d, 3, 2) & "-" & Mid$(d, 1, 2) & " " & Mid$(h, 1, 2) & ":" & Mid$(h, 3, 2) & ":" & Mid$(h, 4, 2)
RETURN s
END

Como yo la ocupe para convertir una fecha y una hora de una posicion GPS esta funcion no te sirve pero puedes darte una idea.

Saludos
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:Guardar la fecha en un campo del mismo tipo

Publicado por Aristicol (9 intervenciones) el 20/03/2009 16:13:16
Bueno después de mucho investigar y consultar en un manual y recibir errores y analizando porque esta instrucción si lo hacia en un ejemplo ilustrado y no en mi aplicación, bueno amigos acá esa la solución para guardar un dato fecha en un campo del mismo tipo en una tabla en gambas, me base en sqlite 3.

Esta solución funciona, pero tiene una regla o condición para hacerlo que no me gusta, pues obliga en un INSERT INTO a asignarles datos a todos los campos de un registro en su orden, pues intente hacerlo selectivamente pero da error, cosa que me parecería complicada en un UPDATE pues aveces uno requiere solo actualizar un solo campo o varios y no todos los campos que conforma un registro.

Pero lo bueno es que se guarda en el formato que debe ser y no en carácter como contemplaba hacerlo empleando una función que construí en un momento de rabia por la frustración de que la lógica que debería ser así ante cualquier vista, no funcionara.

Por cierto la rabia tambien la hice sentir hasta en el nombre de la función la llame:

PUBLIC FUNCTION generaHPfecha() AS String jajaja...

Bueno al grano:

Para que te des cuenta y tu mismo busques nuevas formas:

- Crea una tabla por ejemplo con dos campos el primero de cualquier tipo, y el segundo tipo fecha o en el orden que quieras.

- Crea un formulario, añade 2 TextBox

- Añade un boton

en el evento click del botón

IF FMain.ConectarBase() THEN RETURN

FMain.resultadoc.Exec("insert into datos values (&1,&2,&3)", ValueBox1.text, TextBox2.text, CDate(TextBox1.text))

la primera linea es una función publica que tengo en el formulario principal de una aplicación de estoy haciendo, esta función comprueba la conexión de la base de datos.

la segunda linea también tengo la variable resultadoc publica de tipo Connection en el formulario principal.

Aquí lo importante es: ("insert into datos values (&1,&2)", ValueBox1.text, CDate(TextBox1.text))

Pues la forma como manejes la conexión de tu base de datos te encargas tu.

Como les dije anteriormente INSERT INTO debe hacerse manejando todo el registro y en el orden de los campos

(&1,&2)

&1 = campo 1
&2= campo 2

sin espacio entre la(s) coma(s) dentro de los parentisis.

de igual forma se debe conservar el orden en los datos a asignar a cada campo.

ValueBox1.text, CDate(TextBox1.text))

&1 --> ValueBox1.text
&2 --> CDate(TextBox1.text)

La fecha en este ejemplo digitado por el usuario en un campo de texto, de nosotros depende validar el dato digitado y aplicar formato antes de guardar ese dato.

Yo estoy en Colombia y el formato que me acepta para introducción es mm/dd/yyyy mes-dia-año

si introduzco algo diferente da error al guardarlo, y cuando se accede al gestor de base de datos de gambas y miro el registro insertado me muestra la fecha en formato dd/mm/yyyy.

Analizar esto ustedes en su localidad.

CDate() se emplea para convertir un dato fecha que esta en carácter, a formato fecha.

También puedes usar en vez de una entrada guardar directamente la fecha del sistema tanto en formato fecha - hora como solo la fecha.

Now = guarda fecha y hora
Date = guarda sólo la fecha

("insert into datos values (&1,&2)", ValueBox1.text, Date)



Bueno amigos espero que esto sea de ayuda...
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:Guardar la fecha en un campo del mismo tipo

Publicado por Aristicol (9 intervenciones) el 20/03/2009 23:31:46
Ahora le toco el turno a la Actualización Update.

Siguiendo con el análisis que he realizado, ya he logrado también, hacer que un campo fecha de una tabla guarde el dato, esto debido a cierta piedra que uno encuentra cuando trata de hacerlo directamente con el método Exec, en su lugar usaremos el método Edit, aunque con el metodo Exec y la respectiva sentencia sql Update funciona para hacer actualizaciones pero presenta problemas para guardar en un campo fecha, donde solo guarda por razones que aun desconozco 00:00:00.

Empelando el método Edit para realizar un Update.

1. En una variable de tipo Result almacenamos el registro deseado a modificar.

2. Realizamos los cambios deseado uno o en los campos que deseamos actualizar del registro

3. Aplicamos Update para que los cambios sea guardados en disco.

hresult = Resultadoc.Edit("datos", "Codigo=&1", Texbox.text)

hresult["fecha"] = Date 'Modificación del campo fecha por la fecha actual
hresult.Update()

"datos" = al nombre de la tabla.
"Codigo=&1" = Nombre del campo clave para localizar el registro a modificar.
Textbox.text = algún cuadro de texto donde el usuario digita el código "esto en forma de ilustrar"

Listo, con este procedimiento podemos modificar un registro, y hacer cambios fácil en uno, o varios campos del mismo.

Espero haber iluminado muchas ideas...
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