Apertura report filtrato da una casella di testo ed una combo

di il
16 risposte

Apertura report filtrato da una casella di testo ed una combo

Ciao,
ho una maschera con due campi text[annoRicerca] e Combo[autoreRicerca]
devo aprire un report tramite un pulsante su evento click
in pratica il filtro è sia solo su un campo compilato che su entrambi
[Anno]=Maschere![ricerca]!AnnoRicerca
[Autore]=Maschere![ricerca]!cbo_AutoreRicerca

ho provato con

Private Sub Stampaelenco_Click()
strWhere = "[anno] = '" & Me!annoricerca & "' and [Autore] = '" & Me!cbo_autorericerca & "'"
DoCmd.OpenReport ReportName:="elenco", View:=acViewPreview, strWhere
End Sub
ottengo subito un errore di compilazione
si accettano suggerimenti.
Grazie

16 Risposte

  • Re: Apertura report filtrato da una casella di testo ed una combo

    Che significa errore di compilazione?
    e comunque & va messo fuori dagli apici e non dentro, anche se non capisco a cosa ti servono in quella stringa
  • Re: Apertura report filtrato da una casella di testo ed una combo

    Oliviero001 ha scritto:


    ...
    DoCmd.OpenReport ReportName:="elenco", View:=acViewPreview, strWhere
    Poiché usi la chiamata nominativa dei parametri, anche strWhere deve essere preceduta dal "nome del parametro"
    DoCmd.OpenReport ReportName:="elenco", View:=acViewPreview, WhereCondition=strWhere
    (ricoda di racchiudere il codice tra i tag code)
    Ti invito anche a rivedere la costruzione della strWhere: anno è un campo testo? Lo vedo racchiuso tra apici singoli. Stessa cosa per Autore. Ti riferisci all'autore tramite un identificativo numerico? la combobox prende il valore della colonna associata, che non sempre è quella/e visibile/i
  • Re: Apertura report filtrato da una casella di testo ed una combo

    Il Campo [Anno] è Numerico o Testo...? mi pare strano sia Testo, e tu lo stai trattando come tale.
    Già mi pare strano avere un campo [Anno] incece che un campo [Data] che include già di base l'Anno...!
    Non vorrei tu avessi sia il campo Data che il campo Anno, sarebbe ovviamente sbagliato dal punto di vista tecnico.
  • Re: Apertura report filtrato da una casella di testo ed una combo

    @Alex ha scritto:


    Il Campo [Anno] è Numerico o Testo...? mi pare strano sia Testo, e tu lo stai trattando come tale.
    Già mi pare strano avere un campo [Anno] incece che un campo [Data] che include già di base l'Anno...!
    Non vorrei tu avessi sia il campo Data che il campo Anno, sarebbe ovviamente sbagliato dal punto di vista tecnico.
    Ciao,
    il campo anno è numerico ed è 4 cifre (non lo prende dalla data perchè è un campo da compilare senza nessuna relazione con il campo data---esempio Anno=2003 DataInserimento=10/10/2017 e così via
    il campo autore è una tabella con i campi IdAutore; DsAutore ( contatore e testo) , nella maschera dove apro il report ho inserito una combo che salva come valore IdAutore

    provo con
    Private Sub Stampaelenco_Click()
    strWhere = "[anno] = '" & Me!annoricerca & "' and [Autore] = '" & Me!cbo_autorericerca & "'"
    DoCmd.OpenReport ReportName:="elenco", View:=acViewPreview, WhereCondition=strWhere
    End Sub

    ma nulla.
    Ho capito che devo modificare gli apici perchè sono campi numerici ma non ho capito come.

    Grazie per la disponibilità
  • Re: Apertura report filtrato da una casella di testo ed una combo

    Oliviero001 ha scritto:


    strWhere = "[anno] = '" & Me!annoricerca & "' and [Autore] = '" & Me!cbo_autorericerca & "'"
    Ho capito che devo modificare gli apici perchè sono campi numerici ma non ho capito come.
    Guarda in quella riga quali sono gli apici e toglili dove non ci vanno.
    Se ancora non funziona specifica sempre il tipo di errore che hai, altrimenti dobbiamo andare ad intuito.
    (usa i tag code per racchiudere il codice)
  • Re: Apertura report filtrato da una casella di testo ed una combo

    Consapevole di poter andare fuori tema nello specifico richiesto da Oliviero001...io in casi dove non mi va di rompermi la testa con la sintassi specifica VBA preferisco impostare una query con gli stessi vincoli di filtro indicati (usando la visualizzazione struttura). Poi faccio poggiare il report sulla query.
  • Re: Apertura report filtrato da una casella di testo ed una combo

    Teoricamente, da quello che hai detto, la modifica dovrebbe essere la seguente:
    
    Private Sub Stampaelenco_Click()
    Dim strWhere As String
         If Not IsNull([annoricerca] Then strWhere = " AND [anno] = " & Me!annoricerca
         If Not IsNull([cbo_autorericerca] Then strWhere = strWhere & " AND [IDAutore] = " & Me!cbo_autorericerca
         If strWhere <> "" then strWhere = Mid(strWhere , 6)
         DoCmd.OpenReport ReportName:="elenco", View:=acViewPreview, WhereCondition:=strWhere
    End Sub
    ma sarebbe necessario vedere quale è nel report l'Origine record, ovvero i campi che la compongono, per essere sicuri che siano presenti i due campi che il filtro utilizza, per non generare errore.
  • Re: Apertura report filtrato da una casella di testo ed una combo

    Allora ripeto.
    Il campo NUMERICO richiede la formattazione differente dal campo testo.
    Il campo testo vuole gli APICETTI, quello numerico NOOOO.

    Inizia a correggere quanto meno le cose di base.
  • Re: Apertura report filtrato da una casella di testo ed una combo

    Che ne dite di ricominciare dalle cose semplici?
    Intanto scrivi una condizione con un solo parametro e falla funzionare.
    Quando funziona, aggiungi le altre condizioni, almeno sai dove sta l errore.
    Inoltre fa una ricerca con google per vedere la sintassi di una costruzione di una stringa.
    E quando ricevi un errore, dicci che tipo di errore ti da. Riportando esattamente il messaggio. Access ne ha circa 8000. Non è che ne possiamo scegliere uno a caso.
  • Re: Apertura report filtrato da una casella di testo ed una combo

    Buongiorno,
    per prima cosa volevo ringraziarvi per la pazienza.
    Ho seguito i vostri consigli e per gradi sono arrivato a questo risultato

    Private Sub Comando17_Click()
    Dim srtWhere As String
    strWhere = "[anno] = " & Me!AnnoRicerca
    DoCmd.OpenReport ReportName:="elenco", View:=acViewPreview, WhereCondition=strWhere
    End Sub

    Funziona regolarmente

    Private Sub Comando17_Click()
    Dim srtWhere As String
    strWhere = "[IDAutore] = " & Me!cbo_autorericerca
    DoCmd.OpenReport ReportName:="elenco", View:=acViewPreview, WhereCondition=strWhere
    End Sub

    Funziona regolarmente

    Private Sub Comando17_Click()
    Dim srtWhere As String
    strWhere = "[IDAutore] = " & Me!cbo_autorericerca AND "[anno] = " & Me!AnnoRicerca
    DoCmd.OpenReport ReportName:="elenco", View:=acViewPreview, WhereCondition=strWhere
    End Sub
    mi da questo errore Grazie a tutti
  • Re: Apertura report filtrato da una casella di testo ed una combo

    Oliviero001 ha scritto:


    ...
    strWhere = "[IDAutore] = " & Me!cbo_autorericerca AND "[anno] = " & Me!AnnoRicerca
    ...
    qui l'errore!
    devi studiare la concatenazione di stringhe in vba, ti basta cercare su google
  • Re: Apertura report filtrato da una casella di testo ed una combo

    Forse mi prenderò le ire di molti, ma a suo tempo mi trovavo io a sbattere la testa con errori simili (cioè evidentissimi ma che il mio cervello non vedeva), quindi mi permetto di fare seguito a muttley005 con la correzione:
    
    strWhere = "[IDAutore] = " & Me!cbo_autorericerca & " AND [anno] = " & Me!AnnoRicerca
    
    In pratica: l'AND fa parte della query (e quindi va dopo le virgolette, e occhio allo spazio), mentre manca la & che concatena le due parti.

    Sperando di non aver scritto castronerie.....

    Andrea
  • Re: Apertura report filtrato da una casella di testo ed una combo

    Jocman ha scritto:


    Forse mi prenderò le ire di molti, ma a suo tempo mi trovavo io a sbattere la testa con errori simili (cioè evidentissimi ma che il mio cervello non vedeva), quindi mi permetto di fare seguito a muttley005 con la correzione:
    
    strWhere = "[IDAutore] = " & Me!cbo_autorericerca & " AND [anno] = " & Me!AnnoRicerca
    
    In pratica: l'AND fa parte della query (e quindi va dopo le virgolette, e occhio allo spazio), mentre manca la & che concatena le due parti.

    Sperando di non aver scritto castronerie.....

    Andrea
    no, così sintatticamente è corretta, spero che "la pappa pronta" che gli hai fornito la sfrutti per imparare, notando le differenze tra la sua e la tua e capirne la logica.
    volendo fare le pulci si dà per assodato che i valori dei 2 controlli siano compilati e numerici, quindi servirebbero un paio di controlli pre

    @Oliviero: oltre a studiare la concatenazione di stringhe dovresti anche seguire le regole del forum per cui racchiudi sempre i codici che posti tra appositi tag (e possibilmente indenta), non è un vezzo quanto piuttosto una facilitazione alla "lettura" di chi ti vuole aiutare (oltre che tua)
  • Re: Apertura report filtrato da una casella di testo ed una combo

    O per semplificare, tutto ciò che non è racchiuso tra virgolette o apici, in base alla posizione che ha nella stringa, viene considerato da access o come variabile, come campo e raramente cone tabella.
Devi accedere o registrarti per scrivere nel forum
16 risposte