Newsgroup: it.comp.lang.visual-basic
Titolo: isNull NON funzia...perchè?

isNull NON funzia...perchè?
...si blocca anche usando  isNull, mi dice: " Il record corrente corrisponde
all'inizio o alla fine del file o è stato eliminato..." il ke non è vero...
ho una tab access che NON ha tutte le celle piene (dovrebbero esse null
quindi...)
però il lstGruppi, cicla un'attimo, poi quando incontra un null si
blocca.... se invece gli seleziono un record "pieno" non si blocca solo
perchè ho inserito dei numeri in tutte le celle del record ....
...ma perchè?
...dove sbaglio?
Private Sub CaricaCaratteristicheGruppi()
    Dim rCarattGruppi As ADODB.Recordset
    Dim SQL As String
    Dim LI As ListItem 'Serve?
    Dim Conta As Integer
    Dim nrcampiintabella As Integer
    Dim Titolo As String
    lstGruppi.Clear
    lwCaratt.ListItems.Clear
    SQL = "SELECT * FROM CaratteristicheGruppi where Gruppo = '" &
Text3.Text & "'"
    Set rCarattGruppi = New ADODB.Recordset
    rCarattGruppi.Open SQL, Db, adOpenKeyset, adLockReadOnly
    Debug.Print SQL
    If rCarattGruppi.RecordCount > 0 Then
        rCarattGruppi.MoveFirst
        nrcampiintabella = rCarattGruppi.Fields.Count
            For Conta = 1 To (nrcampiintabella - 4)
                If Not IsNull(rCarattGruppi.Fields("caratt" & Conta).Value)
Then
                    Titolo = rCarattGruppi.Fields("caratt" & Conta).Value
                    lwCaratt.ColumnHeaders.Add.Text = Titolo
                Else
                    rCarattGruppi.MoveNext
                End If
            Next Conta
'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
    End If
End Sub
--
--------------------------------------------
molte onorevoli grazie a Voi
^____^
Luca

 ...dove sbaglio?
Controlla bene il ciclo qui sotto:
    nrcampiintabella = rCarattGruppi.Fields.Count
    For Conta = 1 To (nrcampiintabella - 4)
        If Not IsNull ...
            [...]
        Else
            rCarattGruppi.MoveNext
        End If
    Next Conta
stai scorrendo le *colonne* del tuo record, ma, a seconda della condizione
sul Null, fai un MoveNext sulla *riga* successiva; questo vuol dire che se
hai una tabella con 5 colonne e fai una query che restituisce un recordset
con 3 record, potresti potenzialmente posizionarti su un record inesistente,
che e' esattamente quello che il messaggio di errore ti segnala... non
succede quando tutti i campi sono pieni semplicemente perche' non passa mai
dall' 'Else'.
Dovresti rivedere la procedura inserendo il classico Do While sul recordset
e il ciclo For internamente.
schematizzando al massimo dovrebbe somigliare a:
Do While Not rs.EOF
    For i = 1 To rs.Fields.Count
        If IsNull() Then
        End If
    Next
    rs.MoveNext
Loop
Ciao
--
Luca Dormio - 
luca....@tin.it
________________________________
"Marty, non stai ragionando in maniera quadridimensionale"
Dr. Emmett L. Brown

...sob...  che dormita...
provo subito a smanettare....
...intanto ti ringrazio ;-)
"....com'č dura l'avventura..."
Luca
"Luca Dormio" <lucaFaV...@tinFaVa.it> ha scritto nel messaggio
news:9u534d$opf$1...@fe2.cs.interbusiness.it...
