** NORMAS DEL FORO **
Inicio del foro Inicio del foro > Access y VBA > Access y VBA
  Mensajes nuevos Mensajes nuevos RSS - Buscar criterio en todas las consultas
  Preguntas frecuentes Preguntas frecuentes  Buscar en el foro   Eventos   Registro Registro  Iniciar sesion Iniciar sesion

Tema cerradoBuscar criterio en todas las consultas

 Responder Responder
Autor
Mensaje
joselogut Ver desplegable
Nuevo
Nuevo


Unido: 07/Julio/2009
Localización: Argentina
Estado: Sin conexión
Puntos: 43
Enlace directo a este mensaje Tema: Buscar criterio en todas las consultas
    Enviado: 14/Mayo/2015 a las 14:58
Buenas.
Tengo una cantidad importante de consultas en un programa ya funcionando en Access 2003.
Resulta que hay algunas consultas (no se cuantas) que tienen criterios del tipo: TIPO_COMPROB="F".
Ahora al implementar Factura electrónica debo agregar a ese criterio otra letra mas.
Hay alguna manera de recorrer masivamente los criterios utilizados en todas las consultas para ir luego una por una?
Es decir, identificarlas por una búsqueda y luego si tocar una a una.

Muchas gracias!
Arriba
RRoca Ver desplegable
Colaborador
Colaborador


Unido: 02/Enero/2006
Localización: España
Estado: Sin conexión
Puntos: 4821
Enlace directo a este mensaje Enviado: 14/Mayo/2015 a las 15:15
Hola, esto es de Emilio te pego el programa pero búscalo en su Web.

'Mi pregunta es la siguiente se puede buscar un parrafo de texto o dato numerico del conjunto de consultas?
'http://www.mvp-access.com/foro/forum_posts.asp?TID=39864&KW=
Public Function BuscaCadenaEnConsultas(strCadenaABuscar As String) As Variant

Dim qdf As Object, _
    StrSQL As String, _
    I As Long, _
    Matriz() As Variant
    

For Each qdf In CurrentDb.QueryDefs
   StrSQL = qdf.SQL
   'If qdf.Name = "EstadisticaAcumuladoZonas" Then Stop 'para pruebas cuando el texto esta en una sola consulta
   If Not InStr(StrSQL, strCadenaABuscar) = 0 Then
      I = I + 1
      ReDim Preserve Matriz(I)
      Matriz(I) = qdf.Name
      'i = i + 1 ' intercambiada la posición de esta linea si sola hay una consulta no la detecta
   End If
Next qdf
BuscaCadenaEnConsultas = Matriz
Set qdf = Nothing
End Function        ' BuscaCadenaEnConsultas

Saludos.
Romain Rolland (1866-1944) escritor y ensayista frances dijo: Crear, es matar la muerte. (para mi, filosoficamente penetrante)
Arriba
joselogut Ver desplegable
Nuevo
Nuevo


Unido: 07/Julio/2009
Localización: Argentina
Estado: Sin conexión
Puntos: 43
Enlace directo a este mensaje Enviado: 14/Mayo/2015 a las 15:35
Lo busco al ejemplo, pero ya me estás dando una buena ayuda con esto.
Muchas gracias
Arriba
joselogut Ver desplegable
Nuevo
Nuevo


Unido: 07/Julio/2009
Localización: Argentina
Estado: Sin conexión
Puntos: 43
Enlace directo a este mensaje Enviado: 14/Mayo/2015 a las 16:40
Me pregunto también en los casos en que combos o controles que están en formularios y tienen como control source una instrucción SQL y no una consulta externa.
Se entiende?. Donde se puede buscar en estos casos.
saludos
Arriba
prga Ver desplegable
Moderador
Moderador


Unido: 16/Noviembre/2004
Localización: España
Estado: Sin conexión
Puntos: 3335
Enlace directo a este mensaje Enviado: 15/Mayo/2015 a las 13:20
Hola.
En un módulo, coloca el siguiente código de ejemplo:

Public Sub recorreprocedures()
Dim mcat As Object 'New ADOX.Catalog
Set mcat = CreateObject("adox.catalog")
Dim mproc As Object  'ADOX.Procedure
Set mcat.ActiveConnection = CurrentProject.Connection
For Each mproc In mcat.Procedures
If Asc(Left(mproc.Name, 1)) = 126 Then '''''si ~ al principio en medio f=form r=report....
  MsgBox (mproc.Name & "---" & mproc.Command.CommandText)
End If
Next
Set mcat = Nothing
End Sub

En un principio creo, y digo creo, que el msgbox nos presentará todas las 'SQL' internas de los formularios, informes, cuadros combinados y de lista que tengan.
Otra cosa es estructurar dicha información y adaptarla al caso.
Prueba y ya dices sí puede ser el inicio de lo que se busca.
Un saludo a todos

Arriba
joselogut Ver desplegable
Nuevo
Nuevo


Unido: 07/Julio/2009
Localización: Argentina
Estado: Sin conexión
Puntos: 43
Enlace directo a este mensaje Enviado: 15/Mayo/2015 a las 13:53
Con el procedimiento que paso RROCA salen en la tabla que carga los SQL de los informes y fomularios y controles con ~.
Se puede ir a modificar perfectamente al formulario e identificar el control que tiene dicho select......
La verdad pude solucionar y me parecio una herramienta de mantenimiento de código interesante. Sobre todo cuando la aplicación ya tiene mas de 10 años de funcionamiento.
A veces van quedando consultas sueltas que nadie las llama, etc, etc.
Muchas gracias por la ayuda
Arriba
joselogut Ver desplegable
Nuevo
Nuevo


Unido: 07/Julio/2009
Localización: Argentina
Estado: Sin conexión
Puntos: 43
Enlace directo a este mensaje Enviado: 15/Mayo/2015 a las 17:15
Continuando y yendo un poco mas allá sería interesante poder combinar la tabla generada por el ejemplo de Emilio, tomando desde el campo que guarda la cadena SQL, todos los campos nombrados con "[nombre de campo]"
con otra tabla que tenga todos los nombres de campos de un MDB (leer toda la estructura).
Si se puede generar una tabla que recorra todas las tablas de un MDB y se cruce con los campos utilizados en TODAS las consultas obtendríamos:
Posibles errores en el funcionamiento del MDE por:
1. falta de creación de campos de una tabla, que se agregaron después.
2. consultas que nombran campos que cambiaron de nombre, etc.

Si alguien conoce la rutina que recorre las tablas en busca de su estructura, agradecería el comentario

Saludos
Arriba
E. Feijoo Ver desplegable
Moderador
Moderador


Unido: 16/Abril/2004
Localización: España
Estado: Sin conexión
Puntos: 19948
Enlace directo a este mensaje Enviado: 15/Mayo/2015 a las 17:43
Es mucho mas sencillo crear aplicaciones y guardar las notas (o anotar sobre la marcha al diseñar), el resto se parece mas a una investigación en la búsqueda del diseño de otros autores (claro que no es malo si de lo que se trata es de aprender ....)
Arriba
 Responder Responder
  Compartir tema   

Ir al foro Permisos de foro Ver desplegable