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

[RESOLVIDO] [VB.NET] Carregar DataGridView como dados de um arquivo XM


hencker

Pergunta

Bom dia pessoal,

Tenho o seguinte código em um programa que eu fiz (segue abaixo):

Basicamente, o que ele faz é criar dois arquivos XML. No final do código preciso que seja carregado em um DataGridView os dados gerados dentro do segundo arquivo XML.

Ele até carrega as colunas bonitinho, mas não carrega os dados do meu arquivo XML. Não sei se estou gerando o arquivo XML errado ou algo assim. O arquivo XML gerado abre pelo XMLNotePad, o que significa que ele é um arquivo XML valido.

Alguém poderia me dar uma luz?

Private Sub btnCria_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnCria.Click
       'btnGrava.Enabled = True
       Try
           'Cria o arquivo XML contendo os dados da estrutura
           Dim writer As New XmlTextWriter(lblCaminhoProjeto.Text, Nothing)
           'Cria a inicialização do arquivo XML
           writer.WriteStartDocument()
           'Seta os comentários das linhas iniciais
           writer.WriteComment("Arquivo contendo dados gerais do projeto de fundações")
           writer.WriteComment("Arquivo gerado pelo programa SCE-BARONI.")
           'Cria o elemento raiz
           writer.WriteStartElement("GeneralidadesEstaqueamento")
           'Cria o elemento com os dados gerais da estrutura
           writer.WriteStartElement("DadosGerais")
           'Preenche com os dados gerais informados
           writer.WriteElementString("NomeObra", txtNomeObra.Text)
           writer.WriteElementString("Observacoes", rtbObservacoes.Text)
           writer.WriteElementString("Data", dtpData.Text)
           'Encerra o elemento DadosGerais
           writer.WriteEndElement()
           'Cria o elemento com os dados dos arquivos
           writer.WriteStartElement("Arquivos")
           'Cria vinculo com o arquivo de projeto
           writer.WriteElementString("Projeto", lblCaminhoProjeto.Text)
           'Cria, caso selecionado pelo usuário, o vínculo com o memorial de cálculos
           If (lblLSimNao.Text = "Sim") Then
               writer.WriteElementString("Calculo", lblCaminhoFolhaCalculo.Text)
           Else
               writer.WriteElementString("Calculo", "NS")
           End If
           'Cria elemento contendo o caminho dos dados geométricos da estrutura
           writer.WriteElementString("Geometria", "C:\Arquivos de programas\SCE-BARONI\Estruturas\est" + frmNovo.txtNomeProjeto.Text + ".xml")
           'Encerra elemento Arquivos
           writer.WriteEndElement()
           'Encerra o elemento raiz
           writer.WriteEndElement()
           'Escreve o XML para o arquivo e fecha o objeto escritor
           writer.Close()

           'Cria XML com os dados geométricos do estaqueamento
           Dim writerEstaq As New XmlTextWriter("C:\Arquivos de programas\SCE-BARONI\Estruturas\est" + frmNovo.txtNomeProjeto.Text + ".xml", Nothing)
           'Cria inicialização do arquivo XML
           writerEstaq.WriteStartDocument()
           'Seta os comentários das linhas iniciais
           writerEstaq.WriteComment("Arquivo contendo dados geométricos do projeto de fundações")
           writerEstaq.WriteComment("Arquivo gerado pelo programa SCE-BARONI.")
           'Cria elemento geral dos estaqueamentos
           writerEstaq.WriteStartElement("Estacas")
           'Cria atributo com o tipo de cálculo selecionado para a fundação
           'writerEstaq.WriteAttributeString("MetodoCalculo", "Schiel")
           'Cria tantos elementos de estacas quanto informado pelo usuário

           'Declara a variável do contador
           Dim x, y As Integer
           x = Convert.ToInt64(txtQtdEstacas.Text)
           y = 0
           'Cria os elementos
           While y < x
               Dim Ident As Integer
               Ident = y + 1
               'Cria elemento com o nome da estaca em questão
               writerEstaq.WriteStartElement("E" + Ident.ToString())
               'Seta atributos da estaca em questão
               writerEstaq.WriteElementString("ID", "E" + Ident.ToString())
               writerEstaq.WriteElementString("X", txtAlturaCoroamento.Text)
               writerEstaq.WriteElementString("Y", "0")
               writerEstaq.WriteElementString("Z", "0")
               writerEstaq.WriteElementString("A", "0")
               writerEstaq.WriteElementString("W", "0")
               writerEstaq.WriteElementString("S", "1")
               'Encerra elemento da estaca em questão
               writerEstaq.WriteEndElement()
               'Incrementa contador
               y += 1
           End While

           'Encerra elemento Estacas
           writerEstaq.WriteEndElement()
           'Escreve o XML para o arquivo e fecha o objeto escritor
           writerEstaq.Close()

           MsgBox("Arquivos gerados com sucesso.")
       Catch ex As Exception
           MsgBox(ex.Message, MsgBoxStyle.Information, "Erro!")
       End Try

       'Adiciona para o dgvEstacas os dados da estrutura criada

       dtGeometria = New DataTable("Estacas")
       dtGeometria.Columns.Add("ID")
       dtGeometria.Columns.Add("X")
       dtGeometria.Columns.Add("Y")
       dtGeometria.Columns.Add("Z")
       dtGeometria.Columns.Add("A")
       dtGeometria.Columns.Add("W")
       dtGeometria.Columns.Add("S")

       dtGeometria.ReadXml("C:\Arquivos de programas\SCE-BARONI\Estruturas\est" + frmNovo.txtNomeProjeto.Text + ".xml")

       dgvEstacas.DataSource = dtGeometria
       dgvEstacas.Refresh()

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

