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

(Resolvido) Como Exibir um Arquivo .dat num Msflexgrid do VB6


LAMPIAOVALENTE2

Pergunta

Como exibir um arquivo dat conforme mostrado abaixo (delimitado por vírgula, em torno de 8000 linhas dessa forma), pondo cada elemento em uma celula específica conforme mostrado no arquivo, num Msflexgrid do Visual Basic 6?

Como são vários arquivos dessa extensão .dat e vários nomes diferentes, gostaria de abrir o arquivo usando Commondialog, facilitaria muito e tornaria a aplicação de uso geral, ou seja, abriria qualquer arquivo .dat e exibiria no msflexgrid.

E feito isso, como realizar operações matemética numa determinada coluna ou em determinadas células?

Resumindo: preciso Abrir e Ler os arquivos .dat (são vários), exibi-los num Grid (um de cada vez) e em manipular os valores exibidos no Grid, como por exemplo, realizar operações matemáticas em uma determinada coluna, ou em trechos da coluna.

Infelizmente, ainda não consegui importar o arquivo .dat todo para o grid (não sou muito bom em vb6), só consegui trazer trechos do arquivo, e linha por linha, o que pra mim não funciona, pois preciso de cada elemento separado por vírgula, em uma determinada célula para realizar operações matemáticas.

Arquivo extensão .dat se apresenta assim (são próximo a 8000 linhas)

0000000001,0000000000,00000000,-00059328,00086600,00000000,-00086601,00026001

0000000002,0000001000,00022116,-00067234,00061663,00036476,-00098141,00018514

0000000003,0000002000,00041004,-00065912,00028584,00067626,-00096212,00008582

0000000004,0000003000,00054220,-00055579,-00008293,00089422,-00081129,-00002490

0000000005,0000004000,00060039,-00037585,-00044158,00099019,-00054862,-00013258

0000000006,0000005000,00057665,-00014243,-00074313,00095103,-00020791,-00022313

0000000007,0000006000,00046370,00011300,-00092973,00076475,00016496,-00027915

0000000008,0000007000,00028878,00035053,-00098796,00047626,00051168,-00029663

0000000009,0000008000,00007494,00053932,-00091086,00012359,00078725,-00027349

0000000010,0000009000,-00014989,00065472,-00070850,-00024721,00095570,-00021273

0000000011,0000010000,-00035640,00068130,-00040673,-00058778,00099450,-00012212

0000000012,0000011000,-00050776,00060248,-00004204,-00083741,00087944,-00001262

0000000013,0000012000,-00058853,00044246,00032473,-00097062,00064587,00009749

0000000014,0000013000,-00058853,00022246,00064587,-00097062,00032473,00019391

0000000015,0000014000,-00050776,-00002880,00087944,-00083741,-00004204,00026405

0000000016,0000015000,-00035640,-00027864,00099450,-00058778,-00040673,00029859

0000000017,0000016000,-00014989,-00048537,00095570,-00024721,-00070850,00028694

0000000018,0000016999,00007494,-00062401,00078725,00012359,-00091086,00023636

Editado por LAMPIAOVALENTE2
Link para o comentário
Compartilhar em outros sites

4 respostass a esta questão

Posts Recomendados

  • 0

Option Explicit

Private Sub Command1_Click()
    On Error GoTo TrataErro:
    
    Dim fso As New FileSystemObject
    Dim f As TextStream
    Dim l As String
    Dim v() As String
    Dim i As Currency
    Dim s As Currency
    
    CommonDialog1.ShowOpen

    Set f = fso.OpenTextFile(CommonDialog1.FileName, ForReading, False)
    
    MSHFlexGrid1.Clear
    
    l = f.ReadLine
    v = Split(l, ",")
    
    MSHFlexGrid1.Cols = UBound(v) + 1
    
    For i = 0 To UBound(v) - 1
        MSHFlexGrid1.TextMatrix(1, i) = IIf(IsNumeric(v(i)), Val(v(i)), v(i))
        s = s + IIf(IsNumeric(v(i)), Val(v(i)), 0)
        MSHFlexGrid1.TextMatrix(1, MSHFlexGrid1.Cols - 1) = s
    Next

    Do While Not f.AtEndOfStream
        l = f.ReadLine
        
        v = Split(l, ",")
        
        MSHFlexGrid1.Rows = MSHFlexGrid1.Rows + 1
        
        For i = 0 To UBound(v) - 1
            MSHFlexGrid1.TextMatrix(MSHFlexGrid1.Rows - 1, i) = IIf(IsNumeric(v(i)), Val(v(i)), v(i))
            s = s + IIf(IsNumeric(v(i)), Val(v(i)), 0)
            MSHFlexGrid1.TextMatrix(MSHFlexGrid1.Rows - 1, MSHFlexGrid1.Cols - 1) = s
        Next
    Loop
    
    Exit Sub
