** NORMAS DEL FORO **
Inicio del foro Inicio del foro > Access y VBA > Access y Otros sistemas
  Mensajes nuevos Mensajes nuevos RSS - Eliminar uno de varios
  Preguntas frecuentes Preguntas frecuentes  Buscar en el foro   Eventos   Registro Registro  Iniciar sesion Iniciar sesion

Tema cerradoEliminar uno de varios

 Responder Responder
Autor
Mensaje
rita2007 Ver desplegable
Nuevo
Nuevo
Avatar

Unido: 05/Abril/2007
Localización: Ecuador
Estado: Sin conexión
Puntos: 24
Enlace directo a este mensaje Tema: Eliminar uno de varios
    Enviado: 24/Agosto/2011 a las 22:14
... hola a todos... chicos tengo un problemita que no había pillado... y es el siguiente... estoy trabajando con Access 2003 y VB6... y tengo este registro:

D&&&&&&&&&&&& H&&&&&&&&&&&& ID&&&&& cas19&&&&& cas20
01/05/2011&&&&&31/07/2011&&&&&8899&&&&&1407,47&&&&&168,89
01/05/2010&&&&&30/04/2011&&&&&8899&&&&&1223,89&&&&&146,87
01/03/2010&&&&&30/04/2010&&&&&8899&&&&&1064,25&&&&&127,71
01/09/2009&&&&&28/02/2010&&&&&8899&&&&&967,5&&&&&116,1
01/08/2009&&&&&31/08/2009&&&&&8899&&&&&879,15&&&&&0

... y quiero eliminar solo uno, podría ser el ultimo... ejecuto la consulta de eliminación:

V = 8899

Conexion.Execute "DELETE * FROM AcReEmp WHERE ID =" & V

... y allí esta el problema... me elimina todos.... la pregunta.... como hago para que solo sea el que yo elija del mismo ID... gracias de antemano.... salud2

.... aprendiendo....
Arriba
MexMan70 Ver desplegable
Colaborador
Colaborador


Unido: 17/Julio/2007
Localización: DarkSide
Estado: Sin conexión
Puntos: 9233
Enlace directo a este mensaje Enviado: 24/Agosto/2011 a las 23:11
Pues "decirle" exactamente cual es el que quieres eliminar. Te recuerdo que ningun ordenador hace nada si no se lo decimos tal y cual lo queremos.
OneDrive: http://sdrv.ms/Vk6eJd
Arriba
Javier_accdb Ver desplegable
Asiduo
Asiduo


Unido: 24/Agosto/2011
Localización: Castellón
Estado: Sin conexión
Puntos: 291
Enlace directo a este mensaje Enviado: 28/Agosto/2011 a las 14:28
Hola, no es por nada pero en la columna id todos son 8899
Arriba
rita2007 Ver desplegable
Nuevo
Nuevo
Avatar

Unido: 05/Abril/2007
Localización: Ecuador
Estado: Sin conexión
Puntos: 24
Enlace directo a este mensaje Enviado: 29/Agosto/2011 a las 18:31
... gracias a todos por ayudar... ya tengo la solucion... y no era la cadena de eliminacion... porque borraba todos los registros del ID... la idea es pasar con un While recorset.eof= false ... y correr hasta encontrar el registro a eliminar ... ubicado ... aplicar ... recorset.delete ... y listo ... amigos ya pueden cerrar el hilo... gracias de nuevo a todos....
.... aprendiendo....
Arriba
Yamamoto Ver desplegable
Colaborador Especial
Colaborador Especial


Unido: 18/Septiembre/2010
Localización: Hirosima
Estado: Sin conexión
Puntos: 3362
Enlace directo a este mensaje Enviado: 29/Agosto/2011 a las 22:11
Pero tu solucion no es coherente con el problema planteado. En efecto, como te decía Javier y al menos en el ejemplo que has puesto, todos los ID eran los mismos, con lo cual es logico que se te borraran todos.
Comentarte que recorrer un recordset para borrar un registro, tampoco tiene sentido.
Si partimos de la base de que cada registro de tu base de datos tiene un identificador unico, un Conexion.Execute con una condicion WHERE "ADECUADA" sería mas que suficiente, además de ser más rapida y efectiva. (Recorrer un recordset de 3 millones de registros en un bucle para borar uno solo...en fin...me parece una muy mala solución)


Editado por Yamamoto - 29/Agosto/2011 a las 22:15
**Saludos**挨拶および平和
Arriba
rita2007 Ver desplegable
Nuevo
Nuevo
Avatar

Unido: 05/Abril/2007
Localización: Ecuador
Estado: Sin conexión
Puntos: 24
Enlace directo a este mensaje Enviado: 30/Agosto/2011 a las 18:12
... hola YAMAMOTO... me dejaste con muchas dudas en tu planteamiento... ejemplo como construirías tu eso que llamaste " condición WHERE "ADECUADA" sería mas que suficiente" ... para eliminar un solo registro... porque en la pregunta que da inicio a este post iniciado por mi.. puse un ejemplo de lo que quería... tengo varios registros los cuales tienen el mismo ID y solo requiero eliminar uno solo... la construcción:
rs.conexion "delete ... etc... where id=" & 8899
----
me eliminaba TODOS los registros .... pero ahora la construcción que elimina específicamente el registro deseado seria esta:
sql = "select id, cas19, cas20 where id =" & 8899

If rs.State = adStateClosed Then
Else
rs.Close
End If

rs.Open Sql, Conexion, adOpenKeyset, adLockOptimistic, adCmdText

Do While rs.EOF = False
If rs!Cas19 > 500 then
rs.delete
End If
rs.MoveNext
Loop

----
ahora maestro cual podría ser la mejor o mas optima solución...???? agradeciendo de antemano toda ayuda....


Editado por rita2007 - 30/Agosto/2011 a las 18:14
.... aprendiendo....
Arriba
Yamamoto Ver desplegable
Colaborador Especial
Colaborador Especial


Unido: 18/Septiembre/2010
Localización: Hirosima
Estado: Sin conexión
Puntos: 3362
Enlace directo a este mensaje Enviado: 30/Agosto/2011 a las 23:55
Una clausula Wehre adecuada seria:
Conexion.Execute "DELETE * FROM AcReEmp WHERE ID =8899 AND Cas19 > 500"
¿Acaso no son las dos condiciones que empelas tu en el recordset?.
Es decir...pasas como Where un ID concreto y otra condicion concreta (Cas19 > 500 )
**Saludos**挨拶および平和
Arriba
rita2007 Ver desplegable
Nuevo
Nuevo
Avatar

Unido: 05/Abril/2007
Localización: Ecuador
Estado: Sin conexión
Puntos: 24
Enlace directo a este mensaje Enviado: 23/Enero/2012 a las 15:31
.... hola cierto lo que dices... retome el proyecto... después de una larga enfermedad.... gracias por la ayuda.... ya pueden cerrar el hilo...
.... aprendiendo....
Arriba
 Responder Responder
  Compartir tema   

Ir al foro Permisos de foro Ver desplegable