Contenuto casella di testo

di il
17 risposte

17 Risposte - Pagina 2

  • Re: Contenuto casella di testo

    Il setproperty è un modo per assegnare una proprietà...
    In questo caso equivale a:
    
    Me!NomeControllo.Value=Dlookup(....)
    
    Esattamente Come avevo più semplicemente suggerito sopra... ma a complicarsi le cose è un attimo...
    Aggiungo che nemmeno eseguire 10 Dlookup su 10 campi della stessa tabella è un a cosa da consigliare... si apre un Recordset si legge il Record e si assegnano i valori recuperati dai campi...

    Ma poi servirà veramente questo..? Si lavora in Unbound o in Bound mode..?
  • Re: Contenuto casella di testo

    @Alex ha scritto:


    Il setproperty è un modo per assegnare una proprietà...
    In questo caso equivale a:
    
    Me!NomeControllo.Value=Dlookup(....)
    
    Esattamente Come avevo più semplicemente suggerito sopra... ma a complicarsi le cose è un attimo...
    Mi pare che questo thread sia pieno di cose inutilmente complicate ....
  • Re: Contenuto casella di testo

    max.riservo ha scritto:


    Antonior76 ha scritto:


    Function Macro_Utente()
    If (Forms![Database]!CasellaCombinata47 = "013") Then
    DoCmd.OpenReport "Report", acViewReport, "", "([utenze].[Padiglione/Utente] Like ""*013"")", acNormal
    DoCmd.SetProperty "CasellaTesto1", , DLookup("[Reparto]", "Database", "[Reparto]='013'")
    DoCmd.SetProperty "CasellaTesto2", , DLookup("[Denominazione Reparto]", "Database", "[Reparto]='013'")
    DoCmd.SetProperty "CasellaTesto3", , DLookup("[Generalità Incaricato]", "Database", "[Reparto]='013'")
    ElseIf (Forms![Database]!CasellaCombinata47 = "021") Then
    DoCmd.OpenReport "Report", acViewReport, "", "([utenze].[Padiglione/Utente] Like ""*021"")", acNormal
    DoCmd.SetProperty "CasellaTesto1", , DLookup("[Reparto]", "Database", "[Reparto]='021'")
    DoCmd.SetProperty "CasellaTesto2", , DLookup("[Denominazione Reparto]", "Database", "[Reparto]='021'")
    DoCmd.SetProperty "CasellaTesto3", , DLookup("[Generalità Incaricato]", "Database", "[Reparto]='021'")

    End If

    End Function
    
    Function Macro_Utente() 
    Dim sReparto as String
    Dim sFilter   as String
    
    sReparto = Forms![Database]!CasellaCombinata47 
    sFilter = "[utenze].[Padiglione/Utente] Like '*"  & sReparto & "'" 
    
    DoCmd.OpenReport "Report", acViewReport, "", sFilter, acNormal
    
    DoCmd.SetProperty "CasellaTesto1", , DLookup("[Reparto]", "Database", "[Reparto] = '" & sReparto & "'")
    DoCmd.SetProperty "CasellaTesto2", , DLookup("[Denominazione Reparto]", "Database", "[Reparto] = '" & sReparto & "'")
    DoCmd.SetProperty "CasellaTesto3", , DLookup("[Generalità Incaricato]", "Database", "[Reparto] = '" & sReparto & "'")
    
    End Function
    
    
    Se il codice delle 115+1 IF è tutto uguale (ovvero cambia SOLO il reparto) direi che potresti limitari a quanto proposto sopra (salvo eventuali errori di sintassi) .....

    Sinceramente NON capisco a cosa serva il docmd.setproperty (e non so neanche dove risiedano i campi che vuoi impostare).

    Giusto per fare un piccolo passo in avanti ed evitare confusione / fraintendimenti : non chiamare una funzione Macro_Utente() non lo è. E' una funzione di VBA ....
    Assegna dei nomi sensati a controlli, oggetti : CasellaTesto1, 2, 3, DATABASE (per una tabella / query POI) certo NON lo sono.
    Dlookup serve primariamente per recuperare il valore di un campo da una tabella/query : nel tuo caso (ne fai 3 sulla stessa tabella) è certamente meglio usare un recordset ... ma penso che stiamo andando troppo oltre il tuo attuale livello di conoscenza del prodotto.
    Grazie al tuo codice mi sono risparmiato 116 IF con tutti i rischi di errori di sintassi.

    L'unica cosa che ho dovuto modificare parte della formula in:
    DoCmd.SetProperty "CasellaTesto1", acPropertyValue, DLookup.............
    DoCmd.SetProperty "CasellaTesto2", acPropertyValue, DLookup.............
    DoCmd.SetProperty "CasellaTesto3", acPropertyValue, DLookup.............
Devi accedere o registrarti per scrivere nel forum
17 risposte