Power Builder - Validaciones

 
Vista:

Validaciones

Publicado por jeferson zamudio (17 intervenciones) el 02/02/2007 17:21:24
Hola quisiera saber como puedo hacer para poder hacer para q cuando quiera eliminar un archivo de la bd que ya se encuentra relacionado con otra tabla me salga un mensaje de error.

Aqui otra como puedo validar los campos de un datawindow gracias de antemano saludos de peru
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
Imágen de perfil de Antonio
Val: 176
Bronce
Ha mantenido su posición en Power Builder (en relación al último mes)
Gráfica de Power Builder

RE:Validaciones

Publicado por Antonio (1271 intervenciones) el 02/02/2007 23:34:51
Hola Jeferson:

Para el primer problema no puedo ayudarte..

Para el segundo problema, haz lo siguiente:

1) Crea un objetivo de tipo CommandButon y crea un evento llamado "ue_valida" y como Event ID debes seleccionar la opción de "pbm_custom01"

2) en el evento "ue_valida" pon este código:

long row = 1
integer colnbr = 0
string colname,ls_msge,ls_campo
is_conti = 'S'
AcceptText ( datawindow )

Do While row <> 0
colnbr++
if FindRequired( datawindow,Primary!, &
row, colnbr, &
colname, false ) < 0 then exit

if row <> 0 then
ls_campo = Describe(datawindow,colname+'.tag')
ls_msge = ls_msge+'~n'+'* '+ls_campo
is_conti = 'N'
end if
loop

if is_conti = 'N' then MessageBox('Campos requeridos ...',ls_msge,StopSign! )

ahora regresa al evento clicked de tu commandbutton, y pega este código:

Triggerevent ( this, 'ue_valida' )
if is_conti = 'S' then
SetFocus ( datawindow)
return
end if

con esto puedes validar todos los campos que sean requeridos, si tus campos no son requeridos, este proceso no te funcionará.

P.D.

En el painter de tu datawindow entra a las propiedades de cada campo y en la opción "Tag" coloca el texto o nombre del campo que deseas que aparezca en el mensaje de advertencia.

Espero te sirva amigo...

Saludos desde México... ¡ SUERTE !
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:Validaciones

Publicado por Leopoldo Taylhardat (710 intervenciones) el 03/02/2007 15:56:48
Saludos...

En 'Propiedades' del DW entras en la tableta validación y te aparecen dos ventanitas, en la superior coloques como se debe validar y en la inferior el mensaje qe debe aparecer en caso de error, ejemplo:

Tienes un dato que debe tener al menos cinco (5) caracteres..

en la validación pones:

len(getData()) >= 5

en la de mensaje:

'Error, debe escribir al menos cinco (5) caracteres...'

espero que te sirva...
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:Validaciones

Publicado por Jancarlo (890 intervenciones) el 03/02/2007 16:33:34
Creo q ya te ayudaron con tu segunda pregunta, voy a tratar de ayudarte con la primera.

Primero que todo tienes que tener en cuenta que en una BD Relacional todas las tablas deberian estar relacionadas, valga la redundancia, entonces al intentar eliminar un registro que posee otros registros que dependen de este, pues la BD te arrojará un error ..... entonces sólo haria falta programar en el evento DBERROR de tu DW el cual tiene una variable SQLDBCODE, este te captura el código de error de la BD, según este tu podrás personalizar tu mensaje.

Ejemplo:

//Evento Dberror de un DW

choose case sqldbcode
case 1400
messagebox('Error','El registro a insertar contiene valores nulos')
case else
messagebox('Error',sqlerrtext)
end choose
return 1

Y asi tu puedes colocar el mensaje de error según el código que te arroje. Cabe recordar que los códigos cambian según la BD a la cual te conectes.

Espero te sirva de ayuda

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

Sobre BD y la integridad de las relaciones...

Publicado por Leopoldo Taylhardat (710 intervenciones) el 03/02/2007 19:19:43
Saludos...

Tengo una duda... tu pregunta se basa en eliminar un archivo...¿ a qué te refieres cuando hablas de archivo? ¿ a una tabla?, ¿a una serie de datos dentro de una tabla?... en primer lugar debes estar claro con el concepto de base de datos relacional... en este tipo de base de datos, por así decirlo hay un solo archivo para todos los datos de la BD, no son archivos separados (en teoría ya que puedes tener extensiones de la base de datos, clusters, etc....), por ejemplo en dbf tienes un 'archivo' para cada 'tabla', uno para cada 'índice', etc... aquí no!... auí tienes un (1) pote de datos para toda la BD... si quieres eliminar una tabla, y utilizas DROP TABLE, no hay pero que valga, la tabla se borra y todas las relaciones que existan a esta tabla MUEREN!!!!, si eliminas una serie de datos de una tabla que están relacionados a una tabla eso se maneja bajo la relación de dependencia sobre esta tabla de las tablas dependientes (eso se llama la relación de INTEGRIDAD), tu al diseñar (definir, crear, etc... como lo quieras llamar) defines la integridad de la relación...

Puedes definir que la relación es restringida:
Si existen datos dependientes, los datos no se borran...

Puedes definir que la relación es cascada:
Si existen datos dependientes, los datos dependientes se borran...

Puedes definir que la relación es 'Set Null':
Si existen datos dependientes, los datos dependientes no se borran... pero las columnas que definen la dependencia se colocan en valor 'nulo'...

Puedes definir que la relación es 'None':
Si existen datos dependientes, los datos dependientes no se borran... y se deja el valor que contenían...

Puedes definir que la relación es 'Set Default:
Si existen datos dependientes, los datos dependientes no se borran... pero las columnas que definen la dependencia se colocan en valor por defecto...

Estas son las condiciones de dependencia y las puedes definir para la actualización (UPDATE) o eliminación de datos (DELETE).
Ahora bien...
NO TODAS LAS BASES DE DATOS TIENEN PARA DEFINIRSE TODAS LAS CONDICIONES!!!, eso depende del gestor de la BD,
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