Access - Ejecutar consulta desde VB

 
Vista:

Ejecutar consulta desde VB

Publicado por JCLmythos (9 intervenciones) el 22/04/2009 08:56:04
Tengo una funcion que lo que hace es crearme una clave.
Con esa clave quiero buscar si existe alguna parecida. Tengo puesto:

Dim sql As String

sql = "SELECT count(*) " & _
"FROM peliculas " & _
"WHERE codpel like '%" & cod & "%' "

DoCmd.RunSQL sql

Pero me da un error que dice: "A RunSQL action requires an argument consisiting of an SQL statement"

Porque puede ser?
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 Enrique Ramírez
Val: 37
Ha aumentado su posición en 2 puestos en Access (en relación al último mes)
Gráfica de Access

RE:Ejecutar consulta desde VB

Publicado por Enrique Ramírez (629 intervenciones) el 22/04/2009 16:54:53
El error consiste en que no tienes porque ejecutar el DoCmd, ya que estas haciendo una consulta de Selección, el DoCmd se utiliza con un INSERT, UPDATE ó DELETE, has la prueba y omite el DoCmd y sql metelo a una Lista o combo para que veas el resultado.
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:Ejecutar consulta desde VB

Publicado por JCLmythos (9 intervenciones) el 23/04/2009 11:12:36
Pero como se lo muevo? Yo solo consigo tener el valor
Tendria que abrir antes un record set? Si es asi he probado poniendo:
sql = "SELECT count(*) " & _
"FROM peliculas " & _
"WHERE codpel like '*the*'"
Set rs = CurrentDb.OpenRecordset(sql)

y me da "Type mismatch"

En realidad lo que yo necesito es tener el resultado de esa SELECT en una variable para luego poder tratarla

Muchas 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
Imágen de perfil de Enrique Ramírez
Val: 37
Ha aumentado su posición en 2 puestos en Access (en relación al último mes)
Gráfica de Access

RE:Ejecutar consulta desde VB

Publicado por Enrique Ramírez (629 intervenciones) el 23/04/2009 16:07:40
No se cual sea tu confusion porque probe tu consulta y si hace el filtro correctamente, meti 10 peliculas de las cuales 4 tienen en algun lugar la palabra then y el resultado que me dio es 4.

textualmente dices :
"yo necesito es tener el resultado de esa SELECT en una variable para luego poder tratarla "

mi amigo el resultado ya lo tienes en tu variable llamada sql, crea una lista que te muestre un solo campo corre tu codigo y ahi vas a ver el resultado.

sql = "SELECT count(*) FROM peliculas WHERE codpel like '*the*'"
Me.Lista.RowSource = sql
Me.Lista.Requery
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:Ejecutar consulta desde VB

Publicado por JCLmythos (9 intervenciones) el 24/04/2009 08:27:47
Muchas gracias, la he probado y funciona.

Pero de la manera que me dices tengo una lista que no necesito, podria ocultarla, pero seguiria estando ahi.
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:Ejecutar consulta desde VB

Publicado por JCLmythos (9 intervenciones) el 24/04/2009 08:35:41
Ademas, si sustituyo:
"WHERE codpel like '*the*' "
por
"WHERE codpel like '*" & cod & "*' "

da "Type mismatch" en el primer &, esto lo hago para obtener el valor dependiendo de una variable externa
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 Enrique Ramírez
Val: 37
Ha aumentado su posición en 2 puestos en Access (en relación al último mes)
Gráfica de Access

RE:Ejecutar consulta desde VB

Publicado por Enrique Ramírez (629 intervenciones) el 24/04/2009 15:11:28
amigo la lista te la puse solo como ejemplo para que veas el resultado de tu consulta, omitela.
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:Ejecutar consulta desde VB

Publicado por JCLmythos (9 intervenciones) el 27/04/2009 12:42:41
Lo he intentado y en una lista si lo consigo, poniendo fija la clave, si la tengo en una varibale, no.

Yo ya me estoy volviendo loco.
Lo que quiero es obtener en la variable "cla" el numero de registros de la tabla peliculas cuya clave contengan el valor de la variable "cod"

Siento ser tan pesado
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:Ejecutar consulta desde VB

