Hacer consulta cruzada en ACCESS 2010

Expert@s,

Tengo el siguiente problema, tengo una tabla de tarifas de transporte cuyas filas están las ciudades y en las columans están los Kgs:

CIUDAD 10 20 30 40
Valencia 1€ 2€ 3€ 4€
Madrid 1€ 2€ 3€ 4€
...

Los campos de la tabla anterior son:
CIUDAD : Texto
10 : Moneda
20 : Moneda
...

Lo que quiero es montar una consulta cruzada donde le doy como datos la ciudad y los kilos (ej: Madrid y 30) y me de el resultado de 3€.

- ¿Es posible hacerlo?

1 Respuesta

Respuesta
1

Pues directamente una consulta no creo que se pueda hacer, pero a ver si esta alternativa te sirve:

1º/ Creas un formulario con dos cuadros de texto independientes (txtCiudad y txtKilos) para introducir los datos que quieres consultar, un botón de comando (cmdConsultar) y otro cuadro de texto independiente para mostrar el resultado

2º/ En el botón le programas este código:

Private Sub cmdConsultar_Click()
'Comprobaciones previas
If IsNull(Me.txtCiudad) Or Me.txtCiudad = "" Then
    MsgBox "Introduzca una ciudad", vbInformation + vbOKOnly, "SIN DATOS"
    Me.txtCiudad.SetFocus
End If
If IsNull(Me.txtKilos) Or Me.txtCiudad = "" Then
    MsgBox "Introduzca una cantidad", vbInformation + vbOKOnly, "SIN DATOS"
    Me.txtKilos.SetFocus
End If
If Not IsNumeric(Me.txtKilos) Then
    MsgBox "Tienes que poner una cantidad en el cuadro kilos", vbInformation + vbOKOnly, "DATOS INCORRECTOS"
    Me.txtKilos.SetFocus
End If
'Buscamos el dato
On Error GoTo sol_err
Dim rst As DAO.Recordset
Dim miSQL As String
miSQL = "SELECT Ciudad, [" & Me.txtKilos & "] FROM Tabla1 Where Ciudad='" & Me.txtCiudad & "'"
Set rst = CurrentDb.OpenRecordset(miSQL)
If rst.RecordCount = 0 Then
    Me.txtPrecio = "Sin datos"
Else
    Me.txtPrecio = rst(1)
End If
rst.Close
Set rst = Nothing
sol_err:
    If Err.Number = 3061 Then
        MsgBox "Cantidad no disponible", vbInformation + vbOKOnly, "DATOS INCORRECTOS"
        Me.txtKilos.SetFocus
    Else
         MsgBox Err.Number & ":" & vbCrLf & Err.Description
    End If
End Sub

Tendrás que cambiar "Tabla1" por el nombre de tu tabla.

Te subo un mini-ejemplo para que lo veas "en acción"

Se me coló un error en el código, tienes que añadir un "Exit Sub" antes de cada "End If" en la parte de las comprobaciones, así:

If IsNull(Me.txtCiudad) Or Me.txtCiudad = "" Then
    MsgBox "Introduzca una ciudad", vbInformation + vbOKOnly, "SIN DATOS"
    Me.txtCiudad.SetFocus
    Exit Sub
End If

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas