Power Builder - Grabar Datos

 
Vista:

Grabar Datos

Publicado por miguel (7 intervenciones) el 10/01/2008 00:43:26
Hola a todos; mi consulta es la siguiente tengo una base de datos con un campo de tipo datetime, en mi formulario tengo un control editmask(em) ,despues de ingresar datos en este control presiono el boton para grabar y me sale un error que dice "Error de Asignacion", el codigo k he utilizado para grabar es una sentencia sql(insert into............);espero sus respuestas ; gracias
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:Grabar Datos

Publicado por Lan (52 intervenciones) el 10/01/2008 17:53:50
Nos hubiera servido mejor si pegabas tu sentencia...y ademas saber que bd utilizas.
Cabe anotar que si en tu bd ¿? esta definido como datetime, el campo que se grabaria tendria que tener esta forma dd-mm-yyyy hh:mm:ss (supondiendo que la fecha sea la que señalo)
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:Grabar Datos

Publicado por miguel (7 intervenciones) el 11/01/2008 00:44:47
Hola; la version de power builder k utilizo es la 9.0, la base de datos esta creada en sql server 2000; el campo creado es de tipo datetime; lo k deseo es de grabar solo con el formato dd-mm-yyyy
La setencia k utilize es la sgte

insert into articulo values(:sle_cod.text,:sle_nom,:sle_stock,:ddlb_tipo,:sle_precio,:em_venc);
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:Grabar Datos

Publicado por carlos (25 intervenciones) el 11/01/2008 16:33:10
Desde Quito-Ecuador
favor tienes que realizar una sentencia sql dando formato solo dd-mm-yyy
ej.
SELECT DateFormat(now(),'hh:mm:ss'),Day(now()) , Month(now()), Year(now())
INTO :ls_hora,:ll_dia, :ll_mes, :ll_anio FROM sys.dummy;
luego almacenas en una varible de tipo texto
ls_fecha1 = string(ll_dia) + ' / ' + string(ll_mes) + ' / ' + string(ll_anio)
delcarar una vairable tipo date ej. fecha
fecha=date(ls_fecha1)
y luego continueas con tu instruccion insert

espero que te ayude me comuncias
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:Grabar Datos

Publicado por Lan (52 intervenciones) el 11/01/2008 16:39:26
bueno el detalle es el tipo de dato datetime, te comento que en sql server las fechas se guardan yyyymmdd hh:mm:ss (formato ansi), eso quiere decir que si en tu em tienes la sgte fecha ingresada 11-01-2008 (debidamente formateado en la pestaña format), cuando lo grabes con el insert se guardara de la sgte forma 20080111 00:00:00 (internamente), y suponiendo que tu bd el lenguaje esta seteado como Ingles, al realizar una consulta desde tu motor veras 2008-01-11 00:00:00. (esta forma es como sql server maneja este tipo de dato datetime).
Segun esto quiere decir que siempre veras yyyymmdd hh:mm:ss y eso no significa que sea un error.

P:D.
Trata de utilizar solo dw es mas manejable y no le sacas provecho a los dw desperdiciando la potencia de power

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:Grabar Datos

Publicado por Jorge Escobar (110 intervenciones) el 11/01/2008 20:52:35
el problema es en la asignacion de valores.
si el campo es datatime no puedes guardar un valor texto.
primero declara una variable datetime, tomas el valor del editmask en esta variable. y el valor de la variable es el que tienes que tomar para el insert.

datetime ldtm_fecha
string ls_error
ldtm_fecha = datetime(date(em_venc.text))

insert into articulo
values(:sle_cod.text,:sle_nom.text,:sle_stock,:ddlb_tipo.text,:sle_precio,:ldtm_fecha);
If SQLCA.SQLCode <> 0 Then
ls_error = SQLCA.SQLErrtext
Rollback Using SQLCA;
MessageBox("Error","INSERT INTO ARTICULO " + ls_error , StopSign!)
return -1
End If

nota. según el insert que realizas supongo que tambien tienes campos decimal, tambien deves de realizar la conversión para evitar problema alguno.
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