Newsgroup: it.comp.appl.access
Titolo: Condizioni IF

Salve a tutti, il codice di seguito è il codice di un filtro. Questo filtro
viene applicato a una maschera prendendo i valori da un'altra maschera.
Vorrei che se non ci sono campi immessi mi desse solo un messaggio di errore
come quello all'interno del primo If isNull. Da profano ho pensato di usare
l'operatore logico AND collegando logicamente i vari campi da immettere.
Questo metodo funziona se i campi sono tutti nulli, ma se vado a inserire un
campo per la ricerca mi da un errore: "Tipo non corrispondente", e non mi fa
filtrare la maschera. Se invece tolgo il primo If IsNull, la ricerca
funziona perfettamente, ma giustamente da errori quando non vengono inseriti
i campi.
Grazie per il vostro aiuto e visto che non mi piace vantarmi di meriti
altrui ringrazio anche chi ha messo su SitoComune il file di esempio da cui
ho preso spunto per questo frammento di codice.
Scusate anche se ho messo tutto il codice, ma magari il problema non si
trova all'inizio del codice nella clausola If e non me ne rendo conto.
Luca
Private Sub Comando285_Click()
Dim strTitolo As String, strMsg As String, IntFinestraMsg As Integer
Dim IntNuovo As Integer
Dim ChiaveRic As String
If IsNull(Me![Autore] And Me![Titolo] And Me![Editore] And Me![Volume] And
Me![Anno] And Me![Genere] And Me![Stanza] And Me![Scaffale]) Then
    strTitolo = "Non sono stati digitati campi per la ricerca"
    strMsg = "Non sono stati digitati campi per la ricerca"
    IntFinestraMsg = vbExclamation
    IntNuovo = MsgBox(strMsg, IntFinestraMsg, strTitolo)
    Me!Autore.SetFocus
    Else
If Not IsNull(Me!Autore) Then
    ChiaveRic = "[Autore] Like " & Chr$(34) & Me!Autore & Chr$(34)
    If Left(Me!Autore, 1) <> "*" Then
        Me!Autore = "*" & Me!Autore
    End If
    If Right(Me!Autore, 1) <> "*" Then
        Me!Autore = Me!Autore & "*"
    End If
End If
If Not IsNull(Me!Titolo) Then
ChiaveRic = "[Titolo] Like " & Chr$(34) & Me!Titolo & Chr$(34)
    If Left(Me!Titolo, 1) <> "*" Then
        Me!Titolo = "*" & Me!Titolo
    End If
    If Right(Me!Titolo, 1) <> "*" Then
        Me!Titolo = Me!Titolo & "*"
    End If
End If
If Not IsNull(Me!Editore) Then
    ChiaveRic = "[Editore] Like " & Chr$(34) & Me!Editore & Chr$(34)
    If Left(Me!Editore, 1) <> "*" Then
        Me!Editore = "*" & Me!Editore
    End If
    If Right(Me!Editore, 1) <> "*" Then
        Me!Editore = Me!Editore & "*"
    End If
End If
If Not IsNull(Me!Volume) Then
ChiaveRic = "[Volume] Like " & Chr$(34) & Me!Volume & Chr$(34)
    If Left(Me!Volume, 1) <> "*" Then
        Me!Volume = "*" & Me!Volume
    End If
    If Right(Me!Volume, 1) <> "*" Then
        Me!Volume = Me!Volume & "*"
    End If
End If
If Not IsNull(Me!Anno) Then
    ChiaveRic = "[Anno] Like " & Chr$(34) & Me!Anno & Chr$(34)
    If Left(Me!Anno, 1) <> "*" Then
        Me!Anno = "*" & Me!Anno
    End If
    If Right(Me!Anno, 1) <> "*" Then
        Me!Anno = Me!Anno & "*"
    End If
End If
If Not IsNull(Me!Genere) Then
ChiaveRic = "[Genere] Like " & Chr$(34) & Me!Genere & Chr$(34)
    If Left(Me!Genere, 1) <> "*" Then
        Me!Genere = "*" & Me!Genere
    End If
    If Right(Me!Genere, 1) <> "*" Then
        Me!Genere = Me!Genere & "*"
    End If
