Report, modificare un testo in base al valore di un campo

di
Anonimizzato12560
il
7 risposte

Report, modificare un testo in base al valore di un campo

Ciao a tutti,

ho un report basato su una query che richiede immissione della data, per estrarre tutte gli ordini ricevuti in quella data ( ogni record è un ordine).

Ora nel report vorrei modificare il testo di una casella a in base al contenuto di un campo bool se true o false.

Pensavo fosse necessario vba ma non riesco a concludere niente. Riesco a connettermi alla tabella e estrarre i dati con dao ma non riesco a filtrarli ed elaborarli come vorrei.
Mi chiedo intanto se è la strada giusta da percorrere.

Purtroppo le mie conoscenze di access e vba sono di base...

Grazie per l'aiuto, spero di essere stato sufficientemente chiaro.

Saluto

7 Risposte

  • Re: Report, modificare un testo in base al valore di un campo

    giacomob ha scritto:


    Ora nel report vorrei modificare il testo di una casella a in base al contenuto di un campo bool se true o false
    Io non lo farei nel report, ma direttamente nella query. Nel campo dove deve apparire questo testo particolare, scrivi la seguente espressione:
    CampoTesto: IIf([NomeCampoBoolean]="-1";"ValoreSì";"ValoreNo")
    CampoTesto è il nome della colonna
    -1 equivale a Sì
    Se nel CampoBoolean il valore è Sì, scrivi il valore che deve comparire nel secondo campo della IIf.
    Se nel CampoBoolean il valore è No, scrivi il valore che deve comparire nel terzo campo della IIf.
    Attenzione se il valore da immettere nel CampoTesto è un valore fisso, lo devi scrivere entro virgolette (così come suggerito nella mia espressione), se è il valore del campo stesso, devi scrivere entro parentesi quadre.
  • Re: Report, modificare un testo in base al valore di un campo

    Nel Report, contrariamente alle maschere, in questi casi hai una flessibilità di gestione molto vantaggiosa, che consente anche di fare FORMATTAZIONI GRAFICHE decisamente più complesse e complete della Formattazione Condizionale.

    Quindi su Evento Format della sezione nella quale hai i 2 Controlli [Booleano] e [TextBox] ti basterà scrivere
    
    Option Compare Database
    Option Explicit
    
    Private Sub Corpo_Format(Cancel As Integer, FormatCount As Integer)
        If Me!NomeControlloBooleano.Value=True Then
           Me!NomeTextBox.Value="Valore se Vero"
        Else
           Me!NomeTextBox.Value="Valore se Falso"
        End If
    End Sub
    Ovviamente l'eventuale Formattazione avviene all'interno del controllo...
  • Re: Report, modificare un testo in base al valore di un campo

    Grazie a entrambi!!!
    Mi stavo complicando la vita oltre il necessario.
    Ho utilizzato il codice di Alex, poiché in realtà il campo da modificare nel report è un campo non associato.
    Ho inoltre inserito il campo booleano nel report perchè non era incluso ( ma presente nella query ) e impostato la proprietà visible su false.

    Ho modificato Me!NuovoCliente con Me.NuovoCliente altrimenti dava errore.

    Così funziona.
    Ma se avessi dovuto riferirmi al campo booleano presente nel risultato della query come avrei dovuto fare?
    Chiedo perchè mi sono spaccato la testa su questo problema ( inutilmente )..

    Grazie!!!!!
    Option Compare Database
    Option Explicit
    
    Private Sub Corpo_Format(Cancel As Integer, FormatCount As Integer)
    On Error GoTo GestioneErrore
        If Me.NuovoCliente.Value = True Then
           Me.NuovoCliente.Visible = False
           Me!TextNoteOrdine.Value = "Valore se Vero"
        Else
           Me.NuovoCliente.Visible = False
           Me!TextNoteOrdine.Value = "Valore se Falso"
        End If
    
    
    Proc_Exit:
    Close
    Exit Sub
    
    GestioneErrore:
    MsgBox Err.Description, vbCritical
    Resume Proc_Exit
    
    End Sub
  • Re: Report, modificare un testo in base al valore di un campo

    giacomob ha scritto:


    Ma se avessi dovuto riferirmi al campo booleano presente nel risultato della query come avrei dovuto fare?
    Dal tuo codice immagino che [TextNoteOrdine] è il campo Testo, mentre [NuovoCliente] è Boolean.
    In visualizzazione struttura query, nella griglia, in una nuova colonna, in corrispondenza di Campo, scrivi così (sfrutto i nomi dei tuoi campi ecc...)
    TextNoteOrdine: IIf([NuovoCliente]="-1";"Valore se Vero";"Valore se Falso")
  • Re: Report, modificare un testo in base al valore di un campo

    Grazie Osvaldo!
    Sì,TextNoteOrdine è testo e NuovoCliente e boolean.

    La query su TextNoteOrdine mi restituisce #Errore.
    Ho controllato punti, virgolette, parentesi...tutto corretto.

    Dove sbaglio?
  • Re: Report, modificare un testo in base al valore di un campo

    Ho sbagliato io la sintassi, al posto di "-1" bisogna scrivere Vero (senza virgolette), quindi riepilogando:
    TextNoteOrdine: IIf([NuovoCliente]=Vero;"Valore se Vero";"Valore se Falso")
    ho fatto un test e funziona.
  • Re: Report, modificare un testo in base al valore di un campo

    Funziona!

    Grazie, grazie, grazie!
    Mi tornerà molto utile.

    Buon weekend a tutti.
Devi accedere o registrarti per scrivere nel forum
7 risposte