Access - Crear un unico buscador para varias tablas en access

 
Vista:
sin imagen de perfil

Crear un unico buscador para varias tablas en access

Publicado por David (2 intervenciones) el 17/10/2015 12:31:59
Buenas a tod@s, tengo un pequeño problema haber si pueden solucionar.... Tengo 12 tablas (una por mes) ENERO,FEBRERO,Etc.. dentro de esas tablas solo tiene 3 registros: ID (autonumerico) que he creado una consulta para que empiece por 1001, Cliente y Dirección. En Febrero es lo mismo pero el ID autonumerico empieza por 2001 y asi todos los meses (Marzo 3001, Abril 4001) .

Ahora viene mi gran problema... quiero crear un buscador ( formulario) que al buscar por el cliente o por la dirección me muestre el registro que busco (sea el mes que sea)

Gracias a tod@s por la paciencia. Un saludo
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
sin imagen de perfil

Crear un unico buscador para varias tablas en access

Publicado por Enrique Heliodoro (1664 intervenciones) el 17/10/2015 12:55:00
Solo hay que juntarlos todos (mediante una 'consulta de union') que vendría a ser algo como (en su vista SQL)

Select * From Enero
Unión
Select * From Febrero
Unión
....
Unión
Select * From Diciembre;

Se guardaría la consulta y se utilizaría en lugar de la tabla
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
2
Comentar
sin imagen de perfil

Crear un unico buscador para varias tablas en access

Publicado por david (2 intervenciones) el 17/10/2015 21:10:10
Hola Enrique me ha ido genial el codigo pero ahora tengo el problema que al encontrarlo le pico al nombre por ejemplo de un cliente de febrero y no se como decir que abra el formulario para mostrarlo, tengo este codigo en un cuadro de lista

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
Private Sub lstresultado_AfterUpdate()
Dim rst As Object
 
' sincronizo el formulario con el registro seleccionado
On Error GoTo lstResultado_AfterUpdate_TratamientoErrores
 
Set rst = Me.Recordset.Clone
 
rst.FindFirst "id = " & Me.lstresultado.Column(1)
 
If Not rst.NoMatch Then Me.Bookmark = rst.Bookmark
 
rst.Close
Set rst = Nothing
 
lstResultado_AfterUpdate_Salir:
    On Error GoTo 0
    Exit Sub
 
lstResultado_AfterUpdate_TratamientoErrores:
 
     MsgBox "Error " & Err.Number & " en proc.: lstResultado_AfterUpdate de Documento VBA: Form_ENERO (" & Err.Description & ")"
    GoTo lstResultado_AfterUpdate_Salir
 
End Sub
 
y este en el cuadro de texto
 
Private Sub txtbusqueda_Change()
Dim strSQL As String
 
strSQL = "SELECT " & Me.cbocampo & ",id "
strSQL = strSQL & "FROM Buscar "
strSQL = strSQL & "WHERE [" & Me.cbocampo & "] LIKE '*" & txtbusqueda.Text & "*'"
 
Me.lstresultado.RowSource = strSQL
End Sub

gracias de nuevo y 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
sin imagen de perfil

Crear un unico buscador para varias tablas en access

Publicado por Enrique Heliodoro (1664 intervenciones) el 18/10/2015 19:50:47
Creo que se le debería dar un par de vueltas a esa aplicación, comenzando por el numero de tablas, planificar el manejo de los índices y definir como mostrar los datos.

Una función de dominio (DMax) y un poco de lógica, permitiría tener en una única tabla todos los datos y que cada mes comenzase en cero (o uno) de forma automática, lo cual permitiría un manejo mas simple de esos datos y no la (permíteme llamarla 'chapuza') consulta de unión para localizar lo que se busca.

De cualquier forma, asumo que se utiliza el método adecuado para alcanzar el objetivo planificado (y como desconozco ambos no entrare en mas detalles, cada uno programa como cree conveniente), solo un detalle a tener en cuenta:
.- NO es lo mismo 'RecordsetClone' que 'Recordset.Clone' (si fueran idénticos uno de ellos sobraría y el otro daría error)

Utiliza el adecuado y si analizas/estudias el método con algo mas de profundidad, veras que te sobra el recordset que declaras como objeto, pues la copia de una copia no ofrece nada nuevo que no tenga el objeto copiado (algo similar a A=B, B=C ==> A=C)
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