Power Builder - Mostrar error al hacer retrieve en un ds Continua

 
Vista:

Mostrar error al hacer retrieve en un ds Continua

Publicado por alfredo (8 intervenciones) el 04/02/2008 18:55:54
Hola Samuel el codigo q me pasaste funciona bien si es un objeto dw
pero si lo pongo en un standar class datastore no , el mensaje de error nunca se muestra

Espro me puedas seguir ayudando
Saludos
---------------------------------------------------------------------------------------------------------------------------
//algo asi en el dberror
string ls_msj

CHOOSE CASE SQLdbcode
CASE -195 //error por falta de datos
ls_msj = "Verifique que todos los datos obligatorios esten registrados~r"
CASE -194 //cuando la tabla maestra no encuentra relacion al detalle
ls_msj = "No se encuentra el registro padre de alguno de los valores especificados~r"
CASE -193 //cuando existen datos duplicados
ls_msj = "Datos duplicados. Los datos especificados ya existían antes de guardar~r"
CASE -198 //error cuando la tabla maestra no puede eliminar el detalle
ls_msj = "- Para eliminar este registro debe eliminar previamente sus registros-hijo asociados~r"
CASE ELSE //para otros errores no previstos
ls_msj = ""
messagebox("",sqlsyntax)
END CHOOSE

ls_msj += STRING (SQLDBCODE)+": "+SQLERRTEXT

messagebox("Error al Guardar",ls_msj, Exclamation! )

// retorna el codigo que suprime el error
RETURN 1;

// estos códigos de error son de oracle.

Un saludo.
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: Mostrar error al hacer retrieve en un ds Conti

Publicado por samuel (52 intervenciones) el 04/02/2008 20:41:36
Hola alfredo,

te creas el datastore standard class de nombre u_ds por ejemplo y en el dberror pones el código
(el sqldbcode no se si es igual para todas las bd).

Luego, donde necesites el datastore, seria algo así:

u_ds lds_tudatastore

lds_tudatastore = create u_ds
lds_tudatastore.DataObject = 'd_tudataobject'
lds_tudatastore.SetTransObject(SQLCA)

li_res = lds_tudatastore.Retrieve()
//
//cuando acabes no te olvides de hacer el destroy del objeto

para probar que funciona puedes por ejemplo, intentar hacer un insertrow y un update en el datastore sin meter la clave primaria, a ver que código de error te devuelve. Pon un punto de ruptura en dberror para asegurarte de que los sqldbcode no sean distintos.
Si tu tabla es por ejemplo código y nombre y código lo tienes como not null haces algo así

ll_fila = lds_datastore.insertrow(0)
lds_datastore.setitem(ll_fila,"nombre","samuelin")
lds_datastore.update()

saltara el dberror del datastore por un error de inserción por ejemplo.

Cualquier cosa comentas. Un saludo.
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: Mostrar error al hacer retrieve en un ds Conti

Publicado por alfredo (8 intervenciones) el 05/02/2008 21:47:38
Muchas gracias Samuel ,
el codigo funciona correctamente ,ademas creo q ya encontre mi error

en
lds_tudatastore = create u_ds

estaba colocando
lds_tudatastore = create datastore

Saludos desde Lima
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