Newsgroup: it.comp.appl.access
Titolo: è possibile visualizzare il nome del campo se esso contiene il valore vero?

detto così, sembra extraterrestre. In Pratica da Excell ho importato una
tabella con dati anagrafici e poi ci sono 7 campi denominati: 96, 97, 98...
02. Il contenuto dei campi è un Si o No a seconda se l'interessato ha
versato o non ha versato la quota di iscrizione. Ora, desidererei creare
delle lettere tipo stampa unione, ma utilizzando i report e in questo
dovrebbe comparire qualcosa del tipo
"La SV è invitata a regolarizzare la posizione contributiva in quanto
risultano non ancora pagati gli anni" e qui dovrà essere visualizzato il o i
nomi dei campi che contengono il valore No.
Grazie per l'aiuto che vorrete darmi
--
Saluti da
NSantini

> "NSantini" [...]:

    Rudimentale ma efficace, credo, vista la struttura dei dati:
Dim sMsg
With rst.Fields
    sMsg = ""
    With .Item("[96]")
        If .Value = False Then sMsg = sMsg & .Name & ", "
    End With
    ' ...
    With .Item("[02]")
        If .Value = False Then sMsg = sMsg & .Name & ", "
    End With
End With
If (Len(sMsg) > 0) Then
    sMsg _
      = "La S.V. è invitata a regolarizzare la posizione" _
      & " contributiva in quanto risultano non ancora" _
      & " pagati gli anni " _
      & Left$(sMsg, Len(sMsg) - 2)
Else
    ' ...
End If
--
Ciao.
Maurizio
--------
?SPQR(C)
 X
--------

 Dim sMsg
    Dim sMsg As String


 Maurizio
si blocca in rst e mi segnala "Variabile non definita"
Ho provato con istruzioni quali dim rst as recordset ecc, ma mi sono
incartato
potresti darmi un'ulteriore suggerimento?
Grazie
Saluti da NSantini

 potresti darmi un'ulteriore suggerimento?
        Strumenti > Macro > Visual Basic Editor
        Strumenti > Riferimenti
    Verifica che esista il riferimento a:
        Library DAO
            <...>\DAO\DAOXXX.DLL
            Microsoft DAO x.x Object Library
quindi:
    Dim rst As DAO.Recordset


 Maurizio
Non gira ancora!
 ti posto il codice e vediamo assieme
private Sub Report_Open(Cancel As Integer)
Dim sMsg As String
Dim rst As DAO.Recordset
With rst.Fields             (si blocca qui e mi dice *variabile del blocco
With non impostata*)
        sMsg = ""
        With .Item("[96]")
        If .Value = False Then sMsg = sMsg & .Name & ", "
    End With
    With .Item("[97]")
        If .Value = False Then sMsg = sMsg & .Name & ", "
    End With
    With .Item("[98]")
        If .Value = False Then sMsg = sMsg & .Name & ", "
    End With
    With .Item("[99]")
        If .Value = False Then sMsg = sMsg & .Name & ", "
    End With
    With .Item("[00]")
        If .Value = False Then sMsg = sMsg & .Name & ", "
    End With
    With .Item("[01]")
        If .Value = False Then sMsg = sMsg & .Name & ", "
    End With
    With .Item("[02]")
        If .Value = False Then sMsg = sMsg & .Name & ", "
    End With
End With
If (Len(sMsg) > 0) Then
    sMsg _
      = "La S.V. è invitata a regolarizzare la posizione" _
      & " contributiva in quanto risultano non ancora" _
      & " pagati gli anni " _
      & Left$(sMsg, Len(sMsg) - 2)
Else
    ' ...
End If
'invitotx è il nome del controllo che visualizzerà il frutto
dell'elaborazione
 Me.invitotx = sMsg
End Sub
Ho impostato i riferimenti come indicato, ma ancora non gira.
Scusami se ti sto scocciando
Ciao, NSantini

 (si blocca qui e mi dice *variabile del blocco With non impostata*)
    Ok. Facciamo cosi'. Cancella tutto e ricominciamo.
N.B.: useremo l'evento Su formattazione della sezione Corpo del report
perche' l'operazione andra' fatta per ogni record.
Private Sub Corpo_Format( _
  ByRef Cancel As Integer _
, ByRef FormatCount As Integer)
  Dim sMsg As String
  sMsg = ""
  With Me
    With ![96]
      If .Value = False Then sMsg = sMsg & .Name & ", "
    End With
    ' ...
    With ![02]
      If .Value = False Then sMsg = sMsg & .Name & ", "
    End With
    If (Len(sMsg) > 0) Then
      sMsg _
        = "La S.V. è invitata a regolarizzare la posizione" _
        & " contributiva in quanto risultano non ancora" _
        & " pagati gli anni " _
        & Left$(sMsg, Len(sMsg) - 2)
    Else
      sMsg = "I pagamenti sono regolari, grazie."
    End If
    !invitotx.Value = sMsg
  End With
End Sub



Private Sub Corpo_Format(Cancel As Integer, FormatCount As Integer)
Dim sMsg As String
sMsg = ""
With Me
    With .[96] (con il ! mi dava errore dicendo che non trovava il
campo...Boh)
        If .Value = False Then sMsg = sMsg & .Name & ", "
 ora si ferma in .Name con questo messaggio    *Impossibile trovare il
metodo o il membro dei dati*
Un momento di pausa: tu ti riferisci ad A97 o A2000? Succede che alcuni
termini sono diversi tra i due Access (es. A97 li chiama Pannelli di
controllo mentre A2000 li chiama Swichboard) quindi se così è potrebbe
essere che tu chiami .Name qualcosa che in A2000 è diverso... non so, sto
provando di capire e penso anche alle cose più assurde!
End With
.......
Ciao
NSantini

 Un momento di pausa: tu ti riferisci ad A97 o A2000?
    A2000 (AC2K)


 Maurizio
Bene, ora sembra tutto apposto a parte il fatto che ho dovuto inserire dei
controlli *inutili* al report.
Grazie infinite
Saluti da NSantini

 Grazie infinite
--
Ciao :-)


     Mi fai sentire in colpa. Ligure?
No, non  sono ligure; sono di Comiso (RG) e ligure o non ligure mi sembra
una inutilità aggiungere dei controlli che non serviranno: Ma facendo un
discorso più didattico, perché non si può fare direttamente riferimento ai
campi della tabella?
Grazie ancora, t'ho fatto sudare!
Saluti da NSantini

 Grazie ancora, t'ho fatto sudare!
    Tranquillo. Ho la maglietta della salute.
