Aprire report differente a seconda della lunghezza di due caselle di testo

di il
10 risposte

Aprire report differente a seconda della lunghezza di due caselle di testo

Ciao a tutti, sono di nuovo qui a chiedere aiuto.

Ho due maschere correlate: frmInserimentoComodato e
frmInserimentoTerreni

Con la prima maschera cerco/seleziono laffittuario e il proprietari, mentre con la seconda inserisco le particelle di terreno che il proprietario decide di concedere allaffittuario.

Dopo di che, ho creato i vari report (in realtà appaiono come delle autocertificazioni) a seconda di chi è laffittuario e chi il proprietario.
Mi spiego meglio. Tutti i report si appoggiano ad una query il cui criterio è lIDCOMODATO presente sulla maschera dorigine. Ne intendo creare quattro tipi perché a seconda che laffittuario sia una società od una persona fisica (idem anche per il proprietario) la forma dellautodichiarazione cambia.
In sostanza, ho una dichiarazione quando entrambi i contraenti sono persone fisiche, una quando entrambi i contraenti sono società, una quando il proprietario è persona fisica e laffittuario è una società, e lultima è il contrario della terza casistica.

Tornando al DB, dopo aver inserito i dati in entrambe le maschere, avrei bisogno che al click del tasto stampa mi si aprisse il report giusto. Le condizioni da rispettare sono dettate da due caselle di testo che popolo automaticamente tramite una combobox.
Le due caselle di testo sono CUAAP (codice fiscale proprietario) e CUAAC (per il comodatario/affittuario)

Ho provato con la funzione Len(stringa....) ma mi apre sempre lo stesso report.

Dove sto sbagliando?

