Access - Construr sql

 
Vista:
sin imagen de perfil
Val: 266
Bronce
Ha mantenido su posición en Access (en relación al último mes)
Gráfica de Access

Construr sql

Publicado por Pablo (328 intervenciones) el 17/07/2021 20:27:00
Hola a todos:
Tengo un formulario de búsqueda con varios campos en los que se puede teclear, o no, datos a buscar en la tabla. Quiero construir la sql que será: "Select * from visitas where nomcampo1=" & dato1 , si doy dos datos le añadiría "And nomcampo2=" & dato2.
De antemano no se cuantos campos con dato voy a tener. Se me ocurría crear una variable a nivel de módulo: varias_condiciones que sería boolean=False
Al hacer clic en un cuadro de texto haría: if varias_condiciones=False then sql="select...
Hago clic en otro cuadro de texto: if varias_condiciones=False then sql=·Select...
else
condicion=condicion & "and campox=" & datox
end if
Las variables a nivel de módulo de declaran después del option explicit pero, dónde la inicializo, si lo hago cuando la declaro me da error.
Gracias
Pablo
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

Construr sql

Publicado por Anonimo (3322 intervenciones) el 17/07/2021 23:00:16
En el foro hay información para obtener ese resultado, en la practica no es mas que un filtro en tiempo de ejecución y que podrá ser dinámico si se desea.

Las variables que se declaran en la cabecera del modulo, se inicializan según su procedencia:
.- las que se declaran en un formulario u informe ==> cuando se accede al objeto y se desvanecen al cerrarlo.
.- las que se declaran en un modulo independiente al iniciar la base (hay diferencia entre las publicas y privadas)

Una vez declaradas simplemente se utilizan (en el ámbito en que se declaran) sin necesitar dimensionarlas.

Si se dimensiona una variable en un modulo dependiente que sea idéntica a otra declarada en uno independiente (algo que no es aconsejable) se utilizara una u otra según se este dentro o fuera de su entorno, siempre prevalecerá la mas cercana al ámbito y siempre serán dos que no se pisan y se respetan.
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

Construr sql

Publicado por Norberto (80 intervenciones) el 19/07/2021 12:36:34
Hola:

Se me ocurre lo siguiente:

Pongamos que los campos sobre los que se puede hacer la búsqueda son Nombre, Dirección, Población, Provincia, País y Observaciones.

Podrías poner seis cuadros de texto con los nombres txtBúsNombre, txtBúsDirección, txtBúsPoblación, txtBúsProvincia, txtBúsPaís y txtBúsObservaciones. En el botón cmdBuscar pones el siguiente código:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
Private Sub cmdBuscar_Click()
    Dim miSQL As String, miWhere As String
    Dim Ctrl As Control, Campo As String
 
    For Each Ctrl In Me.Controls
        If Ctrl.Name Like "txtBúsq*" Then 'Es un control de búsqueda
            If Not IsNull(Ctrl) Then 'Si tiene contenido
                Campo = Mid(Ctrl.Name, 8) 'El nombre del campo está a partir del 8º carácter del nombre del control
                miWhere = miWhere & IIf(miWhere = "", "", " AND ") & Campo & " = '" & Ctrl & "'"
            End If
        End If
    Next
    miSQL = "SELECT * FROM Tabla WHERE " & miWhere & ";"
 
    'A partir de aquí usar el contenido de la variable miSQL como tenías pensado.
 
    Set Ctrl = Nothing
End Sub
Un saludo,

Norberto
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