|
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
|