1 resposta a esta questão

Posts Recomendados

  • 0

Fazendo um FeedBack, consegui da seguinte forma:

Onde dizia:

'Adiciona para o dgvEstacas os dados da estrutura criada
       dtGeometria = New DataTable("Estacas")
       dtGeometria.Columns.Add("ID")
       dtGeometria.Columns.Add("X")
       dtGeometria.Columns.Add("Y")
       dtGeometria.Columns.Add("Z")
       dtGeometria.Columns.Add("A")
       dtGeometria.Columns.Add("W")
       dtGeometria.Columns.Add("S")

       dtGeometria.ReadXml("C:\Arquivos de programas\SCE-BARONI\Estruturas\est" + frmNovo.txtNomeProjeto.Text + ".xml")

       dgvEstacas.DataSource = dtGeometria
       dgvEstacas.Refresh()
Eu alterei para:
'Inicia a leitura do arquivo XML contendo os dados das estacas
        Dim xmlDatadoc = New XmlDataDocument()
        xmlDatadoc.DataSet.ReadXml("C:\Arquivos de programas\SCE-BARONI\Estruturas\est" + frmNovo.txtNomeProjeto.Text + ".xml")

        'Carrega para o DataGridView os dados das estacas da estrutura
        Dim dsGeometria = New DataSet("Geometria DataSet")
        dsGeometria = xmlDatadoc.DataSet
        dgvEstacas.DataSource = dsGeometria.DefaultViewManager
        dgvEstacas.DataMember = "ESTACA"
Mudei ainda a parte que gerava meu segundo arquivo XML para:
While y < x
                Dim Ident As Integer
                Ident = y + 1
                'Cria elemento com o nome da estaca em questão
                writerEstaq.WriteStartElement("ESTACA")
                'Seta atributos da estaca em questão
                writerEstaq.WriteElementString("ID", "E" + Ident.ToString())
                writerEstaq.WriteElementString("X", txtAlturaCoroamento.Text)
                writerEstaq.WriteElementString("Y", "0")
                writerEstaq.WriteElementString("Z", "0")
                writerEstaq.WriteElementString("A", "0")
                writerEstaq.WriteElementString("W", "0")
                writerEstaq.WriteElementString("S", "1")
                'Encerra elemento da estaca em questão
                writerEstaq.WriteEndElement()
                'Incrementa contador
                y += 1
            End While

Isso funcionou! :D :D :D

Editado por hencker
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,4k
×
×
  • Criar Novo...