Access - Eliminar registro que cumpla ciero criterio

   
Vista:

Eliminar registro que cumpla ciero criterio

Publicado por Luis luis253008@yahoo.com.mx (16 intervenciones) el 04/02/2015 20:34:37
Hola reciban un saludo ya que llevo varios días leyendo y pero no he podido aplicar este código me marca los siguientes errores
1. error 13 no coinciden los tipos
2: error de sintaxis
ya he quitado y puesto líneas a este código y no encuentro.
Espero me puedan ayudar a ver en donde esta mi error este es el código

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
Dim datastring As String
Dim dbs As Database
Dim rst As Recordset
Dim X As Integer
Set dbs = CurrentDb
 
datastring = "RESISTENCIA*"
 
Set rst = dbs.OpenRecordset("Select NomArchivo FROM TblArchivos WHERE (((Tblarchivos.[NomArchivo]) like " & (datastring) & "")
If rst.EOF = False Then
rst.MoveLast
rst.MoveFirst
While rst.EOF = False
If datastring = rst![NomArchivo] Then
rst.Delete
End If
rst.MoveNext
Wend
End If
rst.Close
Set dbs = Nothing
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
Imágen de perfil de Neckkito

Eliminar registro que cumpla ciero criterio

Publicado por Neckkito (1104 intervenciones) el 09/02/2015 14:03:06
Hola!

Un par de comentarios:

1.- No indicas con qué versión de Access estás trabajando.

2.- ¿Por qué no te creas una consulta de eliminación con el filtro que desees en vez de usar VBA? Como mucho, si quieres usar VBA, sólo tendrías que escribir:

...
docmd.setwarnings false
docmd.openquery "NombreConsultaEliminación"
docmd.setwarnings true
...

3.- Si usas Access 2003 deberías registrar la referencia "Microsoft DAO 3.6 Object Library", y declarar las variables como:

Dim dbs as DAO.Database
Dim rst as DAO.Recordset

Si usas un Access posterior a 2003 sólo tienes que cambiar la declaración de variables, pero no necesitas registrar ninguna referencia.

4.- En tu código haces un filtro WHERE con un like. Deberías situar el comodín (el asterisco) fuera de la definición de la variable datastring.

5.- Si tu SQL ya te devuelve todos los registros con esa condición, ¿para qué haces una segunda comprobación con un if, si seguro que el resultado es verdadero (si no significaría que el filtro te está funcionando mal)?

6.- Si datastring es "RESISTENCIA*", y así lo defines, estás diciendo que la cadena de comparación es "RESISTENCIA*", con el asterisco incorporado. Ese asterisco no está actuando como comodín, sino como parte de la palabra.

4.- Si sigues queriendo utilizar VBA podrías conseguir lo mismo a través de:

...
Dim datastring as string
datastring="RESISTENCIA"
currentdb.execute("DELETE FROM TblArchivos WHERE NomArchivo LIKE '" & datastring & "*'")
...

Saludos,
firmaMail
http://neckkito.siliconproject.com.ar
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar

Eliminar registro que cumpla ciero criterio

Publicado por Luis (16 intervenciones) el 09/02/2015 18:35:50
Agradezco tu apoyo lo hice así al otro día que publique mi pregunta tal como me comentas:

Dim datastring as string
datastring="RESISTENCIA"
currentdb.execute("DELETE FROM TblArchivos WHERE NomArchivo LIKE '" & datastring & "*'")

Agradesco nuevamente tu apoya
Saludos
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