Foros del Web » Programación para mayores de 30 ;) » Programación General » Visual Basic clásico »

Duda sencilla con access

Estas en el tema de Duda sencilla con access en el foro de Visual Basic clásico en Foros del Web. Hola! Llevo años trabajando con SGBD's basados en SQL y ahora me ha tocado trabajar con access 2007. Tengo una base de datos con dos ...
  #1 (permalink)  
Antiguo 23/07/2008, 02:29
 
Fecha de Ingreso: julio-2008
Mensajes: 5
Antigüedad: 15 años, 9 meses
Puntos: 0
Duda sencilla con access

Hola!

Llevo años trabajando con SGBD's basados en SQL y ahora me ha tocado trabajar con access 2007.

Tengo una base de datos con dos tablas. Una con varias columnas, y otra tabla con una columna que aparece en la otra tabla. Mi objetivo es filtrar la primera tabla para que sólo haya registros cuya columna 'x' tenga un valor que aparezca en la segunda tabla:


TABLA 1

nombre apellido ciudad
pedro sanchez zaragoza
pablo garcia madrid
juan rodriguez zaragoza
luis arias barcelona
pedro garcia madrid
kike benito barcelona


TABLA 2

ciudad
zaragoza
madrid


TABLA OBJETIVO

nombre apellido ciudad
pedro sanchez zaragoza
pablo garcia madrid
juan rodriguez zaragoza
pedro garcia madrid

(solo aparecen los de madrid y zaragoza)

Alguna idea?

Gracias
  #2 (permalink)  
Antiguo 23/07/2008, 03:17
Colaborador
 
Fecha de Ingreso: enero-2008
Ubicación: Unas veces aquí, otras veces allí
Mensajes: 1.482
Antigüedad: 16 años, 3 meses
Puntos: 37
Respuesta: Duda sencilla con access

Hola,

podrías hacerlo a través de una consulta de unión como esta:

"SELECT Tabla1.Nombre, Tabla1.Apellido, Tabla1.Ciudad FROM Tabla1 INNER JOIN Tabla2 ON Tabla1.Ciudad=Tabla2.Ciudad"

  #3 (permalink)  
Antiguo 23/07/2008, 03:27
 
Fecha de Ingreso: julio-2008
Mensajes: 5
Antigüedad: 15 años, 9 meses
Puntos: 0
Respuesta: Duda sencilla con access

pero en access 2007 donde se pueden introducir secuencias SQL?
  #4 (permalink)  
Antiguo 23/07/2008, 03:33
Colaborador
 
Fecha de Ingreso: enero-2008
Ubicación: Unas veces aquí, otras veces allí
Mensajes: 1.482
Antigüedad: 16 años, 3 meses
Puntos: 37
Respuesta: Duda sencilla con access

Cita:
Iniciado por elaragon Ver Mensaje
pero en access 2007 donde se pueden introducir secuencias SQL?
En un recordset al igual que en Access 2003 o SQL.

  #5 (permalink)  
Antiguo 23/07/2008, 05:44
 
Fecha de Ingreso: julio-2008
Mensajes: 5
Antigüedad: 15 años, 9 meses
Puntos: 0
Respuesta: Duda sencilla con access

Lo cierto es que nunca he trabajado con Access, matizo lo de Access 2007 porque cambia considerablemente la interfaz respecto a las versiones anteriores.

He estado mirando la ayuda de Access (es una basura) y no encuentro donde crear los recordset...
  #6 (permalink)  
Antiguo 23/07/2008, 07:05
Colaborador
 
Fecha de Ingreso: enero-2008
Ubicación: Unas veces aquí, otras veces allí
Mensajes: 1.482
Antigüedad: 16 años, 3 meses
Puntos: 37
Respuesta: Duda sencilla con access

Cita:
Iniciado por elaragon Ver Mensaje
Lo cierto es que nunca he trabajado con Access, matizo lo de Access 2007 porque cambia considerablemente la interfaz respecto a las versiones anteriores.

He estado mirando la ayuda de Access (es una basura) y no encuentro donde crear los recordset...
Bueno, aquí va el ejemplo, (lo único que cambia en Access 2007 con las versiones anteriores, es la forma de conectarse a la base de datos). El código siguiente puedes ponerlo en el evento click de un CommandButton o en el Load de un formulario según tus necesidades:


Código:
Dim cn As ADODB.Connection
    Dim rs As ADODB.Recordset
    ' creamos y abrimos la conexión a la base de datos
    Set cn = New ADODB.Connection
    cn.Open "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & App.Path & _
        "\BD2007.accdb;Persist Security Info=False"
    ' creamos y abrimos el recordset
    Set rs = New ADODB.Recordset
    rs.CursorLocation = adUseClient
    rs.Open "SELECT Tabla1.Nombre, Tabla1.Apellido, Tabla1.Ciudad FROM Tabla1 INNER JOIN " & _
    "Tabla2 ON Tabla1.Ciudad=Tabla2.Ciudad", cn, adOpenStatic, adLockOptimistic
    ' mostramos los datos en un MSHFlexGrid (puede ser cualquier otro control)
    Set MSHFlexGrid1.DataSource = rs
Suponemos que la base de datos se llama BD2007.accdb y está en el mismo directorio de la aplicación, y que tienes referenciado ADO.

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 11:02.