Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General »

Problema con access

Estas en el tema de Problema con access en el foro de Bases de Datos General en Foros del Web. Hola a tod@s !!! Tengo una duda con acces: Me he creado varias tablas con sus formularios, siendo cada uno de estos, diferentes. Pues bien, ...
  #1 (permalink)  
Antiguo 07/01/2010, 02:44
 
Fecha de Ingreso: febrero-2008
Mensajes: 102
Antigüedad: 16 años, 1 mes
Puntos: 0
Exclamación Problema con access

Hola a tod@s !!!

Tengo una duda con acces:

Me he creado varias tablas con sus formularios, siendo cada uno de estos, diferentes.

Pues bien, lo que quiero hacer es que cuando un usuario, mediante un formulario de consulta introduzca un dato este lo busque en todas las tablas creadascon anterioridad y se ma habrá una nueva ventana con el formulario en cuestión.

Este dato será único,por lo que no existirá el problema de coincidencias.

A ver si se os ocurre algo, gracias y saludos

  #2 (permalink)  
Antiguo 07/01/2010, 03:25
Avatar de Taribo007  
Fecha de Ingreso: agosto-2007
Mensajes: 1.338
Antigüedad: 16 años, 8 meses
Puntos: 18
Respuesta: Problema con access

En este enlace tienes una funcion para buscar en todas las tabals de una base de datso:

http://www.llodax.com/smf/index.php?topic=136.0

El sitio requiere registro, pero merece la pena.

Un saludo
  #3 (permalink)  
Antiguo 08/01/2010, 02:12
 
Fecha de Ingreso: febrero-2008
Mensajes: 102
Antigüedad: 16 años, 1 mes
Puntos: 0
De acuerdo Respuesta: Problema con access

Gracias, ya me hace la busqueda perfectamente y según el dato que me introduzca el usuario, pero tendrías alguna idea para que se me mostrará el formulario asociado.

Código:
Private Sub Comando0_Click()

    Dim rst As Recordset
    Dim Tabla As TableDef
    Dim fld As Field
    Dim textoBusq As String
    
    Dim contador As Integer
    
    Debug.Print "Coincidencias encontrada con el texto: " & textoBusq
    contador = 0
    textoBusq = InputBox("Introduce valor a buscar")
    For Each Tabla In CurrentDb.TableDefs
        If Left(Tabla.Name, 4) <> "MSys" Then
            Set rst = CurrentDb.OpenRecordset("SELECT * FROM [" & Tabla.Name & "];")
            rst.MoveFirst
            Do Until rst.EOF
                For Each fld In rst.Fields
                    If InStr(1, fld.Value, textoBusq, vbTextCompare) Then
                        Debug.Print "   En tabla: " & Tabla.Name
                        Debug.Print "   Campo:" & fld.Name
                        Debug.Print "   Posicion:" & rst.AbsolutePosition + 1
                        Debug.Print "   Cadena entera: " & rst(fld.Name)
                        contador = contador + 1
                    End If
                Next
                rst.MoveNext
            Loop
        End If
    Next
    If contador = 0 Then
        Debug.Print "No se encontraron coincidencias"
       Else
        Debug.Print "Total coincidencias: " & contador
    End If



End Sub
Gracias y saludos !!!!
  #4 (permalink)  
Antiguo 08/01/2010, 02:42
Avatar de Taribo007  
Fecha de Ingreso: agosto-2007
Mensajes: 1.338
Antigüedad: 16 años, 8 meses
Puntos: 18
Respuesta: Problema con access

No entiendo, el formulario asociado a la tabla donde encuentra el dato??? Y si encuentra el dato en mas de una tabla, debria mostrar todos??? Todas las tablas tienen un formulario asociado?? El nombre de la tabla y el del form, guardan alguna relacion???

Un saludo
  #5 (permalink)  
Antiguo 08/01/2010, 03:41
 
Fecha de Ingreso: febrero-2008
Mensajes: 102
Antigüedad: 16 años, 1 mes
Puntos: 0
Respuesta: Problema con access

