• Viernes 19 de Abril de 2024, 20:09

Autor Tema:  Ayuda Con Validacion!!  (Leído 3443 veces)

girl18

  • Nuevo Miembro
  • *
  • Mensajes: 7
    • Ver Perfil
Ayuda Con Validacion!!
« en: Miércoles 28 de Junio de 2006, 19:44 »
0
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

  • Miembro activo
  • **
  • Mensajes: 34
    • Ver Perfil
Re: Ayuda Con Validacion!!
« Respuesta #1 en: Miércoles 28 de Junio de 2006, 20:36 »
0
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

  • Miembro activo
  • **
  • Mensajes: 58
    • Ver Perfil
Re: Ayuda Con Validacion!!
« Respuesta #2 en: Jueves 29 de Junio de 2006, 21:02 »
0
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
  1.  
  2. IF SQLCA.SQLCode = -1 THEN
  3.         MessageBox(&#34;SQL error&#34;, SQLCA.SQLErrText)
  4. END IF
  5.  
  6.  

Bueno, espero haber aportado algo a tus comienzos, cualquier duda, consulta que en el foro seguro te responden, saludos.

leoandres

  • Miembro activo
  • **
  • Mensajes: 79
    • Ver Perfil
Re: Ayuda Con Validacion!!
« Respuesta #3 en: Viernes 30 de Junio de 2006, 23:56 »
0
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
leopoldotaylhardat@hotmail.com

Leopoldo Taylhardat

Software, Organización y Sistemas

Maracay, Venezuela


"En computación solo hay una cosa segura...
   que no hay nada seguro" - Leopoldo Taylhardat

"Cada alternativa que tengas durante la búsqueda,
      será una meta en sí misma" - Jorge Olguín.

leoandres

  • Miembro activo
  • **
  • Mensajes: 79
    • Ver Perfil
Re: Ayuda Con Validacion!!
« Respuesta #4 en: Viernes 30 de Junio de 2006, 23:59 »
0
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...
leopoldotaylhardat@hotmail.com

Leopoldo Taylhardat

Software, Organización y Sistemas

Maracay, Venezuela


"En computación solo hay una cosa segura...
   que no hay nada seguro" - Leopoldo Taylhardat

"Cada alternativa que tengas durante la búsqueda,
      será una meta en sí misma" - Jorge Olguín.

k8bis

  • Nuevo Miembro
  • *
  • Mensajes: 15
    • Ver Perfil
Re: Ayuda Con Validacion!!
« Respuesta #5 en: Miércoles 5 de Julio de 2006, 01:44 »
0
algo mas especifico de lo que quiso decir leo creo que fue algo asi

Long ll_res
Integer    li_marbete

li_marbete  = Integer(data)

Choose case dwo.name
   Case "marbete"
      select count(1)
      into :ll_res
      from equipos
      where marbete = :li_marbete using SQLCA;
      
      If ll_res > 0 Then
         MessageBox("Aviso","El marbete " + data + " ya existe. Verifique!")
         REturn 1
      End If
End Choose

ramz

  • Nuevo Miembro
  • *
  • Mensajes: 14
    • Ver Perfil
Re: Ayuda Con Validacion!!
« Respuesta #6 en: Miércoles 5 de Julio de 2006, 14:53 »
0
Buen dia a todos, les hago una anotacion ojo con las sentencias SQL que tienen incluidas funciones de count, max, min, avg; pues si las tablas no estan indexadas o mantenidas en el indice puede demorarse un poco mas en el poceso de busqueda. Esto me ocurrio con una base de datos informix, esto es bueno hacerlo para tabla que no tendran crecimientos altos en el almacenamiento de datos.

Otro consejito mi querida girl18 cuando programes en PB seria mejor utilizar directamente los parametros de cada evento que te da Power Builder, es decir, no crear variables innecesarias si Power las da, esto es menos codgio, menos esfuerzo en la maquina, mas rapidez, mas simplicidad en los procesos.