Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > OOP
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 29-03-2019
Avatar de oscarac
[oscarac] oscarac is offline
Miembro Premium
 
Registrado: sep 2006
Ubicación: Lima - Perú
Posts: 2.010
Poder: 20
oscarac Va por buen camino
fecha 30/12/1899

Estoy usando Sql Server 2000 y no tuve problemas con el tema de las fechas
cambie a SqlServer 2008 y cuando quiero grabar una fecha vacia (30/12/1899), me lanza el siguiente error:
the conversion of a varchar data type to a datetime data type resulted in an out-of-range value

estoy usando xe7 y para almacenar la fecha solo hacia esto

Código Delphi [-]
 qryTemporal.Params.ParamByName('FechaVencimiento').AsDateTime := CdsDetalleFechaVencimiento.AsDateTime;

esto es una declaracion de parametro a la cadena donde generaba al script para grabar

alguien conoce alguna solucion que pueda ser usada en cualquier motor de base de datos?
__________________
Dulce Regalo que Satanas manda para mi.....
Responder Con Cita
  #2  
Antiguo 29-03-2019
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.038
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Cada gestor de bases de datos suele ser diferente en cuanto a la fecha inicial para contarlas.
De todas formas, ¿por qué dejas una fecha vacía? y si la dejas vacía, ¿qué fecha quieres que tome?
Responder Con Cita
  #3  
Antiguo 30-03-2019
Avatar de mamcx
mamcx mamcx is offline
Moderador
 
Registrado: sep 2004
Ubicación: Medellín - Colombia
Posts: 3.911
Poder: 25
mamcx Tiene un aura espectacularmamcx Tiene un aura espectacularmamcx Tiene un aura espectacular
Lo mas probable es que sea un problema de formato. Es bueno ser especifico, porque de acuerdo a la configuración regional de la maquina esto cambia:

https://docs.microsoft.com/en-us/sql...t-transact-sql

Por lo demás, es un ERROR hacerlo como lo haces sin opciones explícitas de conversion. Recuerda:

* Usa el formato ISO para fecha internamente. El formato de localizacion es SOLO paras visualizar al usuario.
* Si por alguna razón tienes que almacenar el formato localizado, debes guardar en CUAL locale quedo. Y no hay otra que hacer conversiones aunque PAREZCA te todo esta bien porque en TU MAQUINA no hay error.
* Usa configuraciones neutrales para fecha, decimales, etc. Asegurate de especificar eso en los parámetros de conexion
* Usa UTF8 para texto a lo largo de toda la cadena de la APP.


Es bueno siempre suponer "y que pasa si usan esto en China?" cuando haces apps...


En resumen: Aprende sobre Localización e Internacionalización de apps y datos.
__________________
El malabarista.
Responder Con Cita
  #4  
Antiguo 30-03-2019
Avatar de oscarac
[oscarac] oscarac is offline
Miembro Premium
 
Registrado: sep 2006
Ubicación: Lima - Perú
Posts: 2.010
Poder: 20
oscarac Va por buen camino
algo curioso
entre al Managment de sql 2008 y le cambie el idioma a espaniol a la base de datos y funciono normal

el tema de las fechas vacias es porque se trataba de una fecha de vencimiento, que puede o no tener un valor , tambien depende del registro que se esta grabando
basicamente es un sistema contable, si grabo una cuenta de bancos no hay fecha de vencimiento pero si genero una cuenta de proveedores o clientes podria tener o no fecha de vencimiento.
__________________
Dulce Regalo que Satanas manda para mi.....
Responder Con Cita
  #5  
Antiguo 30-03-2019
Avatar de mamcx
mamcx mamcx is offline
Moderador
 
Registrado: sep 2004
Ubicación: Medellín - Colombia
Posts: 3.911
Poder: 25
mamcx Tiene un aura espectacularmamcx Tiene un aura espectacularmamcx Tiene un aura espectacular
Cita:
Empezado por oscarac Ver Mensaje
algo curioso
entre al Managment de sql 2008 y le cambie el idioma a espaniol a la base de datos y funciono normal
Pero aun así sigues teniendo un problema. Tomate el tiempo de arreglar el manejo de esos formatos

Cita:
Empezado por oscarac Ver Mensaje
el tema de las fechas vacias es porque se trataba de una fecha de vencimiento, que puede o no tener un valor
En SQL, se usa NULL para eso.
__________________
El malabarista.
Responder Con Cita
  #6  
Antiguo 30-03-2019
Avatar de oscarac
[oscarac] oscarac is offline
Miembro Premium
 
Registrado: sep 2006
Ubicación: Lima - Perú
Posts: 2.010
Poder: 20
oscarac Va por buen camino
tomare en cuenta tus recomendaciones
gracias
__________________
Dulce Regalo que Satanas manda para mi.....
Responder Con Cita
  #7  
Antiguo 31-03-2019
Avatar de olbeup
olbeup olbeup is offline
Miembro
 
Registrado: jul 2005
Ubicación: Santiago de la Ribera (España)
Posts: 685
Poder: 19
olbeup Va camino a la fama
Hola oscarac,

Cuando realizo un
Código SQL [-]
INSERT INTO Tabla(CAMPOFECHA) VALUES(0)
le pongo un cero e internamente cuando se graba me poner la fecha en 01-01-1900, y nunca he tenido ningún problema.

Un saludo.
__________________
Al hacer una consulta SQL, haz que los demás te entiendan y disfruten de ella, será tú reflejo de tú saber.
Responder Con Cita
  #8  
Antiguo 31-03-2019
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.038
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Cita:
Empezado por olbeup Ver Mensaje
Hola oscarac,
Cuando realizo un
Código SQL [-]INSERT INTO Tabla(CAMPOFECHA) VALUES(0)

le pongo un cero e internamente cuando se graba me poner la fecha en 01-01-1900, y nunca he tenido ningún problema.
Un saludo.
Depende de lo que hagas, imagina que eso es la fecha de entrega de un libro en la biblioteca o una película en el videoclub, tendrá que pagar atrasos de más de un siglo
Responder Con Cita
  #9  
Antiguo 31-03-2019
Avatar de mamcx
mamcx mamcx is offline
Moderador
 
Registrado: sep 2004
Ubicación: Medellín - Colombia
Posts: 3.911
Poder: 25
mamcx Tiene un aura espectacularmamcx Tiene un aura espectacularmamcx Tiene un aura espectacular
En vez de hacer las cosas a punta de hacks, que tal si se usa los SQL valores correctamente?

Digo yo...

P.D: Mi trabajo es integrarme con multiples ERPs y otros sistemas. No me causa NINGUNA gracia tener que darle la "vuelta" a todas esas grandes "ideas" de como modelan las BD nuestros colegas....
__________________
El malabarista.
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
30/12/1899 cuando fecha en campo es null ? Loviedo Firebird e Interbase 4 21-02-2013 12:36:29
Calcular fecha Fin dada fecha inicio y dias, meses o años transcurridos fide_uci HTML, Javascript y otros 1 15-11-2011 19:52:40
SQLite3 devuelve 01-01-1899 salvica SQL 3 03-02-2010 11:56:55
Desde la fecha inicio hasta la fecha final que me grabe los meses contenidos Renis SQL 4 01-10-2007 17:21:44
Ayuda, Como calcular fecha de vencimiento mensual a partir de una fecha x en delphi Renis Impresión 4 23-08-2007 23:45:14


La franja horaria es GMT +2. Ahora son las 20:02:12.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi