Visual Basic - EDIT Duplica registros

Life is soft - evento anual de software empresarial
   
Vista:
Imágen de perfil de Fco. Javier Medrano Salez

EDIT Duplica registros

Publicado por Fco. Javier Medrano Salez (171 intervenciones) el 22/05/2009 17:10:10
Hola a todos los programadores.Alguien puede ayudarme con esto?: porqué este código hace que duplique un registro cuando supuestamente yo lo mandé editar.

TablaAlumnos '''' invoca a la BD en Acces
Select Case modo '''' modo es la variable que edita, añade o sale del sub
Case Is = 0
Exit Sub
Case Is = 1
Rs.AddNew
Case Is = 2 '' elegí previamente modo a dos, supuestamente debe editar
Rs.Edit
End Select
Rs!nombre = Text1.Text
Rs!curp = Text2.Text
Rs!fechanac = DTPicker1.Value
Rs!lugardenac = Text3.Text
Rs!nacionalidad = Combo1.Text
Rs!grado = Combo2.Text
Rs!Status = Combo3.Text
Rs!tecnologia = Combo5.Text
If Option1.Value = True Then
Rs!sexo = "M"
Else
Rs!sexo = "F"
End If
Rs!padreotutor = Text4.Text
Rs!telefono = Text5.Text
Rs!domicilio = Text6.Text
Rs!lugar = Text7.Text
Rs.Update
Rs.Close

en el pograma mando a editar, y reviso la BD y resulta que aparece el mismo nombre pero duplicado(con algun cambio que hubiese hecho).
Pueden ayudarme con el código?, en qué parte estoy mal o qué estoy haciendo mal para que se grabe el registro únicamente con los cambios hechos.
Gracias de antemano a todos.
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:EDIT Duplica registros

Publicado por P3L30N2009 (701 intervenciones) el 22/05/2009 18:23:44
Para que actualizar (modificar) un registro, el puntero tiene que estar posicionado sobre el mismo. Si has hecho un MoveLast o recorrido completamente el recordset, lo añadirá.

Anotaciones:

En el Select Case el <Is => no es necesario, funciona igual "Case 0"...

Al estar posicionado en el registro a modificar, tampoco es necesario los métodos Edit y Update.

Como ya he indicado en bastantes ocasiones en este foro, para modificar datos de una tabla es mas rápido y seguro utilizar una consulta de actualización:
UPDATE Tabla SET Campo1=Valor1, Campo2=Valor2, CampoN=CalorN

Y por último, deberías plantearte migrar de DAO a ADO.
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
Imágen de perfil de Fco. Javier Medrano Salez

RE:EDIT Duplica registros

Publicado por Fco. Javier Medrano Salez (171 intervenciones) el 22/05/2009 19:43:39
Hola amigo:
Tengo este código y no sé si con esta instruccion me posicione en el registro a editar:

Direccion = App.Path & "est22.mdb"
Set BaseDatos = OpenDatabase(Direccion)
Tira = "Select * From Alumnos"
Set Rs = BaseDatos.OpenRecordset(Tira)
Rs.FindFirst _
"NOMBRE >= '" & nom & "'" '' esta instrucción no me posiciona en el registro?

probablemente ahi es donde estoy mal. Probé en el select case sin "Is" y sí me funciona, gracias. Para mi caso, el código seria:

UPDATE Rs SET nombre = text1.tex ''' dime por favor si estoy correcto

te he de comentar que soy nuevo en esto de la programación y aún no entiendo muchas cosas, con la ayuda de todos ustedes iré aprendiendo.
Gracias nuevamente
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