Pregunta: | 28868 - COMO PUEDO TRATAR LOS ERRORES |
Autor: | Manuel Eduardo Ruiz Baca |
En mi motor de base de datos, en mi tabla clientes, mi columna DNI la he especificado como UNIQUE.
Cuando ejecuto la aplicación e ingreso un nuevo cliente y en el campo DNI le ingreso un numero DNI repetido me sale este mensaje Data Windows Error SQLSTATE = 23000 [Microsoft][ODBC SQL Server Driver][SQL Server]Infracción de la restricción UNIQUE KEY 'cons_02'. No se puede insertar una clave duplicada en el objeto 'CLIENTE'. Mi pregunta es como podria capturar este error y evitar que en lugar que salga este mensaje me salga un MessageBox donde diga que he ingresado un DNI repetido. Ojalá puedan ayudarme |
Respuesta: | isaac matal |
necesitas codificar el evento DBError en tu datawindow control, aqui te dejo un ejemplo tomado de la ayuda de powerbuilder.
Este ejemplo se da cuando en una base de datos de sybase se intenta insertar un registro y uno de los campos recibe un valor nulo y el campo se declaro como not null en su creacion. IF sqldbcode = -195 THEN MessageBox("Missing Information", & "You have not supplied values for all " & +"the required fields.") END IF // Return code suppresses default message box RETURN 1 |
Respuesta: | Roberto Calderón |
amigo:
Veo que estas usando sql server, cada manejador de BD tiene una codificación para sus errores, entonces lo que debes hacer es averiguar estos, luego en el evento "dberror" del objeto control dw, validas: if dbcode = " " then // codigo de error messagebox('Error','DNI repedito') return end if de esta manera ya no saldra el mensaje que me indicas arriba. Si deseas optimizar esto, prodrias crear un tabla donde almacenes todos los errores. Suerte |