Formattazione condizionale di controlli in maschera

di il
6 risposte

Formattazione condizionale di controlli in maschera

Salute a tutti gente, sono di nuovo incappato in un ...collo di bottiglia. Mi spiego subito, ho un database Access 2003 (e non lo cambio), dicevo sto cercando di formattare una casella di testo non associata la quale, in base ai valori di due campi data di un'altra maschera mi dia l'avviso se un determinato oggetto è presente in archivio oppure è ancora in prestito alla persona "X". La maschera dalla quale deve fare riferimento la formattazione condizionale contiene i seguenti campi:
[NR. OGGETTO];[ NOMINATIVO];[DATA RITIRO];[DATA RESTITUZIONE];[NOTE]. Ho provato con la formattazione condizionale ma non succede nulla, ho provato con codice:

Private Sub Testo130_GotFocus()
If [Movimenti Scheda]![DataRitiro] < [Movimenti Scheda]![DataRestituzione] Then
Me!Etichetta130.Visible = False
Else
Me!Etichetta130.Visible = True
End If
End Sub
ma non succede nulla, dove sbaglio?

Saluti a tutti
Pino63

6 Risposte

  • Re: Formattazione condizionale di controlli in maschera

    Ciao.
    Intanto, da programmatore, ti suggerirei dimettere es. sulla form dove vuoi fare apparire il risultato, un pulsante e provare inizialmente sul suo evento_click, quando tutto funzionerà, potrai provare a mettere il codice in altro evento, come quello del tuo es. = got_focus...
    Poi, per vedere se intanto 'ti pesca qualcosa' dall'altra Form, prova ad inserire invece di
    If [Movimenti Scheda]![DataRitiro] < [Movimenti Scheda]![DataRestituzione] Then
    un semplice:
    msgbox([Movimenti Scheda]![DataRitiro])
    Per vedere se almeno ti appare il contenuto del campo data della form desiderata...
    Perchè se non ti appare niente, c'è qualche riferimento che non funziona.
    Ho fatto una prova, anche io in Access 2003, creando 2 form/maschere, 'maschera1' e 'maschera2' - ho messo 2 textbox nella prima e una nella seconda, devono essere attive entrambe, chiaramente, ho scritto 2 numeri nelle textbox della prima e in un pulsante nella seconda, ho scritto il seguente codice, e funziona, facendo apparire nella Textbox della seconda form, la somma delle 2 dell'altra...
    Per riferirmi alla TextBox della prima maschera (come detto, questo codice è nella seconda maschera), ho usato la seguente sintassi:
    Private Sub Comando3_Click()
    On Error GoTo Err_Comando3_Click
    
        ' ---
        Forms![maschera1].Refresh
        Testo0 = Val(Forms![maschera1]![Testo10]) + Val(Forms![maschera1]![Testo7])
    
    Exit_Comando3_Click:
        Exit Sub
    
    Err_Comando3_Click:
        MsgBox Err.Description
        Resume Exit_Comando3_Click
        
    End Sub
    Spero ti possa aver dato un'idea...
    Ah! i contenuti dei controlli che contengono le date, potrebbero dover essere convertiti, con Cdate() - per fare operazioni sulle date, considera anche questo...
    Saluti.
  • Re: Formattazione condizionale di controlli in maschera

    Ciao Lucky, inanzitutto grazie per essere intervenuto al mio assillante problema. Il fatto è che la 1ª maschera contiene i campi [NR_OGGETTO];[NOME_CHI_RITIRA];[DATARITIRO];[DATARICONSEGNA];[NOTE].
    Come puoi vedere non ci sono campi da sommare. A me interessa che nella 2ª maschera (che mi visualizza le caratteristiche dell’oggetto prestato) nel momento dell’apertura da pulsante, se quell’oggetto non è in archivio, me lo deve segnalare, o tramite una casella di testo con formattazione condizionale (che non ci sono riuscito) o tramite msgbox che avevo già provato ma con i seguenti risultati:
    Private Sub Comando51_Click()
    On Error GoTo Err_Comando51_Click
    
        Dim stDocName As String
        Dim stLinkCriteria As String
    
        stDocName = "FAS"
        
        stLinkCriteria = "[NR_FASCI]=" & "'" & Me![NRFASCI] & "'"
        DoCmd.OpenForm stDocName, , , stLinkCriteria
    
    If ([Movimenti Scheda]![DataRitiro]) > ([Movimenti Scheda]![DataRestituzione]) Then
        MsgBox ([Movimenti Scheda]![DataRitiro])
       
    End If
    
    Exit_Comando51_Click:
        Exit Sub
    
    
    Err_Comando51_Click:
        MsgBox Err.Description
        Resume Exit_Comando51_Click
        
    End Sub
    
    dandomi questo errore:
    (Impossibile trovare il campo "|" a cui si fa riferimento nell'espressione)

    Nel secondo caso:
    Private Sub Comando51_Click()
    On Error GoTo Err_Comando51_Click
    
        Dim stDocName As String
        Dim stLinkCriteria As String
    
        stDocName = "FAS"
        
        stLinkCriteria = "[NR_FASCI]=" & "'" & Me![NRFASCI] & "'"
        DoCmd.OpenForm stDocName, , , stLinkCriteria
    
    If (Maschera![Movimenti Scheda]![DataRitiro]) > (Maschera![Movimenti Scheda]![DataRestituzione]) Then
        MsgBox (Maschera![Movimenti Scheda]![DataRitiro])
       
    End If
    
    Exit_Comando51_Click:
        Exit Sub
    
    
    Err_Comando51_Click:
        MsgBox Err.Description
        Resume Exit_Comando51_Click
        
    End Sub
    
    
    
    Mi da quest’altro errore:
    (Necessario oggetto).
    Dove sbaglio?

    Saluti Pino
  • Re: Formattazione condizionale di controlli in maschera

    Caro Pino.
    Io avevo solo fatto un es. di utilizzo di campi letti da altra Form (maschera), per utilizzarli in un'altra..., lo so che non avevi da sommare niente...
    E consigliato di fare semplici test, riducendo le righe di codice a qualcosa di più elementare per vedere fino a dove arriva il tuo codice/programma...
    Come detto, se intanto sostituivi la tua IF... con un messagebox per vedere se almeno ti viene riportato il contenuto di uno dei campi-data, sarebbe un passo avanti nel debugging (trovare lo sbaglio), del tuo codice...
    Intanto posso dirti che la sintassi per riferirti ai campi data della prima Maschera, come hai scritto a me non funziona, tu usi una sintassi del tipo:
    [nome scheda]![nome campo], vero...? infatti hai scritto: [Movimenti Scheda]![DataRitiro]
    Prova invece a scrivere:
    Forms![nome maschera]![nome casella testo]

    il tuo diventerebbe:
    Forms![Movimenti Scheda]![DataRitiro]
    prova e facci sapere...
    Saluti.
  • Re: Formattazione condizionale di controlli in maschera

    Nulla da fare, come già detto mi da gli stessi errori perchè sia facendo riferimento alla tabella sia facendo riferimento alla form mi da gli stessi errori e non capisco perchè. Alternativamente avevo pensato (forse è meglio) in luogo del msgbox, ho messo una etichetta con su scritto "ATTENZIONE!!! OGGETTO NON PRESENTE IN ARCHIVIO." Da formattare con codice che al verificarsi o meno della condizione mi appare o no, tipo Nr_etichetta.visible=True o False, ma non funziona.

    Saluti Pino
  • Re: Formattazione condizionale di controlli in maschera

    Buon pomeriggio, Pino;
    volevo chiederti se può essere funzionale per le Tue esigenze una soluzione con Query e relativo Report.
    Nel Report verrebbe evidenziata una barra rossa se il [NR. OGGETTO] non è disponibile o una barra verde se è disponibile.
    Verrebbero, inoltre, riportati i Nominativi di tutte le Persone che hanno avuto in prestito l'oggetto con data di ritiro e reso.

    Fammi sapere se la proposta può essere di Tuo interesse.

    Cordaiali saluti e buona serata a Te e a Luciano.

    A disposizione.

    Giuseppe
  • Re: Formattazione condizionale di controlli in maschera

    Salute ragazzi, come vedete anche oggi mi dedico al mio "sport" preferito. Giuseppe, quello che tu proponi va benissimo ma a me serve visualizzarlo sulla maschera e non a report perchè sarebbe inutile stamparlo ogni volta ma basta visualizzarlo al momento dell'apertura della maschera che mi dicesse se l'oggetto è presente o meno.


    Buona domenica a tutti

    Pino
Devi accedere o registrarti per scrivere nel forum
6 risposte