Visual Basic - Buscar Registros duplicados

Life is soft - evento anual de software empresarial
 
Vista:

Buscar Registros duplicados

Publicado por XZkorpio (12 intervenciones) el 10/08/2005 17:25:55
Buenas a Todos: mi pregunta es la siguiente:

Estoy trabajando con un formulario de carga de datos y en dicho form cargo un numero de orden que es el Indice de la Tabla.-
Como se cargan registros no correlativos, necesito saber , como hago para averiguar si dicho numero de orden que me ingresa el usuario ya esta utilizado o no, para evitar errores en tiempo de ejecucion y que el programa se cuelgue.-

Utilizo VB 6 con SP5 y una tabla de Access 2000, no utlizo ADO, estoy trabajando con control Data.-

Desde muchas gracias a todos.-

Un Abrazo.-

XZkorpio.-
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

RE:Buscar Registros duplicados

Publicado por Zeta (3 intervenciones) el 10/08/2005 17:43:18
Pues puedes buscar por el indice si el numero orden esta siendo utilizado. si utilizas un control data seria algo asi

data1.recordset.Seek"=", numero orden a buscar. si existe, pues no dejes que escriba ese.

RsSubActividad.Seek "=", TreeView1.SelectedItem
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:Buscar Registros duplicados

Publicado por XZkorpio (12 intervenciones) el 10/08/2005 20:25:20

Zeta: he intentado utilizar la forma que me has comentado pero no me funciona.
Sera a lo mejor porque asigno la Propiedad RecordSource del objeto Data con una sentencia SQL?.-

Me estoy manejando mucho con sentencias en SQL y la verdad que con ellas me llevo bastante bien.-

De todas maneras muchas gracias, seguire buscando e intentando.-

Un abrazo.-

XZkorpio.-
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:Buscar Registros duplicados

Publicado por Zeta (3 intervenciones) el 10/08/2005 21:45:19

Pues podria ser eso. El metodo seek no se aplica a todos lso tipos de recordset. Creo que solo son a los dynaset y los tableset. De todas formas busca bien en la ayuda. Podrias tambien utilizar lso metodos movenext, este si que se aplica creo a todo tipo de recordset, auqnue no es tan rapido como buscar por el campo llave.

suerteeeeee
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:Buscar Registros duplicados

Publicado por XZkorpio (12 intervenciones) el 11/08/2005 00:07:40
Zeta: te comento, estuve intentando nuevamente y no he avanzado nada, la verdad esto me pone un poco triste, pero bueno, seguire en la lucha. :D

La ultima solucion que se me ocurrio fue, volcar, en la carga del form, todos los codigos o nros de orden que tenga en un vector, de ahi, cuando un usuario intente ingresar un nuevo nro de orden, mediante una busqueda dicotomica realizo la busqueda.-

Tengo que tener en cuenta que este proceso se me hara pesado a medida que crezca el volumen de datos - por eso realizo la busqueda dicotomica - pero viendo como estan las cosas no me queda otra.-

Desde ya muchas gracias.-

Un Abrazo.-

XZkorpio.-
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:Buscar Registros duplicados

Publicado por Zeta (3 intervenciones) el 11/08/2005 02:23:16

Pues no se que quieres decir con busqueda dicotomica. Pero a ver, por que simplemente haces una pequeña consulta extrayendo solo el campo llave.

Set RsSubActividad = db.OpenRecordset("Select numero orden from Datos")
RsSubActividad.Index = "Nombre" nombre del indice
RsSubActividad.Seek "=", nuevo numero de orden
If RsSubActividad.NoMatch Then seguir con el procedimiento
else
Debe buscar otro numero de orden
End If
set RsSubActividad=nothing

Con esas lineas solucionas tu problema. Cada vez que vayas a entrar un dato, corres esta pequeña consulta y no creo que eso te robe demasiada velocidad al programa.

un saludo
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:Buscar Registros duplicados

Publicado por kinoscar (233 intervenciones) el 11/08/2005 14:09:10
hace mucho que no trabajo con el datacontrol pero si no me equivoco posee la funcion findfirst que se puede utilizar de esta manera

datacontrol1.recordset.movefirst
datacontrol1.recordset.findfirst "indice=" & text1.text
if datacontrol1.recordset.nomatch=false then
msgbox "Indice encontrado",vbinformation
exit sub
end if

me parece que asi es

espero te sirva
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:Buscar Registros duplicados

Publicado por XZkorpio (12 intervenciones) el 17/08/2005 00:08:24
Bueno, muchachos: seguire intentando a ver que es lo que puedo lograr.-

Muchas gracias y perdon por las demoras.-

Un Abrazo.-

XZkorpio.-
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

Gracias por su Colaboracion, ya encontre solucion

Publicado por XZkorpio (4 intervenciones) el 27/08/2005 00:27:08
Muchachos: muchas gracias por la ayuda brindada anteriormente y disculpas por haberme demorado tanto tiempo en responderles.
Ahora les comento que ya encontre la solucion: el tema es el siguiente, cuando se intenta ingresar un registro con indice duplicado VB tira un error, lo que yo hice fue interceptar ese error y de esa manera impedir el Ingreso de dicho dato.-

Muchas Gracias.-

Saludos.-

XZkorpio.-
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:Gracias por su Colaboracion, ya encontre soluci

Publicado por Gustavo (5 intervenciones) el 24/09/2005 07:51:30
Hola me gustaria ya que encontraste la solucion que me ayudaras, tengo un problema similar, te explico acontinuacion:
Tengo una BD en Access y estoy trabajando con Vb y un datacontrol.

Tengo un programa que lleva el control o inventario de dvds, entonces a la hora de guardar un nuevo dvd(poseeo un boton guardar), si el Id de este dvd se repite que me mande un mensaje que el dvd ya existe si no que me lo guarde.

Por favor ayudame que he intentado y no haya solucion.
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:Gracias por su Colaboracion, ya encontre soluci

Publicado por XZkorpio (12 intervenciones) el 26/09/2005 15:00:16
Buenas tardes: mira te comento lo que yo he hecho, cuando intentas guardar un registro con el Indice Duplicado en un tabla de Access 2000 utilizando el datacontrol, VB te tira un mensaje de error con el Numero 3022 - Registro con Indice Duplicado.-
Lo que yo hice es en el Metodo Update del Data (cuando supuestamente mandan a guardar el alta) es que me intercepte ese error con la sencilla On Error Goto.-

Quizas no es la mejor forma de hacerlo, NO LO SE, pero a mi me resulto.-

Espero te sea de utilidad.-

Cualquier cosa no tenes mas que escribirme.-

Un Abrazo Gigante.-

XZkorpio Argentina.-
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:Gracias por su Colaboracion, ya encontre soluci

Publicado por Gustavo (5 intervenciones) el 28/09/2005 07:29:24
soy nuevo en esto y no se como usar ese On Errror Goto quizas me podrias enviar el codigo que usastes por que a mi no me da
Gracias
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:Gracias por su Colaboracion, ya encontre soluci

Publicado por XZkorpio (4 intervenciones) el 04/10/2005 18:34:54
Gustavo : aca te envio una sintesis de lo que necesitas.-

Procedimiento que invocas cuando mandas a guardar el registro:

On Error Goto ManejoError

sentencias...
objdata.recordset.update

ManejoError:
if err.number=3022 then
msgbox "Imposible Guardar ya que el Nro de Orden ya ha sido utilizado",vbinformation
objdata.recordset.cancelupdate
exit sub
endif
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