SQL SERVER | Como validar datos...

2,337 views
Skip to first unread message

Aldo Santos Vargas

unread,
Dec 14, 2012, 1:14:28 PM12/14/12
to publice...@googlegroups.com

Hola a todos,

Tengo una duda de cómo realizar una validación de una información con base de datos SQL Server (3 capas) a diferencia como lo venía realizando con base de datos locales .DBF y es:

·         Con .DBF à Para validar si un producto existe  lo realizo en el botón “Grabar” y como es local, no hay problema alguno.

·         Con SQL SERVER tengo las siguientes dudas:

o    Debo validar la información en el mismo botón “Grabar” o lo debo realizar en un Procedimiento Almacenado y que éste me devuelva si esta correcto o no lo está?

o    Qué pasa si tengo que validar “producto, cliente, local, transporte y numero de guía”, eso significa que debo conectarme con el Servidor SQL SERVER y validar por cada una de ellas? Ya que me parece muy engorroso ir y venir del Servidor para validar cada uno de estos datos o es que puedo obtener esa información en tablas y validarla localmente.

o    Es una práctica normal en SQL SERVER, cuando uno desea validar un “CODIGO” se deba ir y venir las veces que sea necesaria?

o    Normalmente como se realiza una validación en este tipo de casos, es decir, si debo validar 5 campos que son PK de sus respectivas tablas?

 

Sus sugerencias serán bienvenidas, ya que lo que deseo es optimizar el tráfico de datos y espero dejarme haber entendido sino les puedo dar más detalles..

 

Saludos

Aldo Santos Vargas

Geovanny Quirós Castillo

unread,
Dec 14, 2012, 1:39:34 PM12/14/12
to publice...@googlegroups.com
Hola Aldo,
en el mismo Sp puedes hacer la consulta para saber si existe o no un código  o una combinación de campos como la que mencionas.
Recuerda que dentro de un sp puedes crear bloques de código dentro de una instrucción if
Ejemplo:
 
if exists (select ......)
begin
    ...tus instrucciones
end
else
begin
    ....tus instruciones
end
 
Puedes tener una variable de control que te permita saber si el registro existe y lo retornas como resultado de la ejecución del sp
 
Puedes hacerlo de otras formas, esta es solo una idea.
--
 
 

tomcrux

unread,
Dec 14, 2012, 2:12:27 PM12/14/12
to publice...@googlegroups.com, aldo....@aop.com.pe
Aldo,
como estas?
Antes tal dilema seguramente tienes varias opciones.
Puedes realizar la validacion en uno u otro lugar, o repartir validacion entre las partes.
 
Ahora, si estas encarando un modelo de arquitectura de 3 capas (tal como lo dices en tu pregunta) la validacion deberia estar en la capa que le corresponda.
Al hacerlo en la misma BD, utilizando un Stored Procedure estarias violando esa arquitectura y tendrias repartida logica de negocio en la BD. Esto no seria lo correcto para ese esquema.
 
Mantener la arquitectura de 3 capas seguro sonará a mas "engorroso" si se lo quiere ver asi, ya que necesitaras mayor cantidad de Stored Procedures que haran de pasamanos de datos, no interviniendo en nada que sea negocio, pero ese es el fin de dicha capa. Simples lineas de código tonto que no deberia de tomar decisiones de control ya que eso es trabajo de otra nivel dentro de la solución que estas desarrollando. La programación de la lógica de negocio, validaciones, decisiones, etc. deben ser colocadas en la capa correspondiente.
 
La capa que valida, deberá consultar a la BD tantas veces como  necesite para realizar los controles correspondientes, por mas que parezca  "tráfico excesivo de red".
 
Esto es regla, mas allá de la teconologia que estes utilizando, sea nuestro querido VFP, .Net, etc. o el motor de BD que elijas SQLServer, MySql, Firebird, etc.
 
Trabajar en este esquema de arquitectura de 3 capas suena a "engorroso" a los que trabajabamos distinto. Eso mismo pensé yo al toparme con algo asi por primera vez. Sin duda produce que nos mueve el piso a quienes veniamos de trabajar desarrollando todo en un boton "grabar" por ejemplo. Estas últimas aplicaciones mencionadas, se llaman "monoliticas", algo normal para quienes veniamos desde tiempos anteriores desarrollando en VFP.  
 
De seguro cuesta un poco cambiar de mentalidad y visualizar todo en 3 capas, pero una vez que adquieres experiencia veras que sale mas facil.
 
Esta arquitectura trae sus beneficios a futuro, aunque quizas suena a mas de trabajo al iniciarla.
 
Espero estos comentarios te sean utiles y puedas resolver que mejor te conviene.
 
Saludos desde
Córdoba, Argentina.
 
Tomás Cruz.
 
 

Aldo Santos Vargas

unread,
Dec 14, 2012, 3:19:17 PM12/14/12
to tomcrux, publice...@googlegroups.com

Hola Tomas,

Gracias por responder y diste en el punto al que quería llegar y es la del “trafico excesivo de red”.. si eso es normal -en esta arquitectura- entonces sigamos de esa manera, ya que me parecía raro ir y venir de la B.D. por cada campo que quería saber si existía en su respectiva tabla en SQL SERVER pero leyendo creo que se debe hacer de esa manera…

 

Muchas gracias por el aporte…

 

Aldo Santos Vargas

Luis Mata

unread,
Dec 17, 2012, 8:57:33 AM12/17/12
to publice...@googlegroups.com
trabaja con relaciones, y usa TRY para capturar y retornar el error a VPF, te ahorrara mucho código.
 
Sent: Friday, December 14, 2012 1:14 PM
--
 
 
Reply all
Reply to author
Forward
0 new messages