Access - Leer tabla para anexar determinados registros a otra tabla

   
Vista:

Leer tabla para anexar determinados registros a otra tabla

Publicado por TinoS (64 intervenciones) el 09/12/2013 23:26:20
Buenas noches:

Tengo una tablaDATOS con varios registros y cada uno de estos con varios campos y quiero comprobar ciertos campos de cada registro de la tablaDATOS con el resto de los registros de esa misma tablaDATOS:

Quiero hacer esto pero no conozco todo el código necesario y no sé si realmente se puede hacer, por eso pido vuestra ayuda:

Primero creo la variable que voy a usar

variableEQUIS = 0

Abro la tablaDATOS,
--- Voy al primer registro y
--- el valor del campoUNO se lo doy a la variableEQUIS

--- variableEQUIS = CampoUNO

--- Luego quiero leer desde el principio esa tablaDATOS y comprobar:

--- Seleciono el campoDOS (del registro uno) y

----- Si campoDOS = variableEQUIS

----- que añada los campos de ese registro a la tablaANEXAR

----- Si no es igual

----- No hace nada

----- cierro este bucle

--- paso al registro siguiente de la tablaDATOS y sigo comprobando lo mismo
--- con el registro siguiente y así hasta haber completado la comprobación del
--- registro uno con todos los registros de la tablaDATOS.

--- Vuelvo a la tablaDATOS, voy al registro dos y vuelvo a comprobar este registro dos
--- con todos los registros de la propia tablaDATOS y así hasta completar el haber comprobado
--- cada registro individual con todos y cada uno de los registros existentes en la tablaDATOS.

Con esto habremos obtenido una tablaANEXAR, que es la que quiero conseguir, con la información que queramos.

Gracias por vuestra ayuda.

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
Imágen de perfil de Norberto

Leer tabla para anexar determinados registros a otra tabla

Publicado por Norberto (432 intervenciones) el 11/12/2013 08:29:55
Hola.

Lo que creo que pretendes es más sencillo de lo que parece. De hecho no necesitas ni siquiera programar. Si haces una consulta de selección en la que incluyes dos veces tablaDATOS y las las relacionas uniendo campoUNO de la primera con campoDOS de la segunda obtendrás, creo, lo que deseas. Si es así y verdaderamente necesitas una tabla independiente que refleje estos resultados, podrías cambiar el tipo de consulta por una de creación de tabla.

No obstante, si realmente quieres hacerlo por código, coméntalo y te lo posteo.

Un saludo,

Nor.
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

Leer tabla para anexar determinados registros a otra tabla

Publicado por TinoS (64 intervenciones) el 11/12/2013 20:01:13
Buens tardes Norberto.

Gracias por tu contestación.

Realmente necesito el código porque luego dentro de esos Select case (que sí se como hacerlos) tengo que anidar otros select, ya que hay registros que se relacionan con otros registros de esa misma tablaDATOS, es decir que hay registros que no podrían existir si antes no existieran otros y antes otros y creo que la mejor forma de poder seleccionarlos es con Select Case, anidando dentro de este los distintos casos posibles.

Gracias de nuevo.

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
Imágen de perfil de Norberto

Leer tabla para anexar determinados registros a otra tabla

Publicado por Norberto (432 intervenciones) el 12/12/2013 09:06:32
Ok. Ahí va el código:

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
38
Public Sub Anexar()
    Dim Rst1 As DAO.Recordset, Rst2 As DAO.Recordset
    Dim X As Integer, MiSQL As String
 
    Set Rst1 = CurrentDb.OpenRecordset("TablaDatos")
    Set Rst2 = CurrentDb.OpenRecordset("TablaDatos")
 
    DoCmd.SetWarnings False             '
 
    MiSQL = "DELETE From DatosAnexados" 'Borramos el contenido de la tabla
    DoCmd.RunSQL MiSQL                  'DatosAnexados
 
    Do While Not Rst1.EOF 'Para cada registro de la tabla
        Do While Not Rst2.EOF   'Miramos todos los registros de la misma
           If Rst1!Campo1 = Rst2!Campo2 Then   'Si coincide el Campo1 con el Campo2
                MiSQL = "INSERT INTO DatosAnexados ( Campo1, Campo2, Campo3, Campo4, Campo5 )" & _
                        "SELECT TablaDatos.Campo1, TablaDatos.Campo2, TablaDatos.Campo3, " & _
                        "TablaDatos.Campo4, TablaDatos.Campo5 FROM TablaDatos WHERE " & _
                        " TablaDatos.IdRegistro = " & Rst1!IdRegistro
                DoCmd.RunSQL MiSQL  'Añadimos el registro actual en la tabla DatosAnexados
            End If
            Rst2.MoveNext       'Segimos mirando registros
            DoEvents
        Loop
        Rst1.MoveNext           'Para cada registro de la tabla
        Rst2.MoveFirst          'Volvemos al principio
 
    Loop
 
    Rst1.Close
    Rst2.Close
 
    DoCmd.SetWarnings True              '
 
    Set Rst1 = Nothing
    Set Rst2 = Nothing
 
End Sub

Evidentemente tendrás que adaptarlo un poco, pero la filosfía es ésa. Para añadir el registro he usado SQL. También podrías definir un tercer recordset y usar el método .Append para añadir el registro tal y como te expliqué en el anterior post (http://goo.gl/ViYlRn).

Un saludo,

Nor.
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

Leer tabla para anexar determinados registros a otra tabla

Publicado por TinoS (64 intervenciones) el 12/12/2013 10:29:27
Buenos días Norberto.

De nuevo muchas gracias por tu amabilidad y eficiencia.

Estas tardes/noches trataré de meterle mano y conseguir lo que pretendo, que no creo que sea dificil contando con ayudas como esta que tu me estás prestando.

Gracias de nuevo.

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