Programación General > Power Builder

 Ayuda Con Validacion!!

(1/2) > >>

girl18:
Hola les escribo para ver si alguien me puede ayudar, con un problema tengo, lo quiero hacer es lo siguiente: tengo una tabla llamada equipos y esta tabla tiene varios campos entre los cuales hay uno llamado marbete, y lo que yo quiero es que cuando el usuario vaya a ingresar un nuevo marbete , es sistema no le permita ingresar un numero de marbete si este ya existe, es decir quiero antes de guardarlo, me compare el dato introducido con los existentes en la base de datos para ese campo. Espero me pudan ayudar, ya que estoy empezando a utilizar esta herramienta, y no c como hacer esto....

jc_investigador07:
hola que tal. quizas esto porcion de codigo te ayude en tu problema, primero el dato que deseas comparar lo almacenas en una variable, aca de muestro mas o menos como seria la lógica:

variable = <dato_comparar>

select <campo> into :variable  from <tabla> where <campo>=:variable;
 if sqlca.sqlcode=0 then
//dato encontrado
else
//dato no encontrado
end if

Me respondes si te salio. bye :hola:

pierpiter:
Te agrego una descripción más sobre el sqlca.
El SQLCA es un objeto que se usa en la transacción, me imagino que algo ya sabrás de esto.
El SQLCode es una propiedad del objeto SQLCA que te devuelve el número de error después de la ejecución de una sentencia. Los números de error más comunes son:

0   Se ejecutó correctamente.
100   Cuando no se encuentra el registro.
-1     Cuando hay algún error en la sentencia.

Por ese motivo en el ejemplo pregunta por el valor de esta propiedad (si es 0, es porque encontro el registro, si es distinta de 0 es que no lo encontró).
Hilando fino, puede que haya algún error en la sentencia o que quieras comparar valores que no corresponden (por ejemplo, un dato string con un campo númerico en la base de datos) en este caso te estaría devolviendo el código de error -1 pero aparecería como que no lo encontró, cuando en realidad hay un error en la sentencia, no quiere decir que el dato no exista.
también podés usar otra propiedad de este objeto (SQLCA) para ver una descripción del error producido (la propiedad SQLErrText), acá un ejemplo:

--- Código: Text --- IF SQLCA.SQLCode = -1 THEN         MessageBox(&#34;SQL error&#34;, SQLCA.SQLErrText)END IF  
Bueno, espero haber aportado algo a tus comienzos, cualquier duda, consulta que en el foro seguro te responden, saludos.

leoandres:
Saludos...
Tienes que programar el evento itemchanged para hacer la búsqueda que te sugieren por el select...

//Evento itemchanged
// asumo que marbete es un string es el nombre del campo en el datawindow...
CHOOSE CASE 'MARBETE'
string sl_dato, sl_dato1
sl_dato=this.Getitemstring(this.getRow(),'marbete')
SetNull(sl_dato1)
select marbete into :sl_dato1 from tabla where marbete = :sl_dato;
IF sl_dato=sl_dato1 THEN
MessageBox('Error!','Marbete ya existe!')
END IF

leoandres:
Disculpa... utiliza en vez de sl_dato=this.getItemstring(this.getRow(),'marbete') lo siguiente...
sl_dato=data

donde "data· es el valor almacenado temporalmente para los procesos internos del datawindow...

Navegación

[0] Índice de Mensajes

[#] Página Siguiente

Ir a la versión completa