SoloCodigo

Programación General => Power Builder => Mensaje iniciado por: darksito en Jueves 24 de Septiembre de 2009, 17:53

Título: que pasa con la fecha y mi codigo
Publicado por: darksito en Jueves 24 de Septiembre de 2009, 17:53
hola bueno se que este tema ya esta demasiado tocado y quisiera saber porque estoo me sucede  :hitcomp:

Bueno es lo que me sucede pondre imagenes asi me dare a entender

base de datos sql 2000
tabla  fecha
tipo datetime

supongamos que ese es mi formulario  un datapick y un boton guadar

(http://s4.subirimagenes.com/otros/previo/thump_326089801.jpg)

en el boton guadar puse esto

Código: C++
  1. //Declaro variable
  2.  
  3. datetime fecha
  4. fecha=datetime(dp_1.text)
  5.  
  6. INSERT INTO t_fecha  
  7.          ( fecha )  
  8.   VALUES ( :fecha )  ;
  9.  

supuestamente deberia guardarme pero no lo hace   :ouch:  

pero si lo guardo como texto normal  si me guarda sin convertira tipo date o datetime  y me ocaciona otro problem
que cuando voy a crear mi consulta en dw  entre dos fechas
(http://s4.subirimagenes.com/otros/previo/thump_326094602.jpg)

ingreso las fechas 20/07/2009 y 30/11/2009 para buscar fechas entre ese rango ya que en mi tabla hay fechas q introduci manualmente 24/09/09 , 23/09/09

(http://s4.subirimagenes.com/otros/previo/thump_326096703.jpg)

no se que pueda suceder ya cambie la configuracion regional y todo lo demas porfavor quisiera q me ayuden
Título: Re: que pasa con la fecha y mi codigo
Publicado por: Juanra15 en Jueves 24 de Septiembre de 2009, 19:06
Hola Darksito, una pregunta, que version de Power Builder usas?

provaste al convertir la fecha a string darle el formato? ej: fecha = String(Today(), "yyyy/mm/dd") si solo vas a pasar la fecha declaralo como DATE (no como DATETIME).

Yo al trabajar con fechas las las guardo en la DB como char(8) con el siguiente formato 20091024 = 23/10/2009, tengo una funcion guardada que convierte al char(8) al formato fecha, asi las busquedas y filtros en la DB me queda mas practico, espero que te sirva de algo.

Saludos  :good:
Título: Re: que pasa con la fecha y mi codigo
Publicado por: darksito en Jueves 24 de Septiembre de 2009, 19:23
hola man me podrias pasar un ejemplo haci sencillo uff nu sabes cuanto me ayudaria no se antes me guardaba normal ahora no !! estoy algo desauciado y quiero romper mi compu xD gracias

uso la 11.5 y tambien prove en 10.5
Título: Re: que pasa con la fecha y mi codigo
Publicado por: F_Tanori en Viernes 25 de Septiembre de 2009, 09:05
El formato Estandar Internacional es YYYYMMDD el cual no necesita ningun formateo ni tampoco separadores


La verdad es que no es buena idea almacenar Fechas como texto, pues no se manipulan de la misma manera, no utilizan los mismos espacios, ni tampoco se obtienen los mismos resultados

Puedes convertirlo a Date
Código: Visual Basic
  1.  
  2. fecha=date(dp_1.text)
  3.  

o

a DateTime
Código: Visual Basic
  1.  
  2. fecha=datetime(dp_1.text,Now())
  3.  
Código: Visual Basic
  1.  
  2. INSERT INTO t_fecha   ( fecha )   VALUES ( :fecha )  using SQLCA ;
  3.  
  4. if SQLCA.SQLCODE<>0 then
  5.     MsgBox (string(fecha),SQLCA.SQLErrText)
  6. End if
  7.  
  8.  
  9.  

Comprueba el error que obtienes

Saludos
Título: Re: que pasa con la fecha y mi codigo
Publicado por: darksito en Viernes 25 de Septiembre de 2009, 17:06
bueno ahora no me ocurre ningun problema en guardar pero ocurre esto q en mi base de datos se guarda 01/01/1900 y estamos 2009 y eleji diferentes fechas pero aun asi

esta tabla la cree para ver si funcionaba el codigo
(http://s4.subirimagenes.com/otros/previo/thump_326654504.jpg)

que puedo hacer respecto a este problema ya reconfigue el idioma soy de peru

dd/mm/yyyy
Título: Re: que pasa con la fecha y mi codigo
Publicado por: Juanra15 en Viernes 25 de Septiembre de 2009, 18:02
proba con el formato de fecha que te dijo F_Tanori yyyy/mm/dd  la fecha 1/1/1900  creo que es la fecha minima que te deja guardar el tipo DATE, cuando hay algun problema con el formato de la fecha, te guarda esa fecha, por ejemplo vos le pasas 24/10/2009 y el sistema toma la fecha con el formato internacional (2009/10/24) ve que el formato no coincide y te guarda el famoso 01/01/1900  :scream:
Título: Re: que pasa con la fecha y mi codigo
Publicado por: darksito en Viernes 25 de Septiembre de 2009, 18:35
bueno guardando asi yyyy/mm/dd me funciono ! pero al guardar 2009/09/12 me guarda pero si le doy 2009/09/13 ya no me guarda :S hay q dolor de cabeza cambie tmbien yyyy/dd/mm igual
me sale el el error de conversion de tipo char a datetime pordujo un datatime fuera de rango

:( :hitcomp:
Título: Re: que pasa con la fecha y mi codigo
Publicado por: Juanra15 en Viernes 25 de Septiembre de 2009, 19:51
pero para el dia de hoy te funciono, solo faltan hacer funcionar el resto de las fechas  :lol:
estas guardando en una variable tipo DATE no? :think: no guardes en una datetime  :no:
Título: Re: que pasa con la fecha y mi codigo
Publicado por: darksito en Viernes 25 de Septiembre de 2009, 21:27
me guardar desde 01/09/2009 hasta el 12/09/2009 y apartir del 13/09/2009 ya no me guarda estoy usando un editmask le cambie formatos yyyy/mm/dd , yyyy/dd/mm , dateinternacional la mascakara es datemask mi configuracion reginal es Español(peru) ubicacion peru en fecha esta dia/mes/año que me sucede :(       quiero lobrar eso para que en mi dw pregunte buscar entre fechas me bote los resultados :(
Título: Re: que pasa con la fecha y mi codigo
Publicado por: F_Tanori en Viernes 25 de Septiembre de 2009, 21:39
La forma en que SQL Server almacena la informacion internamente ni siquiera es como fecha, pero para representarlo a la vista del humano, lo hace a traves  del formato YYYYMMDD Estandar Internacional (representado  visiblemente como YYYY-MM-DD en SQL Server ) sin importar la configuracion regional ni las preferencias de ubicacion del usuario

El problema que tienes es que PB no esta proporcionando un valor valido para el tipo de dato que esta esperando la base, y el tipo de dato en PB esta corrompido por lo tanto te da una fecha invalida representada en PB por 01/01/1900, para solventar esta situacion puedes hacer lo siguiente:

Cambiar el formato a la fecha usando la funcion String como bien te lo ha recomendado  Juanra15 ... pero no almacenarla como texto sino que de nuevo retornandola a un tipo de dato fecha (DATE) y de esta manera hacer el Insert

Código: SQL
  1. DATE fecha
  2. fecha =DATE(string(dp_1.text,'YYYY-MM-DD'))
  3. INSERT INTO t_fecha   ( fecha )   VALUES ( :fecha );
  4.  

Saludos
Título: Re: que pasa con la fecha y mi codigo
Publicado por: darksito en Sábado 26 de Septiembre de 2009, 16:41
bueno ya me rindo formateare la pc y instalare el sql 2008 standar y power builder 10.5 haber q sucede gracias por su participacion de todo corazon bueno ahora movere el codigo q puse de la aplicacion bancaria a otro tema para los demas usuarios
atentamente
darksito
Título: Re: que pasa con la fecha y mi codigo
Publicado por: F_Tanori en Sábado 26 de Septiembre de 2009, 21:40
Personalmente, no me parece la solucion ...

No creo que el problema sea por ahi Pero bueno cada quien


Saludos