Publicado por mi menda (1111 intervenciones) el 27/04/2009 14:54:59
Hola:
Como te comente usa la funcion DCount()

Dim strCriterio As String
Dim cod As String
Din cla As Integer

cod = CampoCriterioBuscar
strCriterio = "codpel like '*' & '" & cod & "' & '*'"

cla = DCount("*", "peliculas", strCriterio)
MsgBox cla

Creo que codpel era el campo clave.

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:Ejecutar consulta desde VB

Publicado por JCLmythos (9 intervenciones) el 27/04/2009 15:04:05
Con eso da "Type mismatch" en el segundo & del strCriterio
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:Ejecutar consulta desde VB

Publicado por mi menda (1111 intervenciones) el 27/04/2009 17:35:47
Hola:
La verdad que no sé muy bién lo que quieres, sí lo que quieres es obtener cuantas películas tienes según el criterio de la variable cod, lo que te he puesto antes te lo da. Sí lo que quieres es hacer un recordset y saber cuantos registros tiene:

Dim cod As String
Dim rst As DAO.Recordset
Dim ssql As String
Dim cla As Long

cod = CampoBuscar

ssql = " select * from peliculas where codpel like '*' & '" & cod & "' & '*'"
Set rst = CurrentDb.OpenRecordset(ssql)
rst.MoveLast
cla = rst.RecordCount

MsgBox cla
rst.Close
Set rst = Nothing

otra forma:
ssql = " select Count(codpel) as cantidad from peliculas where codpel like '*' & '" & cod & "' & '*'"
Set rst = CurrentDb.OpenRecordset(ssql)

cla = rst!cantidad
MsgBox cla

rst.Close
Set rst = Nothing

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:Ejecutar consulta desde VB

Publicado por JCLmythos (9 intervenciones) el 27/04/2009 17:52:41
Lo que necesito es saber cuantos registros de una tabla cumplen la condicion. No necesito nada mas. Lo que pasa es que al probar lo que me has dicho antes da un error "Type mismatch".

Probare en casa lo que me comentas ahora, y ya te contare

Muchas gracias de todas formas
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:Ejecutar consulta desde VB

Publicado por JCLmythos (9 intervenciones) el 27/04/2009 23:28:34
Acabo de probar las dos opciones y en las dos me da el mismo error: "No coinciden los tipos". Da en el segundo &, el que está antes de la variable cod
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:Ejecutar consulta desde VB

Publicado por mi menda (1111 intervenciones) el 28/04/2009 06:22:32
Hola:
Pon el nombre de la tabla, el nombre de los campos que utilices y su tipo de datos, y luego pon exactamente el código que estas utilizando, seguramente será un error de sintaxis.

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:Ejecutar consulta desde VB

Publicado por JCLmythos (9 intervenciones) el 28/04/2009 09:01:39
Esto es lo que tengo puesto. Antes tengo un trozo de codigo donde calculo el valor de "cod" que es un string

Dim rst As Recordset
Dim ssql As String
Dim cla As Long

ssql = " select * from peliculas where codpel like '*' & '" & cod & "' & '*'"
Set rst = CurrentDb.OpenRecordset(ssql)
rst.MoveLast
cla = rst.RecordCount

MsgBox cla
rst.Close
Set rst = Nothing
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:Ejecutar consulta desde VB

Publicado por mi menda (1111 intervenciones) el 28/04/2009 17:23:56
Hola:
He creado una tabla a la que le he llamado peliculas, con el campo clave codpel de tipo texto,
en el código he declarado la variable cod de tipo String y le he asignado el valor de un cuadro de texto de un formulario
cod = Texto0
luego he puesto el código que tienes y funciona perfectamente, como todos los que puse anteriormente.
Sí no te funciona, lo siento, pero no se más.

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:Ejecutar consulta desde VB

Publicado por mi menda (1111 intervenciones) el 24/04/2009 03:27:35
Hola:
Mirate la función Dcount() en la ayuda

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:Ejecutar consulta desde VB

Publicado por mi menda (1111 intervenciones) el 22/04/2009 18:59:11
Hola
En Access el caracter comodín es el asterisco "*"

sql = "SELECT count(*) " & _
"FROM peliculas " & _
"WHERE codpel like '*" & cod & "*' "

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