Power Builder - Problema con UPDATE

 
Vista:

Problema con UPDATE

Publicado por Mirella (5 intervenciones) el 02/11/2006 21:16:01
Tengo el sgte problema, quisiera que cuando yo no ingreso un dato me valide (cosa que se hace todo bien) y que no me grabe nada, por q me sale los mensajes que puse en la validacion pero me graba (los campos vacios, con solo el codigo generado), este es el codigo que hago mal:

Tab_1.Tabpage_1.dw_1.AcceptText()

Long ll_FilaActual
ll_FilaActual = Tab_1.Tabpage_1.dw_1.GetRow()

//Generando Nuevo Codigo
Tab_1.Tabpage_1.dw_1.Object.codigo_banco[il_FilaActual] = f_genera_codigo("codigo_banco")

String ls_Descripcion, ls_Prefijo

//Validando
ls_Descripcion = Tab_1.Tabpage_1.dw_1.GetItemString(ll_FilaActual, 'descripcion_banco')
ls_Prefijo = Tab_1.Tabpage_1.dw_1.GetItemString(ll_FilaActual, 'prefijo_banco')

IF ls_Descripcion = "" OR IsNull(ls_Descripcion) THEN
MessageBox('Mensaje del Sistema', 'Ingrese Descripcion!!!', StopSign!,Ok!)
Tab_1.Tabpage_1.dw_1.SetColumn('descripcion_banco')
Tab_1.Tabpage_1.dw_1.Setfocus()
RETURN
END IF

IF ls_Prefijo = "" OR IsNull(ls_Prefijo) THEN
MessageBox('Mensaje del Sistema', 'Ingrese Prefijo!!!', StopSign!,Ok!)
Tab_1.Tabpage_1.dw_1.SetColumn('prefijo_banco')
Tab_1.Tabpage_1.dw_1.Setfocus()
RETURN
END IF

//Guardar
IF Tab_1.Tabpage_1.dw_1.Update() = -1 THEN
ROLLBACK USING SQLCA;
MessageBox("Mensaje del Sistema", "Los cambios realizados no se actualizaron...", StopSign!)
RETURN
ELSE
COMMIT USING SQLCA;
MessageBox("Mensaje del Sistema", "Data Actualizada", Information!)
END IF

Quisera que si la validacion no es correcta (osea no se ingresa nada) no se grabe nada..
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:Problema con UPDATE

Publicado por arnaldo (4 intervenciones) el 03/11/2006 13:19:17
la validación es correcta pero en que evento estas poniendo esa validacion? si lo pusiste en el evento UPDATESTART debes de poner RETURN 1...

Saludos desde Asunción - Paraguay
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:Problema con UPDATE

Publicado por Mirella (5 intervenciones) el 03/11/2006 14:39:12
Todo lo tengo en un evento (ue_grabar) lo que yo no entiendo es por que me graba, si estoy validando para que no permita nulos o vacios, pero despues del mensaje validacion de la primera caja, me lanza el mensaje que me actualiza los datos, osea que me esta grabando y me graba solo el cdigo y los demas campos vacios.

Mi tabla es la sgte

Bancos
codigo_banco char(3) NULL (Primary Key)
descripcion_banco varchar(50) NOT NULL
prefijo_banco varchar(10) NOT NULL
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:Problema con UPDATE

Publicado por Will (13 intervenciones) el 03/11/2006 16:15:50
Por lo visto, tu código está todo bien. es muy raro que te grabe a pesar que te sale los mensajes de validación. para que vayas descartando copia tu codigo y pégalo en un command button y ejecútalo desde el botón a ver si te siguie saliendo porque pueda ser que haya duplicidad de eventos. si es que trabajas con herencias.
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

AYUDA Problema con UPDATE

Publicado por Mirella (5 intervenciones) el 03/11/2006 16:16:41
Mi tabla es la sgte

Bancos
codigo_banco char(3) NULL (Primary Key)
descripcion_banco varchar(50) NOT NULL
prefijo_banco varchar(10) NOT NULL

Evento Guardar

Tab_1.Tabpage_1.dw_1.AcceptText()

Long ll_FilaActual
ll_FilaActual = Tab_1.Tabpage_1.dw_1.GetRow()

//Generando Nuevo Codigo
Tab_1.Tabpage_1.dw_1.Object.codigo_banco[il_FilaActual] = f_genera_codigo("codigo_banco")

String ls_Descripcion, ls_Prefijo

//Validando los campos
ls_Descripcion = Tab_1.Tabpage_1.dw_1.GetItemString(ll_FilaActual, 'descripcion_banco')
ls_Prefijo = Tab_1.Tabpage_1.dw_1.GetItemString(ll_FilaActual, 'prefijo_banco')

IF ls_Descripcion = "" OR IsNull(ls_Descripcion) THEN
MessageBox('Mensaje del Sistema', 'Ingrese Descripcion!!!', StopSign!,Ok!)
Tab_1.Tabpage_1.dw_1.SetColumn('descripcion_banco')
Tab_1.Tabpage_1.dw_1.Setfocus()
RETURN
END IF

IF ls_Prefijo = "" OR IsNull(ls_Prefijo) THEN
MessageBox('Mensaje del Sistema', 'Ingrese Prefijo!!!', StopSign!,Ok!)
Tab_1.Tabpage_1.dw_1.SetColumn('prefijo_banco')
Tab_1.Tabpage_1.dw_1.Setfocus()
RETURN
END IF

//Guardar
IF Tab_1.Tabpage_1.dw_1.Update() = -1 THEN
ROLLBACK USING SQLCA;
MessageBox("Mensaje del Sistema", "Los cambios realizados no se actualizaron...", StopSign!)
RETURN
ELSE
COMMIT USING SQLCA;
MessageBox("Mensaje del Sistema", "Data Actualizada", Information!)
END IF

--------------------------------------------------------
El problema es despues validar, no deberia guardar nada, pero lo esta haciendo.. y no entiendo el porque, me eh estancado en esto quizas me estoy equivocando en algo. El problema es mi Tabla o mi codigo al guardar.
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

AUXILIO

Publicado por Mirella (5 intervenciones) el 03/11/2006 18:07:22
Estoy probando en una ventana sin herencia y sigue igual grabando.

Tiene que ver algo mi tabla..
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:AUXILIO

Publicado por JOSE (50 intervenciones) el 05/11/2006 15:59:18
Hola, estuve revizando su codigo al parecer en su validacion de grabar esta algo incorrecto pruebe con algo mas simple como por ejem:

int A

A=Tab_1.Tabpage_1.dw_1.Update()
IF A=1 THEN
COMMIT;
ELSE
ROLLBACK;
END IF

Me di cuenta que esta validando y grabando en un mismo evento trate de hacerlo en evento o abra un control command para que lo llame, quisiera que despues de capturar valores le pruebe haciendo un messagebox a lo capturado para ver si tiene algun valor nulo, son tecnicas de programacion que le puede servir despues por ejem:

ls_Descripcion = Tab_1.Tabpage_1.dw_1.GetItemString(ll_FilaActual, 'descripcion_banco')
messagebox("ls_Descripcion",ls_Descripcion)

ls_Prefijo = Tab_1.Tabpage_1.dw_1.GetItemString(ll_FilaActual, 'prefijo_banco')
messagebox("ls_Prefijo ",ls_Prefijo )

Espero que le ayude en algo...

Puede escribir a mi email si tiene alguna otra duda
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