10 Risposte

  • Re: Aprire report differente a seconda della lunghezza di due caselle di testo

    Presenta l'istruzione con cui apri il report specifico (nei quattro casi) ed indica come impieghi le differenti lunghezze per le due caselle di testo CUAAP (codice fiscale proprietario) e CUAAC (per il comodatario/affittuario) con cui vorresti selezionare i dati.
  • Re: Aprire report differente a seconda della lunghezza di due caselle di testo

    Ciao willy grazie per linteressamento

    Dunque il comando che do al pulsante è il seguente (e racchiude anche la tua seconda richiesta)
    
    Private sub STAMPACOMODATO1_click()
    If len(me.CUAAP) = 16 and len (me.CUAAC) = 16 then
     Docmd.openreport "StampaComodatoPFPF", acpreview
     Else
     If len(me.CUAAP) = 16 and len (me.CUAAC) = 11 then
     Docmd.openreport "StampaComodatoPFSD", acpreview
     Else
     If len(me.CUAAP) = 11 and len (me.CUAAC) = 16 then
     Docmd.openreport "StampaComodatoSDPF", acpreview
     Else
     If len(me.CUAAP) = 11 and len (me.CUAAC) = 11 then
     Docmd.openreport "StampaComodatoSDSD", acpreview
     End if
     End if
     End if
     End if
     End sub
    
    Spero di esserti stato utile
  • Re: Aprire report differente a seconda della lunghezza di due caselle di testo

    Il codice appare corretto a meno del preferenziale parametro acViewPreview nella apertura del Report (anziché l'enumeratore acPreview della Form, anche se di pari valore uguale a 2); quindi compilalo e segui con il debug, in modo d valutare quale delle condizioni viene attuata.
  • Re: Aprire report differente a seconda della lunghezza di due caselle di testo

    Salve,
    siamo sicuri che le due TxtBox non contengono particolari formattazioni tipo degli spazi ?
    In questo caso va eseguito un replace.
    saluti
    gianni
  • Re: Aprire report differente a seconda della lunghezza di due caselle di testo

    Gianni55 ha scritto:


    Salve,
    siamo sicuri che le due TxtBox non contengono particolari formattazioni tipo degli spazi ?
    In questo caso va eseguito un replace.
    saluti
    gianni
    Ciao Gianni

    No le due caselle di testo prendono i dati da una tabrlla i cui campi sono stati formattati per avere un max di 16 caratteri (come il codice fiscale).
    Non sono riuscito a mettere una lunghezza minima, in questo caso 11 (per quanto riguarda i CUAA delle società che sono le partite IVA)

    willy55 ha scritto:


    Il codice appare corretto a meno del preferenziale parametro acViewPreview nella apertura del Report (anziché l'enumeratore acPreview della Form, anche se di pari valore uguale a 2); quindi compilalo e segui con il debug, in modo d valutare quale delle condizioni viene attuata.
    Oggi ci provo e vi dico.

    Grazie mille ad entrambi
  • Re: Aprire report differente a seconda della lunghezza di due caselle di testo

    willy55 ha scritto:


    Il codice appare corretto a meno del preferenziale parametro acViewPreview nella apertura del Report (anziché l'enumeratore acPreview della Form, anche se di pari valore uguale a 2); quindi compilalo e segui con il debug, in modo d valutare quale delle condizioni viene attuata.
    Ciao Willy

    Ho provato a togliere acpreview, ma mi va subito in stampa (e qui a casa non ho la stampante e quindi non so se va bene)

    Ho provato quindi a rimettere acpreview, facendo la prova su due casistiche (da persona fisica a persona fisica; da persona fisica a società)

    Il primo me lo fa vedere in anteprima, il secondo schiaccio e non succede niente.
  • Re: Aprire report differente a seconda della lunghezza di due caselle di testo

    Come detto, controlla il contenuto e la lunghezza di CUAAP e CUAAC, per attivare il secondo report.
  • Re: Aprire report differente a seconda della lunghezza di due caselle di testo

    Ciao a tutti! Trovato l'errore. Invertivo involontariamente semplicemente i CUAA. Grazie comunque ad entrambi.
  • Re: Aprire report differente a seconda della lunghezza di due caselle di testo

    Ciao a tutti, ho pensato di proseguire con questo 3D in quanto il mio nuovo quesito si basa sullo stesso report (se invece è megllio che ne apra uno nuovo , ditemelo che lo faccio subito)

    Dunque ... tramite i controlli della lunghezza dei due campi i report si aprono correttamente, ma quando vado a mettere una terza condizionale (che riguarda il valore di un specifico campo), mi si apre sempre e solo il primo tipo di report.

    Qui di seguito inserisco il codice:
    Private Sub Stampa_Click()
    On Error Resume Next
    
    If Len(Me.CUAAP) = 16 And Len(Me.CUAAC) = 11 Then
        If Me.IDTIPOCOMODATO.Text = verbale Then
        DoCmd.OpenReport "R_VerbalePFSDRic", acViewPreview
        ElseIf Me.IDTIPOCOMODATO.Text = scritto Then
        DoCmd.OpenReport "R_ScrittoPFSDRic", acViewPreview
        End If
    
    Else
        
        If Len(Me.CUAAP) = 16 And Len(Me.CUAAC) = 16 Then
            If Me.IDTIPOCOMODATO.Text = verbale Then
            DoCmd.OpenReport "R_VerbalePFPFRic", acViewPreview
            ElseIf Me.IDTIPOCOMODATO.Text = scritto Then
            DoCmd.OpenReport "R_ScrittoPFPFRic", acViewPreview
            End If
        Else
                
                If Len(Me.CUAAP) = 16 And Len(Me.CUAAC) = 16 Then
                    If Me.IDTIPOCOMODATO.Text = verbale Then
                    DoCmd.OpenReport "R_VerbalePFPFRic", acViewPreview
                    ElseIf Me.IDTIPOCOMODATO.Text = scritto Then
                    DoCmd.OpenReport "R_ScrittoPFPFRic", acViewPreview
                    End If
                Else
                        
                        If Len(Me.CUAAP) = 11 And Len(Me.CUAAC) = 16 Then
                            If Me.IDTIPOCOMODATO.Text = verbale Then
                            DoCmd.OpenReport "R_VerbaleSDPFRic", acViewPreview
                            ElseIf Me.IDTIPOCOMODATO.Text = scritto Then
                            DoCmd.OpenReport "R_ScrittoSDPFRic", acViewPreview
                            End If
                        Else
                                
                                If Len(Me.CUAAP) = 11 And Len(Me.CUAAC) = 11 Then
                                    If Me.IDTIPOCOMODATO.Text = verbale Then
                                    DoCmd.OpenReport "R_VerbaleSDSDRic", acViewPreview
                                    ElseIf Me.IDTIPOCOMODATO.Text = scritto Then
                                    DoCmd.OpenReport "R_ScrittoSDSDRic", acViewPreview
                                    End If
                                End If
                        End If
                End If
        End If
    End If
    End Sub
    
    Premetto che prima di rivolgervi a Voi, ho provato e riprovato a trovare la soluzione ma non ce l'ho fatta.

    Vorrei precisare che i dati li prendo da una maschera di ricerca dove tramite una casella combinata popolo tutti i campi che non sono associati.

    Quindi, in sostanza a me interesserebbe che il db faccia il controllo su tutte e tre le condizionali (LEN(CUAAC); LEN(CUAAP);IDTIPOCOMODATO) e che mi aprisse il report giusto.

    Spero di essere stato chiaro. Buona Domenica a tutti (e buona settimana)
  • Re: Aprire report differente a seconda della lunghezza di due caselle di testo

    Come non detto ho trovato la soluzione
    Private Sub Stampa_Click()
    On Error Resume Next
    
    If Len(Me.CUAAP) = 16 And Len(Me.CUAAC) = 11 Then
        If CasellaCombinata110.Column(10) Like "verbale" Then
        DoCmd.OpenReport "R_VerbalePFSDRic", acViewPreview
        ElseIf CasellaCombinata110.Column(10) Like "scritto" Then
        DoCmd.OpenReport "R_ScrittoPFSDRic", acViewPreview
        End If
    
    Else
        
        If Len(Me.CUAAP) = 16 And Len(Me.CUAAC) = 16 Then
            If CasellaCombinata110.Column(10) Like "verbale" Then
            DoCmd.OpenReport "R_VerbalePFPFRic", acViewPreview
            ElseIf CasellaCombinata110.Column(10) Like "scritto" Then
            DoCmd.OpenReport "R_ScrittoPFPFRic", acViewPreview
            End If
        Else
                
                If Len(Me.CUAAP) = 16 And Len(Me.CUAAC) = 16 Then
                    If CasellaCombinata110.Column(10) Like "verbale" Then
                    DoCmd.OpenReport "R_VerbalePFPFRic", acViewPreview
                    ElseIf CasellaCombinata110.Column(10) Like "scritto" Then
                    DoCmd.OpenReport "R_ScrittoPFPFRic", acViewPreview
                    End If
                Else
                        
                        If Len(Me.CUAAP) = 11 And Len(Me.CUAAC) = 16 Then
                            If CasellaCombinata110.Column(10) Like "verbale" Then
                            DoCmd.OpenReport "R_VerbaleSDPFRic", acViewPreview
                            ElseIf CasellaCombinata110.Column(10) Like "scritto" Then
                            DoCmd.OpenReport "R_ScrittoSDPFRic", acViewPreview
                            End If
                        Else
                                
                                If Len(Me.CUAAP) = 11 And Len(Me.CUAAC) = 11 Then
                                    If CasellaCombinata110.Column(10) Like "verbale" Then
                                    DoCmd.OpenReport "R_VerbaleSDSDRic", acViewPreview
                                    ElseIf CasellaCombinata110.Column(10) Like "scritto" Then
                                    DoCmd.OpenReport "R_ScrittoSDSDRic", acViewPreview
                                    End If
                                End If
                        End If
                End If
        End If
    End If
    End Sub
Devi accedere o registrarti per scrivere nel forum
10 risposte