Saltar al contenido

Macro vba excel para consultar a una B.D. Access según valor de un comboBox


Recommended Posts

publicado

Buenas tardes o días a todos;

-He creado una macro Vba Excel que por medio de un  Userform me hace una consulta a una base de datos Access.

Al frm le he puesto un comboBox para elegir la consulta que quiero hacer.

Lo he hecho por medio de un condicional "IF" de ahí mi pregunta. ¿Está bien así o hay otro método mejor?.

El código del UserForm comento lo que he hecho con  '<<<   >>>

Adjunto macro para mayor comprensión.

Gracias y saludos a todos.

ConsultaBD.zip

publicado
Sql = "SELECT * FROM " & ComboBox1 & "WHERE [Fecha] >= #" & Fecha100 & "# AND [Fecha] <= #" & Fecha200 & "# ORDER BY [Fecha]"

 

publicado

Bo día Antoni;

Muchísimas gracias me lo has simplificado mucho, había intentado algo a modo de prueba con un TextBox FROM  & TextBox1 & WHERE pero veo que me había comido las comillas. 

De todas formas en el código que me has enviado lo he tenido que dejas así para que funcionase:

Sql = "SELECT * FROM " & ComboBox1 & " WHERE [Fecha] >= #" & Fecha100 & "# AND [Fecha] <= #" & Fecha200 & "# ORDER BY [Fecha]"

Si te fijas he tenido que dejar un espacio entre la " y el WHERE.

Lo dicho Antonio te debo "VARIABLE" + 1 ?

Dejo código por si a alguien le interesa:

Private Sub btn_BuscarEnAccess_Click()
'La conexion a la base de datos se puede hacer en el evento "Private Sub UserForm_Activate()"
'Y el cierre en el evento "Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)"

Application.ScreenUpdating = False
Application.DisplayAlerts = False

Dim Sql As String
Dim i, j
Dim Fecha100
Dim Fecha200

Fecha100 = Format(Me.TextBox100, "MM/DD/YYYY") 'Se pone formato fecha americano
Fecha200 = Format(Me.TextBox200, "MM/DD/YYYY")

If ComboBox1.Value = "" Then
    MsgBox "Debe seleccionar una consulta "
    ComboBox1.SetFocus
ElseIf TextBox100 = "" Then
    MsgBox "Campo fecha desde es un campo requerido "
    TextBox100.SetFocus
ElseIf TextBox200 = "" Then
    MsgBox "Campo fecha hasta es un campo requerido"
    TextBox200.SetFocus
Else

'Se ejecuta la consulta según el valor del comboBox
Sql = "SELECT * FROM " & ComboBox1 & " WHERE [Fecha] >= #" & Fecha100 & "# AND [Fecha] <= #" & Fecha200 & "# ORDER BY [Fecha]"
rs.Open Sql, cnn, 3, 3, 1

'Valir si la consulta devuelve resultados
        If rs.EOF And rs.BOF Then
            MsgBox "No hay resultados para la consulta"
            Sheets("CargaMasiva").Range("A1").CurrentRegion.clear
            Exit Sub
        End If
    
Sheets("CargaMasiva").Range("A1").CurrentRegion.clear

        For i = 0 To rs.Fields.Count - 1
            Cells(1, i + 1).Value = rs.Fields(i).Name
        Next i

Sheets("CargaMasiva").Range("A2").CopyFromRecordset rs

Application.ScreenUpdating = True
Application.DisplayAlerts = True
End If
End Sub

Apertas Antoni e cuidadín con el amigo invisible.

Archivado

Este tema está ahora archivado y está cerrado a más respuestas.

×
×
  • Crear nuevo...

Información importante

Echa un vistazo a nuestra política de cookies para ayudarte a tener una mejor experiencia de navegación. Puedes ajustar aquí la configuración. Pulsa el botón Aceptar, si estás de acuerdo.