Newsgroup: it.comp.lang.visual-basic
Titolo: problemi con Clone e Bookmark

ciao,ho un problema di non "riallineamento"  del bookmark fra un RsClone e
un Ado Data Control.
Ho una form di filtro dati e,se avviene una estrazione,setto il dcRisultato
a cui è legata una tdbgrid 7.
L'incongruenza c'è quando voglio procedere con la selezione o deselezione di
uno riga,facendo doppio clic sulla riga e richiamando l'evento FetchRowStyle
della griglia che si basa sul bookmark.
Purtroppo non coincide il bookmark del mio data control con quello del
clone.
Ho provato a risettare il clone ad ogni evento,ma non cambia nulla.
Allego il codice......
Option Explicit
'array di selezione riga del dbgRisultato
Dim sSelezione() As Long
Dim iMaxSel As Integer
Dim iRecCountRis As Integer
'-------------------------------------------------
Sub o Function che rikiamo nella mia form.....
'-------------------------------------------------
Public Sub AzzeraSelezione()
    ' Ridimensiono l'array in base al recordcount,
    ' Pulisco le anagrafiche selezionate dalla griglia
    ' e azzera il massimo num. di selezionati
    Dim iConta As Integer
    With dcRisultato.Recordset
        .MoveLast
        .MoveFirst
        iRecCountRis = .RecordCount
       ReDim sSelezione(iRecCountRis)
       For iConta = 0 To iRecCountRis - 1
            sSelezione(iConta) = 0
        Next iConta
        iMaxSel = 0
    End With
End Sub
Public Function ControllaSelezione(lCodAnag As Long) As Boolean
    Dim i As Integer
    ' Controlla se ogni anagrafica è presente o
    ' meno nell'array sSelezione;se lo è la seleziona,
    ' quindi la mette dell'array sSeleziona
    ' Se ne ho selezionati controllo...
    If iMaxSel > 0 Then
        For i = 0 To iMaxSel
            ' Se ho trovato l'anag esco...
            If sSelezione(i) = lCodAnag Then
                ControllaSelezione = True
                Exit Function
            End If
        Next i
        ' else non trovato...
        ControllaSelezione = False
    End If
End Function
Public Sub InserisciSelezione(lCodCli As Long)
    ' Inserisce il codice anag. selezionato all'ultima
    ' posizione dell'array sSelezione o nella prima
    ' posizione libera
    Dim j As Integer
    For j = 0 To iMaxSel
        If sSelezione(j) = 0 Then
            sSelezione(j) = lCodCli
            ' ... e aggiorno il max. sel.
            If j >= iMaxSel Then
                iMaxSel = iMaxSel + 1
            End If
            Exit Sub
        End If
    Next j
End Sub
Public Sub EliminaSelezione(lCodAnag As Long)
    Dim k As Integer
    ' Controlla se ogni anagrafica è presente o
    ' meno nell'array sSelezione;se lo è la deseleziona,
    ' quindi la elimina dell'array sSeleziona
    ' Se ne ho selezionati controllo...
    If iMaxSel > 0 Then
        For k = 0 To iMaxSel
            ' Se ho trovato l'anag esco...
            If sSelezione(k) = lCodAnag Then
                sSelezione(k) = 0
                Exit Sub
            End If
        Next k
    End If
End Sub
'----------------------------------------------
' Rikiamato al bottone Estrai
Private Sub EstrazioneDati()
    ' Preparo i filtri......
    .
    .
    .
    .
    sSql = sSql ottenuta....
    .
    .
    With dcRisultato
        .CommandType = adCmdText
        .RecordSource = sSql
        .Refresh
        ' se ho estratto qualke cosa è aggiornato,else vuoto
        Set rsClone = .Recordset.Clone(adLockReadOnly)
        AzzeraSelezione
    End With
End Sub
Private Sub dbgRisultati_DblClick()
    Dim iCodSel As Long
    iCodSel = rsClone![CodAnagrafica]
    If ControllaSelezione(iCodSel) = True Then
        ' Se un codice è già presente lo deseleziono
        EliminaSelezione iCodSel
    Else
        ' Se un codice non è già presente lo seleziono
        InserisciSelezione iCodSel
    End If
    dbgRisultati.Refresh
End Sub
Private Sub dbgRisultati_FetchRowStyle(ByVal Split As Integer, Bookmark As
Variant, ByVal RowStyle As TrueOleDBGrid70.StyleDisp)
    Dim iCodSel As Long
    ' Se ho qualke cosa...
    If Not rsClone.EOF And Not rsClone.BOF Then
        rsClone.Bookmark = Bookmark
        iCodSel = rsClone![CodAnagrafica]
        ' Se selezionato Magenta se no nero
        If ControllaSelezione(iCodSel) = True Then
            RowStyle.ForeColor = vbMagenta
        Else
            RowStyle.ForeColor = vbBlack
        End If
    End If
End Sub
Chi mi sa aiutare dirigendomi almeno verso qualche esempio sull'help o in
internet?
Lavoro in vb6 con MSDE.
grazie
Deborah

 ha scritto nel messaggio
news:00%h8.47251$Ns4.1...@news2.tin.it...
