Caros,
Estou utilizando um código semelhante ao abaixo, mas substituindo a parte da variável pelo acesso a um banco de dados via DAO, mas acontece que em casos de apenas um registro, são exibidos duas vezes os dados. Acima disso, os dados são exibidos normalmente. O que acham que pode estar acontecendo?
Private Sub DBGrid1_UnboundReadData(ByVal RowBuf As MSDBGrid.RowBuffer, PosicaoInicial As Variant, ByVal LeLinha As Boolean)
Dim dr As Integer
Dim linha_num As Integer
Dim r As Integer
Dim linhas_retornadas As Integer
' verifica qual a direção da leitura
If LeLinha Then
dr = -1
Else
dr = 1
End If
' verifica se a PosicaoInicial é nulo
If IsNull(PosicaoInicial) Then
' Le do fim ou do inicio dos dados
If LeLinha Then
' le de a partir do final
linha_num = RowBuf.RowCount - 1
Else
' le a partir do inicio
linha_num = 0
End If
Else
' verifica onde comecamos a leitura
linha_num = CLng(PosicaoInicial) + dr
End If
' copia os dados do vetor para dentro do buffer = RowBuf.
linhas_retornadas = 0
For r = 0 To RowBuf.RowCount - 1
' nao le além do final dos dados
If linha_num < 0 Or linha_num > TotalLivros Then Exit For
' copia os dados para o buffer da linha
With LivrosInfo(linha_num) 'Nesta parte eu coloco um loop para consulta dos dados Do While .eof = false
RowBuf.Value(r, 0) = .Titulo
RowBuf.Value(r, 1) = .ISBN
RowBuf.Value(r, 2) = .URL
End With
' usa linha_num como um bookmark.
RowBuf.Bookmark(r) = linha_num
linha_num = linha_num + dr
linhas_retornadas = linhas_retornadas + 1
Next r
' define o numero de linhas retornardo
RowBuf.RowCount = linhas_retornadas
End Sub