Comparar campos de una misma tabla en sql mobile

Que tal estoy trabajando con sql server 2005 pero en compact framework.. Quisiera comparar 4 columnas(zafra, numero, labor, lote) respecto a sus campos, ya que no quiero duplicación de datos ejemplo
Zafra, numero, labor, lote, ID(identity)
1 101112 52 1 1
1 101112 52 2 2
1 101112 52 1 3
Digamos que ahí ya hay duplicación de datos en cuanto a las 4 columnas en sus datos el del id=1 y id=3 siendo el ID la llave principal e identity, no quisiera que haya eso de duplicación de los 4 siendo igual de la fila 1 con la 2 ni con la fila 3 y así.., ya que siempre que el usuario desde visual studio 2005 (para mobile) que cuando introduzca y sean los 4 campos iguales que le arroje mensaje de que pues no se puede por duplicación tiene que haber al menos en un campo algo diferente para que lo acepte... Así que con solo que me des la consulta respectiva con eso

3 Respuestas

Respuesta
1
La verdad nunca he trabajado con las versiones para movile de Visual, entonces creo que en lo que te puedo ayudar es dándote la idea general de como solucionar el problema...
Tu en algún momento haces consultas a la base de datos donde estas guardando la información...
Lo que debes de hacer es enviar una consulta SQL desde visual "select * from campos where...", en el cual evalúes si ya existe un registro con los datos que se están intentando ingresar (Esto lo debes hacer antes de almacenar el registro)
Y si la consulta te devuelve al menos un registro quiere decir que ya existe...
Entonces a nivel de visual evalúas antes de ingresar el registro que NO exista, si es así lo guardas normalmente, pero de lo contrario
Le muestras un mensaje o algo que indique que ya existe un registro con los mismos datos...
Si estuvieras utilizando versiones para Windows xp o 7 te podría colaborar con más...
Cierto amigo pues es ahí el problema... digamos que nos olvidamos de mobile... y de visual... ¿digamos qué solo stamos trabajando con sql server
como seria la consulta para hacer esa comparación es decir yo se que si me regresa campos iguales sabre que eso es lo que no quiero en cuanto sepa que m regresa algo igual es cuando hago la programación el problema aquí es que consulta es? Me trabe con eso :S a lo mejor esta fácil pero no se..
Seria algo así:?
select zafra,lote,numerolabor where zafra=zafra and lote=lote and numero=numero and labor=labor group by zafra,lote,numero,labor
me doy a entender???? es algo asi la idea pero se que esta mal jejej me puedes ayudar?
Como desconozco la estructura de tus tablas te voy a ayudar con una consulta genérica...
Seria así...
SELECT COUNT(*) FROM NombreTabla WHERE campo1='valor1' AND campo2='Valor2' AND campo3='valor3'
Esa consulta te arroja un numero que si es devuelve la CANTIDAD de registros que cumplieron con esa condición...
Ya tienes que evaluar a nivel de visual si el resultado es mayor o igual a 1 (Quiere decir que el registro ya EXISTE)...
Me cuentas si te funciono...
SELECT * FROM captura_valores WHERE zafra=1 AND lote=2 AND labor=3 and numero=4
Cierto eso mismo quería... que si el usuario introduce por ejemplo... 1,2,3,4 y todo eso es lo mismo que ya esta en la BD que le diga que nooop mijito no se puede por que ya hay esos datos amigo EXCELENTE! Gracias de verdad... a favoritos te me vas! jjejejjejeje gracias por compartir tus conocimientos mira que fácil era lo bueno que me desatoraste jajaj hasta pena m dio compa
Respuesta
1
Debes crear un indice único en el cual involucras los campos que no quieres que se repitan.
Si es un indice pero no sabre los campos que no quiera que se inserten de nuevo ya que el usuario es el que estará en contacto con el programa y podrá insertar lo que quiera... nomas no quiero que se repitan.. lo solucione así:
"SELECT * FROM captura_valores WHERE zafra=" & zafra & "  AND lote=" & lote & "  AND labor=" & labor & "  and numero=" & numero & " "
Y ya cuando analice de nuevo la consulta e introduzca lo mismo se le arrojara el error gracias ralvaradot por la idea! Me ayudo a solucionarlo!
Respuesta
1
Lo que hago es que antes de insertar verifico con un select si existe el registro, por ejemplo:
 select zafra, numero, labor, lote from Tabla where zafra = ' Dato que quieres insertar' and numero = ' Dato que quieres insertar ' and labor = 'Dato que kieres insertar' and Lote ='lote que kieras insertar'
En caso de que no te marque ningún registro entonces insertas
de otra manera no insertas,
espero te sirva
de no servirte espero tu respuesta con el código de lo que estas haciendo

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas