Access - Añadir varias tablas en una consulta

 
Vista:

Añadir varias tablas en una consulta

Publicado por ANTONIO (81 intervenciones) el 06/03/2013 12:16:55
Buenos días

Tengo dos tablas Facturas 2012 y facturas 2013. Quiero unir los datos en una consulta para ver así cuanto he facturado en un proyecto en ambos años.

¿Como puedo hacer esto?

Gracias
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 Norberto
Val: 1.094
Oro
Ha mantenido su posición en Access (en relación al último mes)
Gráfica de Access

Añadir varias tablas en una consulta

Publicado por Norberto (753 intervenciones) el 06/03/2013 14:06:06
Hola.

Por medio de una consulta de unión. Éstas no se pueden definir en vista Diseño sino en que hay que hacerlo en vista SQL. La sintaxis, siempre que la estructura sea idéntica sería.

SELECT * FROM [Facturas 2012]
UNION ALL SELECT * FROM [Facturas 2013];

Corregidme si me equivoco pero a mí me parece que es mejor tener una única tabla Facturas y si queremos trabajar con las de un solo año usar una consulta de selección, filtro a nivel de formulario... Ssss mi opinión.

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

Añadir varias tablas en una consulta

Publicado por ANTONIO (81 intervenciones) el 06/03/2013 14:23:31
Genial eso es lo que quería, te debo una cervez

Tienes toda la razón con lo que me dices en la estructura de la base de datos, pero se trata de dos base de datos distintas que contablemente estoy obligado a separar un año de otro. Esto es así porque cada factura tiene que tener un registro autonumerico e independientemente del año.Aunque lo que me dices no lo entiendo muy bien del todo.
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

Añadir varias tablas en una consulta

Publicado por hernan (9 intervenciones) el 07/03/2013 17:55:29
Disculpa que es lo que no entiendes como unirlas?.
De ser así, lo otro que puedes hacer es crear una tabla y hacer una consulta de anexación primero de una y luego de la otra. Así unirás los datos de ambas tablas.

Un saludo.

Hernan

http://www.sioe-online.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
0
Comentar
Imágen de perfil de Norberto
Val: 1.094
Oro
Ha mantenido su posición en Access (en relación al último mes)
Gráfica de Access

Añadir varias tablas en una consulta

Publicado por Norberto (753 intervenciones) el 07/03/2013 19:11:33
Hola de nuevo.

Ojo con los autonuméricos para numerar facturas, registros de entrada/salida, etc. Por ley la numeración debe de ser consecutiva y si usas autonumérico ya sabes que en cuanto empiezas a dar alta a un registro te genera el número siguiente -hasta aquí muy bien-, pero que si no llegas a grabarlo, este número se pierde. ¿Cómo justificas ante una inspección la falta de facturas?

Yo en esos casos uso un campo numérico y en el evento antes de insertar le asigno el valor de la siguiente manera:

1
2
3
4
5
6
7
Private Sub Form_BeforeInsert(Cancel As Integer)
 
    Me.NúmeroFactura = DMax(NúmeroFactura, "Facturas", _
      "Ejercicio = " & xEjercicio) + 1
    Me.Ejercicio = xEjercicio
 
End Sub


Donde xEjercicio es una constante, variable, etc. pública que tiene el ejercicio actual.

Si trabajas en un entorno multiusuario, y dos personas empiezan a grabar facturas a la vez, el evento producirá el mismo número a los dos. Para evitar que se dupliquen, vuelvo a hacer la comprobación antes de guardar el registro.

1
2
3
4
5
6
7
8
9
10
11
12
13
Private Sub Form_BeforeUpdate(Cancel As Integer)
    'Si alguien ha introducido entretanto una o más facturas
    'se reasigna el nuevo número
 
    If Me.NewRecord Then
        'Ésto sólo lo hacemos si estamos dando de alta
        'una nueva factura
 
        Me.NúmeroFactura = DMax("NúmeroFactura", "Facturas", _
         "Ejercicio = " & xEjercicio) + 1
    End If
 
End Sub


De todas formas puede que dos usuarios graben a la vez (cosa harto difícil) y les dé el mismo número. Como medida de control adicional puedes poner un índice sin duplicados (podría ser la clave principal) para el conjunto de campos Ejercicio y NúmeroFactura.

En cuanto a la segunda parte de mi comentario anterior, puedes hacer una consulta con la siguiente sintaxis:

SELECT * FROM Facturas WHERE Facturas.Ejercicio = EjercicioActual() ORDER BY Facturas.NúmeroFactura;

Ésta te devolverá los registros correspondientes al ejercicio actual y ya puedes usarla como quieras: en el formulario, informes, etc.

Si te fijas he puesto EjercicioActual() puesto que en una consulta no creo que se pueda hacer referencia a variables ni constantes por lo que deberás crear una función que devuelva el valor correspondiente.

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