End If
If Not IsNull(Me!Stanza) Then
ChiaveRic = "[Stanza] Like " & Chr$(34) & Me!Stanza & Chr$(34)
    If Left(Me!Stanza, 1) <> "*" Then
        Me!Stanza = "*" & Me!Stanza
    End If
    If Right(Me!Stanza, 1) <> "*" Then
        Me!Stanza = Me!Stanza & "*"
    End If
End If
If Not IsNull(Me!Scaffale) Then
ChiaveRic = "[Scaffale] Like " & Chr$(34) & Me!Scaffale & Chr$(34)
    If Left(Me!Scaffale, 1) <> "*" Then
        Me!Scaffale = "*" & Me!Scaffale
    End If
    If Right(Me!Scaffale, 1) <> "*" Then
        Me!Scaffale = Me!Scaffale & "*"
    End If
End If
    If Not IsNull(Me!Autore) Then
     ChiaveRic = ChiaveRic & " " & Me!ANDOR & " [Autore] Like " & Chr$(34) &
Me!Autore & Chr$(34)
    End If
    If Not IsNull(Me!Titolo) Then
     ChiaveRic = ChiaveRic & " " & Me!ANDOR & " [Titolo] Like " & Chr$(34) &
Me!Titolo & Chr$(34)
    End If
    If Not IsNull(Me!Editore) Then
        ChiaveRic = ChiaveRic & " " & Me!ANDOR & " [Editore] Like " &
Chr$(34) & Me!Editore & Chr$(34)
    End If
    If Not IsNull(Me!Volume) Then
        ChiaveRic = ChiaveRic & " " & Me!ANDOR & " [Volume] Like " &
Chr$(34) & Me!Volume & Chr$(34)
    End If
    If Not IsNull(Me!Anno) Then
        ChiaveRic = ChiaveRic & " " & Me!ANDOR & " [Anno] Like " & Chr$(34)
& Me!Anno & Chr$(34)
    End If
    If Not IsNull(Me!Genere) Then
        ChiaveRic = ChiaveRic & " " & Me!ANDOR & " [Genere] Like " &
Chr$(34) & Me!Genere & Chr$(34)
    End If
    If Not IsNull(Me!Stanza) Then
        ChiaveRic = ChiaveRic & " " & Me!ANDOR & " [Stanza] Like " &
Chr$(34) & Me!Stanza & Chr$(34)
    End If
    If Not IsNull(Me!Scaffale) Then
        ChiaveRic = ChiaveRic & " " & Me!ANDOR & " [Scaffale] Like " &
Chr$(34) & Me!Scaffale & Chr$(34)
    End If
    Me.Visible = False
    DoCmd.Hourglass True
    Forms!EliminaRecord.SetFocus
    DoCmd.ApplyFilter , ChiaveRic
    If Forms!EliminaRecord.RecordsetClone.RecordCount = 0 Then
        DoCmd.Hourglass False
        strTitolo = "Ricerca con esito negativo"
        strMsg = "Non esistono libri che soddisfano questi criteri"
        IntFinestraMsg = vbExclamation
        IntNuovo = MsgBox(strMsg, IntFinestraMsg, strTitolo)
        DoCmd.GoToRecord , , acFirst
    End If
    DoCmd.Hourglass False
    Me.Visible = True
    Me!Comando39.SetFocus
    Me!Comando285.Visible = False
    DoCmd.Close
End If
End Sub

 come quello all'interno del primo If isNull. Da profano ho pensato di
usare
Moooolto da profano...
La sintassi è
if isnull(A) and isnull(B) and .... and isnull(Z) then
Antonio


Grazie mille, e anche le critiche sono sempre ben accette (almeno ci ho
provato!!)
Ciao Luca

 ha scritto nel messaggio
news:1WiKa.119105$Ny5.3...@twister2.libero.it...

Ti spiego la mia critica:
l'errore era talmente grossolano, che avresti potuto accorgertene da solo se
avessi spulciato un po' l'help e gli esempi.
Sulla sana ignoranza (nel senso di mancanza di conoscenza) non mi
permetterei di bacchettare...
Antonio