TrataErro:
    'Erro que ocorre quando cancela um commondialog
    If Err.Number <> 32755 Then
        MsgBox Err.Number & " - " & Err.Description
    End If
End Sub

ta ai cara se tiver duvida no script me fala que eu comento o codigo, é que eu fiz meio q as pressas aqui, mas ta funcionando.

A ultima linha do MSHFlexGrid1 esta com a soma dos valores da linha é só seguir essa logica

agora eu vou durmi q bateu um sono e amanha é dia de branco rs

falou t+

Link para o comentário
Compartilhar em outros sites

  • 0

Cara, muito obrigado pela atenção e ter escrito esse programa para mim. Ele é exatamente do jeito que eu queria realizar.

Agora como eu tinha dito, não conheço muito bem de VB6 e não consegui melhorar o mesmo, pois quando leio o arquivo .dat não está mostrando o último elemento de cada linha, está realizando a soma conforme você mesmo disse (no lugar do último elemento). Como eu preciso do último elemento para manipulá-lo também, gostaria de melhorar esse programa. As operações matemáticas que necessito imagino realizar e jogar em um outro mshflexgrid por exemplo, em outro form do programa.

Desde já, grato pela atenção.

Option Explicit

Private Sub Command1_Click()
    On Error GoTo TrataErro:
    
    Dim fso As New FileSystemObject
    Dim f As TextStream
    Dim l As String
    Dim v() As String
    Dim i As Currency
    Dim s As Currency
    
    CommonDialog1.ShowOpen

    Set f = fso.OpenTextFile(CommonDialog1.FileName, ForReading, False)
    
    MSHFlexGrid1.Clear
    
    l = f.ReadLine
    v = Split(l, ",")
    
    MSHFlexGrid1.Cols = UBound(v) + 1
    
    For i = 0 To UBound(v) - 1
        MSHFlexGrid1.TextMatrix(1, i) = IIf(IsNumeric(v(i)), Val(v(i)), v(i))
        s = s + IIf(IsNumeric(v(i)), Val(v(i)), 0)
        MSHFlexGrid1.TextMatrix(1, MSHFlexGrid1.Cols - 1) = s
    Next

    Do While Not f.AtEndOfStream
        l = f.ReadLine
        
        v = Split(l, ",")
        
        MSHFlexGrid1.Rows = MSHFlexGrid1.Rows + 1
        
        For i = 0 To UBound(v) - 1
            MSHFlexGrid1.TextMatrix(MSHFlexGrid1.Rows - 1, i) = IIf(IsNumeric(v(i)), Val(v(i)), v(i))
            s = s + IIf(IsNumeric(v(i)), Val(v(i)), 0)
            MSHFlexGrid1.TextMatrix(MSHFlexGrid1.Rows - 1, MSHFlexGrid1.Cols - 1) = s
        Next
    Loop
    
    Exit Sub
TrataErro:
    'Erro que ocorre quando cancela um commondialog
    If Err.Number <> 32755 Then
        MsgBox Err.Number & " - " & Err.Description
    End If
End Sub

ta ai cara se tiver duvida no script me fala que eu comento o codigo, é que eu fiz meio q as pressas aqui, mas ta funcionando.

A ultima linha do MSHFlexGrid1 esta com a soma dos valores da linha é só seguir essa logica

agora eu vou durmi q bateu um sono e amanha é dia de branco rs

falou t+

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,3k
    • Posts
      652,3k
×
×
  • Criar Novo...