FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
|
#1
|
||||
|
||||
Problema con operaciones con fechas
No sé si esto tendría que ir aquí o en el foro de FB porque es sobre una base de datos de este motor. A ver:
Tengo una aplicación en la que se pide al entrar usuario y clave de acceso, que están guardados en sendas tablas, una para los usuarios y otra para las claves porque le tengo puesta fecha de caducidad a las mismas. Una vez que se introduce y valida la clave ejecuto este código para comprobar su validez: Código:
fMenu->Auxiliar->Close(); fMenu->Auxiliar->SQL->Text = "SELECT B.Caduca, B.Caduca - CURRENT_DATE FROM Usuarios A, Claves B WHERE A.Nombre = :Nombre AND A.Nombre = B.Nombre AND B.Clave = :Clave"; fMenu->Auxiliar->ParamByName("Nombre")->AsString = NombreUser; fMenu->Auxiliar->ParamByName("Clave")->AsString = ClaveUser; fMenu->Auxiliar->Open(); if (fMenu->Auxiliar->Fields->FieldByNumber(2)->AsInteger < 11) { cAux = "Su clave caduca el " + fMenu->Auxiliar->FieldByName("Caduca")->AsDateTime.FormatString("ddddd"); if (fMenu->Auxiliar->Fields->FieldByNumber(2)->AsInteger < 1) { Mensaje(3, cAux + ".\nDebe cambiar la clave de acceso al sistema.", "Continuar"); Application->CreateForm(__classid(TfCamCla), &fCamCla); fCamCla->Tag = 1; fCamCla->Nombre->Text = NombreUser; fCamCla->ShowModal(); if (fCamCla->Tag < 0) { TipoInstalacion = fCamCla->Tag; delete fCamCla; Mensaje(1, "No se ha modificado la clave. Sistema desconectado.", "Terminar"); Application->Terminate(); return TipoInstalacion; } delete fCamCla; } else Mensaje(4, cAux, "Continuar"); } Código:
CREATE TABLE Claves (Nombre VARCHAR(15), Clave VARCHAR(12), Fecha DATE, Caduca DATE, CONSTRAINT PK_Claves PRIMARY KEY (Nombre, Clave)) Por poner un ejemplo, con el usuario que está dando error este es el último registro que hay en esa tabla: Cita:
|
#2
|
||||
|
||||
Mira en la configuración de windows, "regional" para ver qué formato de fecha tiene, vaya a ser diferente al resto de equipos.
|
#3
|
|||
|
|||
¿Has comprobado los valores específicos que devuelve la query en ese ordenador y caso concreto? ¿Qué devuelve?
|
#4
|
|||
|
|||
Será que los registros con el nombre de usuaio y/o contraseña no están en la base de datos ?
La parte del puede fallar si el query no retorna registros. Prueba que otro usuario trate de ingresar en esa máquina.
__________________
Luis Fernando Buelvas T. |
#5
|
||||
|
||||
Gracias por las respuestas.
Cita:
Cita:
Cita:
Hice la prueba el otro día y devolvía valores coherentes. |
#6
|
|||
|
|||
Cuando la cosa está así, no ves qué falla, y tienes que correrlo en casa del cliente, yo recurro al OutputDebugString: le metes entre cada línea de código y la siguiente un ODS diciendo que estás ahí y los valores que importen. Luego en el cliente, corres p.ej. el DebugView de Microsoft (quizás como administrador), y ejecutas tu programa, verificando los valores que aparecen.
Con frecuencia suele ser alguna tontería, que al ver esa "traza" queda clara. |
#7
|
||||
|
||||
Cita:
Si lo corro en mi máquina me da bien los datos (dos fechas y la diferencia entre ambas) pero en esa "maldita" máquina la fecha de caducidad me da una hora (00:00:00) y en la base de datos esa fecha está bien grabada. He estado viendo como me indicó Casimiro la configuración regional y está bien. Cada vez lo entiendo menos porque es el único sitio de los que usan fechas que ocurre esto. No sé si "forzando" a que devuelva una fecha con un CAST se puede solucionar. |
|
|
Temas Similares | ||||
Tema | Autor | Foro | Respuestas | Último mensaje |
operaciones con fechas | GustavoCruz | Firebird e Interbase | 12 | 07-04-2009 22:52:35 |
Operaciones con fechas | tifosi_loco | SQL | 2 | 06-12-2007 14:26:08 |
Operaciones con fechas | jandres | Varios | 2 | 07-11-2006 19:16:27 |
Operaciones con fechas | febito | Oracle | 1 | 05-08-2004 03:30:09 |
operaciones con fechas | ing_alsaac | Varios | 2 | 11-05-2003 10:02:57 |
|