none
Aplicação para jogar dados de uma tabela temporária pra uma tabela ativa. RRS feed

  • Pergunta

  • Bom dia à todos.

    Preciso desenvolver um form(operados por usuários) onde o mesmo exportará 4 arquivos texto para 4 tabelas temporárias. Depois outra função, onde pego alguns dados(colunas especificas) de cada tabela temporária, enviando para uma tabela ativa especifica. Isso em um banco SQL server 2008.

    Se possível, gostaria de um código exemplo pra ajudar no caminho.

    Resumo:

    1° - A aplicação busca em determinado caminho os arquivos textos e joga os dados separados por ";" para as colunas das tabelas temporárias indicadas.

    2° - Das tabelas temporárias jogar os dados de algumas colunas para as tabelas principais indicadas.

    Grato!

    quinta-feira, 24 de outubro de 2013 13:21

Respostas

  • Boa tarde e obrigado pela ajuda.

    Mas preciso por gentileza, de um exemplo em vb.net. Pra ajudar. E outra dúvida, com os dados nas tabelas temporarias, como jogar algumas colunas especificas para algumas tabelas principais?

    Grato!

    Imports System.IO
    Public Class Form1
        Dim TmpTable As New DataTable("TmpTable")
        Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
            Call LayoutTmpTable()
            Call LerTxt()
            Call LerTmpTableDirectSql()
        End Sub
    
        Private Sub LayoutTmpTable()
            TmpTable.Columns.Add("Codigo")
            TmpTable.Columns.Add("Nome")
            TmpTable.Columns.Add("Valor")
    
            TmpTable.Columns(0).AllowDBNull = False
            TmpTable.Columns(0).DataType = GetType(Integer)
    
            TmpTable.Columns(1).AllowDBNull = False
            TmpTable.Columns(1).DataType = GetType(String)
    
            TmpTable.Columns(2).AllowDBNull = False
            TmpTable.Columns(2).DataType = GetType(Decimal)
    
        End Sub
        Private Sub GravarTmpTable(Value As String)
            Dim Values() As String = Value.Split(";")
    
            Dim Row As DataRow = TmpTable.NewRow
    
            Row("Codigo") = Integer.Parse(Values(0))
            Row("Nome") = Values(1)
            Row("Valor") = Decimal.Parse(Values(2))
    
            TmpTable.Rows.Add(Row)
    
        End Sub
        Private Sub LerTxt()
            Dim Linha As String
            Dim str As New StreamReader(".\Base.txt")
            Dim i As Integer = str.Peek()
            While (str.Peek() > -1)
                Linha = str.ReadLine()
                GravarTmpTable(Linha)
            End While
        End Sub
        Private Sub LerTmpTableDirectSql()
            ' vou ler somente código e valor mas, se pode ler todos ...
            If (TmpTable.Rows.Count > 0) Then
                For Each Row As DataRow In TmpTable.Rows
                    Dim Codigo As Integer = Row("Codigo")
                    'Row("Nome")
                    Dim Valor As Decimal = Row("Valor")
    
                    ' aqui se faz a rotina para gravar no banco SQL Server
                Next
            End If
        End Sub
    End Class
    Todo código só falta do banco que acredita saber fazer!


    Fúlvio Cezar Canducci Dias

    • Marcado como Resposta Giovani Cr sexta-feira, 1 de novembro de 2013 12:55
    quinta-feira, 24 de outubro de 2013 19:15
  • Eu já fiz todo o código para você!

    olha só :

     If (TmpTable.Rows.Count > 0) Then
                For Each Row As DataRow In TmpTable.Rows
                    Dim Codigo As Integer = Row("Codigo")
                    Dim Nome as String = Row("Nome")
                    Dim Valor As Decimal = Row("Valor")
    
                    ' aqui se faz a rotina para gravar no banco SQL Server
                Next
            End If

    Nesse for each se pega o nome e joga na tabela que você disse e o valor na tabela que você disse!

    ele vai ler linha a linha isso!!! OK!

    Estude o código porque ta tudo nele!


    Fúlvio Cezar Canducci Dias

    quarta-feira, 30 de outubro de 2013 13:41

