Pagina 1 di 4 1 2 3 ... ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 36
  1. #1

    [Access] Abilitare i criteri per una query da una maschera di ricerca

    Salve sto realizzando un semplice database in Access per gestire un'agenzia immobiliare.

    Ho creato una tabella in cui vengono immessi i dati delle case: Codice, Tipo, Metri, Zona, Indirizzo, Camere, Descrizione;successivamente ho creato una maschera di input per inserire i dati e registrare ogni casa.

    A questo punto ho creato un'altra maschera in cui inserire dei parametri di ricerca, come ad esempio:

    - Intervallo Metri
    - Tipo
    - Numero Camere

    Questa maschera apre un report generato da una query che legge direttamente i valori dalla maschera di ricerca e filtra le case in base a dei criteri generati per i campi.

    La struttura della query è la seguente:
    codice:
    SELECT Case.Codice, Case.Tipo, Case.Zona, Case.Indirizzo, Case.Metri, Case.Camere, Case.Descrizione
    FROM [Case]
    WHERE (((Case.Tipo)=[Forms]![Ricerca]![CasellaCombinata12]) AND ((Case.Metri)>=[Forms]![Ricerca]![Testo1] And (Case.Metri)<=[Forms]![Ricerca]![Testo3]) AND ((Case.Camere)>=[Forms]![Ricerca]![Testo20]));
    Ora però volevo sapere una cosa.
    I tre criteri di filtraggio che ho impostato (Metri, Tipo e Numero Case) non è detto che debbano sempre essere indicati; ad esempio si potrebbe effettuare una ricerca solo in base al tipo di casa.

    Ciò che volevo sapere è se posso nella maschera di ricerca inserire un controllo che mi consenta di abilitare o meno un determinato criterio di ricerca.

    Se si, come? Sapete aiutarmi?
    Luca >> http://www.pollosky.it

  2. #2
    mi spiego un pò meglio....

    ho creato una maschera per la ricerca. In questa maschera ci sono dei campi in cui inserisco i valori tipo, intervallo-metri, numero_minimo_camere.

    Se io inserisco tutti i valori ed eseguo la query mi vengono filtrati tutti i record in base a quei valori.

    Ciò che chiedevo io è se era possibile direttamente della maschera di ricerca inserire una sorta di casella di controllo (ad esempio una spunta) che mi consentisse sempre sulla stessa query di abilitare o meno un criterio per filtrare i record.....cioè che, per esempio, mi consentisse di ricercare i record secondo: tipo-metri-camere oppure tipo-camere oppure metri-camere etc.

    Secondo me ci deve essere un modo per farlo ma ancora non l'ho trovato.

    Voi lo conoscete?
    Luca >> http://www.pollosky.it

  3. #3
    Utente di HTML.it L'avatar di fabio309
    Registrato dal
    Oct 2002
    Messaggi
    1,918
    prova a fare tutto da codice
    codice:
    dim sql as string
    sql = "SELECT Case.Codice, Case.Tipo, Case.Zona, Case.Indirizzo, Case.Metri, Case.Camere, Case.Descrizione FROM [Case] WHERE true "
    if CasellaCombinata12<>"" and not isnull(CasellaCombinata12) then
           sql = sql & " and Case.Tipo=CasellaCombinata12 "
    end if
    if Testo1<>"" and not isnull(Testo1) then
           sql = sql & " and Case.Metri)>=Testo1 "
    end if
    if Testo20 <>"" and not isnull(Testo20) then
           sql = sql & " and Case.Camere)>=Testo20 "
    end if
    sql = sql & ";"
    me.recordsource = sql

  4. #4
    ok proverò.

    solo una cosa, siccome non ho molte dimestichezza con access (sono le prime volte che lo uso) per poter impostare un codice come devo agire? devo creare una macro? o si fa in altro modo?
    Luca >> http://www.pollosky.it

  5. #5
    Utente di HTML.it L'avatar di fabio309
    Registrato dal
    Oct 2002
    Messaggi
    1,918
    il metodo più semplice, spero, è creare una routine nella form di ricerca e metterci il codice che ti ho passato, la chiami ad esempio cerca
    sull'evento dopo aggiornamento dei vari Controlli "CasellaCombinata12" "Testo1" "Testo20" chiami la funzione cerca con
    call cerca

  6. #6
    ok proverò....poi ti faccio sapere
    Luca >> http://www.pollosky.it

  7. #7
    ciao sto provando a seguire i tuoi consigli..dunque ti spiego cosa ho fatto.

    Nella maschera di Ricerca ho inserito un bottone(Comando28)...ho selezionato genera evento e di conseguenza si è aperta la finestra per inserire il codice VBA, ho inserito questa funzione:
    codice:
    Private Sub Comando28_Click()
        Dim sql As String
        sql = "SELECT Case.Codice, Case.Tipo, Case.Zona, Case.Indirizzo, Case.Metri, Case.Camere, Case.Descrizione FROM [Case] WHERE true "
        If CasellaCombinata12 <> "" And Not IsNull(CasellaCombinata12) Then
           sql = sql & " And ((Case.Tipo)=Forms!Ricerca!CasellaCombinata12) "
        End If
        If Testo1 <> "" And Not IsNull(Testo1) Then
           sql = sql & " And ((Case.Metri)>=Forms!Ricerca!Testo1) "
        End If
        If Testo3 <> "" And Not IsNull(Testo3) Then
           sql = sql & " And ((Case.Metri)<=Forms!Ricerca!Testo3) "
        End If
        If Testo20 <> "" And Not IsNull(Testo20) Then
           sql = sql & " And ((Case.Camere)>=Forms!Ricerca!Testo20) "
        End If
        sql = sql & ";"
        Me.RecordSource = sql
    End Sub
    Ora però sono in stallo...

    se premo sul bottone non succede niente e non capisco come fare per far eseguire la query definita nella variabile "sql", inoltre io volevo far in modo che cliccando sul bottone una volta definita la query venga aperto un Report che stampi i risultati filtrati dalla query.

    Come posso fare?
    Luca >> http://www.pollosky.it

  8. #8
    nessuno? vi prego illuminatemi che sono in stallo.
    Luca >> http://www.pollosky.it

  9. #9
    Utente di HTML.it L'avatar di Misterxxx
    Registrato dal
    Oct 2003
    Messaggi
    3,704
    Originariamente inviato da LukeSky
    nessuno? vi prego illuminatemi che sono in stallo.
    Vale per tutte le righe:
    NON
    sql = sql & " And ((Case.Tipo)=Forms!Ricerca!CasellaCombinata12) "
    MA
    sql = sql & " And ((Case.Tipo)=" & Forms!Ricerca!CasellaCombinata12 & ")"

    Do per scontata la logica del codice (che non ho letto).
    Io ne ho viste cose che voi umani non potreste immaginare. Navi da combattimento in fiamme al largo dei bastioni di Orione e ho visto i raggi B, balenare nel buio vicino le porte di Tannhäuser. E tutti quei momenti ... andranno ... perduti nel tempo, come lacrime nella pioggia. È tempo di morire. (Roy Batty).

  10. #10
    ti ringrazio proverò..solo una cosa.

    mi puoi spiegare bene il significato dell'istruzione Me.RecordSource=sql ?

    ti spiego il mio problema...a me basta fare in modo che venga generato un report che stampi i records selezionati in base alla query definita dal codice.

    Come devo fare? devo aggiungere qualche altra istruzione al codice?

    Mi potresti gentilmente dare le linee guida.

    Ti ringrazio in anticipo.
    Luca >> http://www.pollosky.it

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.