Ir para conteúdo
Fórum Script Brasil
  • 0

Erro no Flex grid - subscript out of range


Julie sistemas

Pergunta

Bom o meu sistema está gerando um erro que não estou conseguindo solucionar. Na hora que dou o click no msflexgrid, ele aparece a seguinte mensagem de erro: subscript out of range (run-time error '381')... quando eu debugo a seta amarela aparece na linha abaixo:

Flexgrid.TextMatrix(0, i) = CabecFlex(i)

Taí o código inteiro da função preencheflexgrid:

Public Function PreencheFlexGrid(rs As Recordset, Flexgrid As MSFlexGrid)

Dim lCol As Long
Dim lrow As Long
Dim lcols As Long
Dim lrows As Long


'On Error GoTo checa

Flexgrid.Clear
rs.Requery

'On Error GoTo ErrorHandler

  'Testa se a variável é FlexGrid
  If Not TypeOf Flexgrid Is MSFlexGrid Then Exit Function
  'Testa se a variável é RecordSet
  If Not TypeOf rs Is ADODB.Recordset Then Exit Function
  'frmflexfunc.Show
  Dim i As Integer
  Dim c As Integer
  
  'MsgBox "cabeçalho", vbOKOnly + vbInformation, "Atenção"
  
  For i = 0 To IIf(UBound(CabecFlex) = 0, 0, UBound(CabecFlex)) - 1
      Flexgrid.TextMatrix(0, i) = CabecFlex(i)
      Flexgrid.ColWidth(i) = ColWidthFlex(i)
  Next

  Flexgrid.FixedRows = 1
  'Flexgrid.FixedCols = 0

  If Not rs.EOF Then
     Flexgrid.Rows = rs.RecordCount + 1
     Flexgrid.Cols = rs.Fields.Count
     i = 1
     
     'MsgBox "preenchendo o grid", vbOKOnly + vbInformation, "Atenção"
     
     c = 0
     'MsgBox "Campo - " & rs.Fields(c).UnderlyingValue, vbInformation, "Atenção"
     
     Do While Not rs.EOF
        For c = 0 To rs.Fields.Count - 1
            'MsgBox "Campo - " & rs.Fields(c).Value, vbInformation, "Atenção"
            If Not IsNull(rs.Fields(c).Value) Then
               Flexgrid.TextMatrix(i, c) = rs.Fields(c).Value
            End If
        Next
        i = i + 1
        rs.MoveNext
     Loop
  End If

  If coN = 1 Then
     Dim posicao As String
     Dim titulo As String
     With Flexgrid
          .Cols = .Cols + 1
          posicao = Flexgrid.Cols - 1
          titulo = "Nota"
          .ColPosition(.Cols - 1) = posicao
          .Row = 0
          .COL = posicao
          .Text = titulo
     End With
  End If

  PreencheFlexGrid = True
  Exit Function

'checa:
  
  'If Err.Number <> 0 Then
  '   MsgBox "Erro " & rs.Fields("re") & " - " & rs.Fields(c).Value & Err.Description, vbCritical, "SGSI"
  'End If
  

End Function

Link para o comentário
Compartilhar em outros sites

2 respostass a esta questão

Posts Recomendados

  • 0

então julie, essa mensagem significa q você esta tentando acessar um indice q não existe. exemplo, o grid tem 3 colunas e você esta tentando acessar a coluna 4, q não existe.

o q é CabecFlex?? é um array?? se for, pode ser q você esteja tentando acessar um indice do array q não existe.

nesse caso, cheque o i. de onde ele vem?? você tem certeza q ele esta preenchido com uma coluna q existe mesmo e com um indice q existem mesmo no CabecFlex??

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,2k
    • Posts
      652k
×
×
  • Criar Novo...