Newsgroup: it.comp.lang.visual-basic
Titolo: [?][ADO Recordset] Aiutooo!!!

Salve :))
ho un problemi con un recordset...posto il codice che facciamo prima.
Ho scritto una funzione per aprire un recordset e popolarlo, questo è
il codice:
    With RS
        .ActiveConnection = Connessione
        .CursorType = adOpenForwardOnly
        .Source = strSQL
        .Open
    End With
 
    If RS.EOF Or RS.BOF Then
        ' recordset vuoto
        ApriRecordset = rsVUOTO
    Else
        ' recordset popolato
        ApriRecordset = rsOK
    End If
 
    RS.Close
passavo alla funzione un recordset istanziato nel form e quando uscivo
dalla funizione, e usavo il recodset per poplare una listview, mi
diceva che non potevo usarlo perchè era chiuso (?!?!?!).
Ho allora levato
   RS.Close
dalla funzione, facendomi così ritornare il recordset aperto; il
problema è che adesso non esco più da un ciclo che teso come
   Do While Not RecSet.EOF
ho allora fatto un altra cosa, ho passato alla mia funzione un
recodset istanziato nel form, nella funzione ne ho creato un altro l'
ho aperto, l' ho usato e l' ho chiuso. Dopo questo ho detto che quello
pssato alla funzione era uguale a quello creato internamente alla
funzione (utilizzando l' istruzione set). Il problemaè lo stesso,
quando torno nel form con un recordset chiuso, mi dice che non lo
posso usare.
Insomma, è domenica, la logica è moooolto lontana dalla mia persona
:)) Non riesco a pensare qualcosa di decente :P
Aiutatemi, non mi lisciate abbandonato come un cane :))))
Scherzi a parte, ma quando apro un recordset, nel mio caso
   rs.open
il recordset si popola, giusto??
Saluti....AIUUTOOO!! Hehehe :))

il recordset si popola, giusto??
La sintesi non e' il tuo forte, oggi :)
La comprensione dei messaggi non e' il mio forte, tutti giorni :(
Provo a riassumere, dimmi se ho capito qualcosa di quello che volevi fare:
' da qualche parte in un modulo
Public Function ApriRecordset(ByRef a_rs As Recordset, _
                              ByVal a_strSQL As String) _
                              As Long
     ' do some stuff
End Function
' da qualche parte nel form:
Private Function CaricaLista() As Long
  Dim mi_rs As Recordset
  Dim mi_sql As String
  mi_sql = "SELECT bla, bla"
  If ApriRecordset(mi_rs, mi_sql) Then
     Do Until mi_rs.EOF
         ' do something with the list
     Loop
     mi_rs.Close
     Set mi_rs = Nothing
  End If
End Function
Ciao
Aldo

Provo a riassumere, dimmi se ho capito qualcosa di quello che volevi fare:
Lo faccio io con il mio codice:
....blà
....blà
....blà
    intRecSet = ApriRecordset(RecSet, strSQL)
 
    Select Case intRecSet
        Case rsERRORE
            stbInfo.Panels(3).Text = "Errore ricerca..."
        Case rsVUOTO
            stbInfo.Panels(3).Text = "Nessun mp3 trovato."
        Case rsOK
            Do While Not RecSet.EOF
                intCont = intCont + 1
                Set lvItem = lsvMp3.ListItems.Add()
 
                lvItem.Text = RecSet("Titolo")
                lvItem.SubItems(1) = RecSet("Autore")
                lvItem.SubItems(2) = RecSet("Album")
                lvItem.SubItems(3) = RecSet("Anno")
                lvItem.SubItems(4) = RecSet("Genere")
                lvItem.SubItems(5) = RecSet("Cd")
            Loop
 
            stbInfo.Panels(3).Text = "Sono stati trovati " & intCont &
" mp3."
    End Select
 
    Set RecSet = Nothing
 
    Exit Sub
___________________________________________________________
Public Function ApriRecordset(ByRef RecSet As ADODB.Recordset, _
                              ByVal strSQL As String) As Integer
    Dim RS As ADODB.Recordset
 
    On Error GoTo ErroreApriRecordset:
 
    Set RS = New ADODB.Recordset
 
    With RS
        .ActiveConnection = Connessione
        .CursorType = adOpenForwardOnly
        .Source = strSQL
        .Open
    End With
 
    If RS.EOF Or RS.BOF Then
        ' recordset vuoto
        ApriRecordset = rsVUOTO
    Else
        ' recordset popolato
        ApriRecordset = rsOK
    End If
 
    RS.Close
 
    Set RecSet = RS
    Set RS = Nothing
 
    Exit Function
 
ErroreApriRecordset:
    Set RS = Nothing
 
    ' errore odbc
    ApriRecordset = rsERRORE
 
    Err.Raise 1003, App.FileDescription, Err.Description
End Function
Prima utilizzavo un solo recorset, istanziato nel form, passato alla
funxione e ucciso nel form, se avesse funzionato fino da arrivare li
:))
Saluti...


Il piu' classico degli errori nei loop. Siccome ci sono sempre
caduto dentro, ormai ho preso il vizio di scrivere subito
l' istruzione MoveNext, cioe':
Do Until rs.EOF
   rs.MoveNext
Loop
Quindi inserisco il codice dentro il loop.
Buona domenica
Ciao
Aldo

venirne fuori...
Si si, ne sono uscito oggi, gestivo male la close del recset, la
gestivo male, ma talmente male che non c' era proprio :))
Saluti...