Hola de nuevo, cada tabla contiene unos datos únicos que no se repiten en las otras, por ello a cada tabla le he creado un formulario diferente que posee el mismo nombre que dicha tabla.

Entonces, la idea es que el resultado de la búsqueda sea mostrado en el formulario correspondiente.

Se podrá??

Saludos
  #6 (permalink)  
Antiguo 08/01/2010, 04:13
Avatar de Taribo007  
Fecha de Ingreso: agosto-2007
Mensajes: 1.338
Antigüedad: 16 años, 8 meses
Puntos: 18
Respuesta: Problema con access

Entonces, si tienes el nombre de la tabla, tienes el nombre del form, solo tienes que abrirlo.

Tienes algun campo clave en las tablas que se pueda usar para abrir el form por el registro en cuestion?? O se podria usar el propio dato buscado, ya que es unico??

Private Sub Comando0_Click()

Dim rst As Recordset
Dim Tabla As TableDef
Dim fld As Field
Dim textoBusq As String

Dim contador As Integer

Debug.Print "Coincidencias encontrada con el texto: " & textoBusq
contador = 0
textoBusq = InputBox("Introduce valor a buscar")
For Each Tabla In CurrentDb.TableDefs
If Left(Tabla.Name, 4) <> "MSys" Then
Set rst = CurrentDb.OpenRecordset("SELECT * FROM [" & Tabla.Name & "];")
rst.MoveFirst
Do Until rst.EOF
For Each fld In rst.Fields
If InStr(1, fld.Value, textoBusq, vbTextCompare) Then
Debug.Print " En tabla: " & Tabla.Name
Debug.Print " Campo:" & fld.Name
Debug.Print " Posicion:" & rst.AbsolutePosition + 1
Debug.Print " Cadena entera: " & rst(fld.Name)
contador = contador + 1
DoCmd.OpenForm Tabla.Name, , , fld.Name & "='" & textoBusq & "'"
End If
Next
rst.MoveNext
Loop
End If
Next
If contador = 0 Then
Debug.Print "No se encontraron coincidencias"
Else
Debug.Print "Total coincidencias: " & contador
End If
End Sub


Un saludo
  #7 (permalink)  
Antiguo 08/01/2010, 04:23
 
Fecha de Ingreso: febrero-2008
Mensajes: 102
Antigüedad: 16 años, 1 mes
Puntos: 0
Respuesta: Problema con access

Tengo un campo clave en todas las tablas que es el mismo, es decir, el nombre de la columna no el contenido, pero aún así cada registro es diferente al resto.

La nueva línea que me comentas me da un error.

Saludos
  #8 (permalink)  
Antiguo 08/01/2010, 04:31
Avatar de Taribo007  
Fecha de Ingreso: agosto-2007
Mensajes: 1.338
Antigüedad: 16 años, 8 meses
Puntos: 18
Respuesta: Problema con access

Que error te da exactamente??

Un saludo
  #9 (permalink)  
Antiguo 08/01/2010, 04:38
 
Fecha de Ingreso: febrero-2008
Mensajes: 102
Antigüedad: 16 años, 1 mes
Puntos: 0
Respuesta: Problema con access

Hola, primero de todo perdona por mi desconocimiento de visual basic pero es que estoy pegado, jejeje, conozco otros lenguajes pero por narices me veo obligado a usar este.

El error es:

error de sintaxis (falta operador) enla expresión de consulta.

Mil gracias y saludos
  #10 (permalink)  
Antiguo 08/01/2010, 07:11
 
Fecha de Ingreso: febrero-2008
Mensajes: 102
Antigüedad: 16 años, 1 mes
Puntos: 0
Respuesta: Problema con access

Ya me furaaalaaaaaaaaa !!!!

DoCmd.OpenForm Tabla.Name, acNormal, fld.Name & "='" & textoBusq & "'"
End If

Gracias y saludos !!!

Etiquetas: access
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 22:22.