Inicio > Power Builder > aldob > me podrias dar un ejemplo

me podrias dar un ejemplo

Experto:
Usuario:
Fecha: 22/11/2008
Valoración: (5,00 sobre 5) Categoría: Power Builder
22/11/2008
privatte, usuario preguntando en Power Builder
Usuario
oa friend necesito un ejemplo para entender mejor el tema de los errores.

tengo la tabla AREA

-ARE_COD
-ARE_DESCRIPCION

ambas primary key
cuando estoy insertando un registro
y ese registro ya esta en la tabla power da un error por defecto cierto.

o sea dice not unique key is duplica

es necesario hacer la comparacion en la tabla para ver si el dato ya esta o solo basta con manejar el error de otra forma ya que la llave no permite datos duplicados.

me podrias dar un ejemplo en codigo de como solucionarias esto gracias amigo.


22/11/2008
privatte, experto respondiendo en Power Builder
Experto
Hola

1. Una tabla con la estructura que planteas no necesita ambos campos como primary key
Si no querés que se duplique la descripcion podes agregar una constraint unique x descripcion

2. No tiene sentido hacer una comparación para ver si el registro ya existe en la base xq es una pérdida de tiempo y de procesamiento. Ese tipo de cosas se las dejás al DBMS que valida según la PK o constraints que le hayas definido.

3. si lo que querés es mostrar un mensaje de error personalizado (x ej: si el DBMS saca un error en ingles o con palabras raras para el usuario), lo que tenés que hacer es codificar el evento dberror() en la dw (te conviene en la estandard)
En el dberror capturá el número de error del DBMS y llamá a una fx que busque la correspondiente descripción en castellano en una tabla.

Ej: dberror
//sqldbcode = arg del evento
IF sqldbcode <> 0 THEN f_mensaje_error_detalle(sqldbcode)
//si queres podes preguntar que devuelve la fx y si da error o no encontro mostrar el mensaje original

return 1//para que no muestre el mensaje x defecto de PB
--------
f_mensaje_error_detalle(long arg)
//versión resumida

//acá haces un select de la tabla errores_bd_traducidos con el arg
//si no encuentra (sqlca.sqlcode = 100) entonces aún no lo traduciste, si queres podes generar un //log de mx pendientes y/o mostrar el mensajeoriginal si lo pasas como argumento return 0
//si error -> manejo de error return -1
//si lo encontró entonces
return messagebox("atención", "Ha ocurrido el siguiente error:~n" + ls_descipcion_de_la_tabla + "~nError número: " + String(arg)) //el error numerico se lo mostras para uqe lo pueda mencionar si llama al helpdesk o a alguien

Saludos
AldoB
22/11/2008
privatte, usuario preguntando en Power Builder
Usuario
como agrego esto

constraint unique x descripcion

no sabo uppsss



gracias
22/11/2008
privatte, usuario preguntando en Power Builder
Usuario
Excelente. Una fantástica solución.
Enlaces patrocinados