Todas as Respostas

  • Se pode Ler o Arquivos com StreamReader Linha a Linha (Busca por StreamReader ler arquivo Texto)

    e você pode jogar a um DataTable criando suas colunas e linhas (Busca por DataTable)

    Fazendo isso seu dado por ser jogado a um tabela no SQL Server!!!


    Fúlvio Cezar Canducci Dias

    quinta-feira, 24 de outubro de 2013 14:34
  • Boa tarde e obrigado pela ajuda.

    Mas preciso por gentileza, de um exemplo em vb.net. Pra ajudar. E outra dúvida, com os dados nas tabelas temporarias, como jogar algumas colunas especificas para algumas tabelas principais?

    Grato!

    quinta-feira, 24 de outubro de 2013 15:28
  • Boa tarde e obrigado pela ajuda.

    Mas preciso por gentileza, de um exemplo em vb.net. Pra ajudar. E outra dúvida, com os dados nas tabelas temporarias, como jogar algumas colunas especificas para algumas tabelas principais?

    Grato!

    Imports System.IO
    Public Class Form1
        Dim TmpTable As New DataTable("TmpTable")
        Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
            Call LayoutTmpTable()
            Call LerTxt()
            Call LerTmpTableDirectSql()
        End Sub
    
        Private Sub LayoutTmpTable()
            TmpTable.Columns.Add("Codigo")
            TmpTable.Columns.Add("Nome")
            TmpTable.Columns.Add("Valor")
    
            TmpTable.Columns(0).AllowDBNull = False
            TmpTable.Columns(0).DataType = GetType(Integer)
    
            TmpTable.Columns(1).AllowDBNull = False
            TmpTable.Columns(1).DataType = GetType(String)
    
            TmpTable.Columns(2).AllowDBNull = False
            TmpTable.Columns(2).DataType = GetType(Decimal)
    
        End Sub
        Private Sub GravarTmpTable(Value As String)
            Dim Values() As String = Value.Split(";")
    
            Dim Row As DataRow = TmpTable.NewRow
    
            Row("Codigo") = Integer.Parse(Values(0))
            Row("Nome") = Values(1)
            Row("Valor") = Decimal.Parse(Values(2))
    
            TmpTable.Rows.Add(Row)
    
        End Sub
        Private Sub LerTxt()
            Dim Linha As String
            Dim str As New StreamReader(".\Base.txt")
            Dim i As Integer = str.Peek()
            While (str.Peek() > -1)
                Linha = str.ReadLine()
                GravarTmpTable(Linha)
            End While
        End Sub
        Private Sub LerTmpTableDirectSql()
            ' vou ler somente código e valor mas, se pode ler todos ...
            If (TmpTable.Rows.Count > 0) Then
                For Each Row As DataRow In TmpTable.Rows
                    Dim Codigo As Integer = Row("Codigo")
                    'Row("Nome")
                    Dim Valor As Decimal = Row("Valor")
    
                    ' aqui se faz a rotina para gravar no banco SQL Server
                Next
            End If
        End Sub
    End Class
    Todo código só falta do banco que acredita saber fazer!


    Fúlvio Cezar Canducci Dias

    • Marcado como Resposta Giovani Cr sexta-feira, 1 de novembro de 2013 12:55
    quinta-feira, 24 de outubro de 2013 19:15
  • Bom dia Fúlvio!

    Muito obrigado mesmo!

    Porém queria ter uma ideia de código onde os dados ja inseridos na "TmpTable", eu possa buscar dados de alguma coluna. Ex:"valor"

    O usuario que por exemplo através de um "form" ativou a função de pegar os dados de um txt e jogou pra um TmpTable ok! (Entendi seu método demonstrado.)

    O usuário agora através de um outro recurso e ativa um método onde os dados da coluna "valor" na tabela TmpTable, vão para a coluna "XX" da Table1. 

    Entendeu?

    Sei que é pedir demais, mas se alguém puder ajudar muito agradeço!

    Grato!

    sexta-feira, 25 de outubro de 2013 12:42
  • Bom dia Fúlvio!

    Muito obrigado mesmo!

    Porém queria ter uma ideia de código onde os dados ja inseridos na "TmpTable", eu possa buscar dados de alguma coluna. Ex:"valor"

    O usuario que por exemplo através de um "form" ativou a função de pegar os dados de um txt e jogou pra um TmpTable ok! (Entendi seu método demonstrado.)

    O usuário agora através de um outro recurso e ativa um método onde os dados da coluna "valor" na tabela TmpTable, vão para a coluna "XX" da Table1. 

    Entendeu?

    Sei que é pedir demais, mas se alguém puder ajudar muito agradeço!

    Grato!

    Então se pode pegar o TmpTable jogar as informações em um DataGridView e clicando na coluna mandar os dados para uma determinada tabela! é dificil saber o que você realmente precisa então também dificil ficar codificando algo sem ter o conhecimento prévio!!!


    Fúlvio Cezar Canducci Dias

    • Sugerido como Resposta Giovani Cr segunda-feira, 28 de outubro de 2013 17:13
    sexta-feira, 25 de outubro de 2013 15:30
  • Olá Fulvio!

    Foi se mais claro e objetivo ok?

    Bem, após exportar os dados do txt para a tabela temporária "TMPTABLE",  vou copiar os dados da coluna "Nome" para a tabela "TABLE_1" coluna "Name". 

    Depois copiar os dados da tabela TMPTABLE, especificamente da coluna "valor" para a TABLE_2 coluna "value".

    Deu pra ficar mais claro?

    Você teria um exemplo de código pra essa situação meu caro?

    Grato mais uma vez pela atenção!

    quarta-feira, 30 de outubro de 2013 12:52
  • Eu já fiz todo o código para você!

    olha só :

     If (TmpTable.Rows.Count > 0) Then
                For Each Row As DataRow In TmpTable.Rows
                    Dim Codigo As Integer = Row("Codigo")
                    Dim Nome as String = Row("Nome")
                    Dim Valor As Decimal = Row("Valor")
    
                    ' aqui se faz a rotina para gravar no banco SQL Server
                Next
            End If

    Nesse for each se pega o nome e joga na tabela que você disse e o valor na tabela que você disse!

    ele vai ler linha a linha isso!!! OK!

    Estude o código porque ta tudo nele!


    Fúlvio Cezar Canducci Dias

    quarta-feira, 30 de outubro de 2013 13:41
  • Fulvio mais um vez, muito obrigado!

    Vou colocar a mão na massa e qualquer dúvida volto a te importunar ok?

    Abração e valeu!

    quarta-feira, 30 de outubro de 2013 13:56