none
Alterar tipos de dados de um DataTable RRS feed

  • Pergunta

  •  

    Senhoras e senhores, boa tarde!

     

    Estou com um problema ao importar os meus dados de txt para access (futuramente, pretendo colocar em SQL server)...

    Ocorre o seguinte: tenho campos com números que deveriam ficar em String ao invés de ficar em Integer... Por exemplo

     

    CLIENTE;COD_OCORR_SIST;CONTRATO;CPF_CNPJ_DEVEDOR;

    0000000257;000049;0011021581597000297;01686764863;

     

    Quando eu preencho o meu DataTable usando o DataAdapter, os meus números a esquerda dos meus campos somem... e ficam assim:

     

    CLIENTE     COD_OCORR_SIST         CONTRATO                 CPF_CNPJ_DEVEDOR

    257             49                                   11021581597000297    1686764863

     

    Como que eu faço para manter a integridade de meus dados, deixando os meus zeros a esquerda?

     

     

    Fico no aguardo

     

    Grato

     

    Jeff Lee

    sexta-feira, 7 de março de 2008 16:52

Respostas

  • No momento em que vc cria o datatable vc define o tipo das colunas.

     

    Obs. Porque não usar Sql agora, use o Sql Express é gratuito.

     

    sexta-feira, 7 de março de 2008 17:52
    Moderador
  • Pra quem um dia tiver dificuldades como eu tive:

     

    'Cria um datatable vazio

    Dim dt As New DataTable

    'Cria as colunas usando o m‚todo abaixo e atribui ao meu dt

    dt = CriaDataTable(dt)

    'Lendo um arquivo txt no diret¢rio

    Dim arquivoOpen As New StreamReader("C:\\hist77.txt")

    'Enquanto nÆo chega na £ltima linha de meu arquivo txt, leia

    While Not arquivoOpen.EndOfStream

    'Divida as colunas atrav‚s do pipeline e adicione linhas no meu DataTable

    dt.Rows.Add(arquivoOpen.ReadLine.Split(Convert.ToChar("|")))

    End While

    dgvTexto.DataSource = dt

     

    ''' <summary>

    ''' Cria as colunas do DataTable com seus respectivos tipos

    ''' </summary>

    ''' <param name="dt">dt As DataTable</param>

    ''' <returns>DataTable</returns>

    ''' <remarks></remarks>

    Private Shared Function CriaDataTable(ByVal dt As DataTable) As DataTable

    dt.Columns.Add("CLIENTE", GetType(String)).ToString()

    dt.Columns.Add("COD_OCORR_SIST", GetType(String)).ToString()

    dt.Columns.Add("CONTRATO", GetType(String)).ToString()

    dt.Columns.Add("CPF_CNPJ_DEVEDOR", GetType(String)).ToString()

    dt.Columns.Add("DEVEDOR", GetType(String)).ToString()

    dt.Columns.Add("HISTORICO", GetType(String)).ToString()

    dt.Columns.Add("VL_SALDO_PARCELA", GetType(Double)).ToString()

    dt.Columns.Add("VL_SALDO_PARC_TOTAL", GetType(Double)).ToString()

    dt.Columns.Add("COLUNA_SEM_DEFINICAO", GetType(String)).ToString() 'Tem pipeline mesmo após a última coluna, portanto é uma coluna necessária, mesmo sem utilização da mesma

    Return dt

    End Function

     

    Simples assim, sem usar um dataadapter com o método Fill...

     

    Espero que possa ser útil a alguém...

     

    Obrigado ViewState pela atenção!!!!!!

     

    Abraços a todos!!!!

     

    segunda-feira, 10 de março de 2008 17:46

Todas as Respostas

  • No momento em que vc cria o datatable vc define o tipo das colunas.

     

    Obs. Porque não usar Sql agora, use o Sql Express é gratuito.

     

    sexta-feira, 7 de março de 2008 17:52
    Moderador
  •  

    Oi...

     

    ViewState

    como que eu codificaria isso então? vc teria algum exemplo? pois eu simplesmente declaro o DataTable e uso o método Fill...

    Eu vi muitas matérias, construindo um DataTable na unha, mas todas elas, atribuem valores em constantes, e nenhuma com ResultSet do meu SELECT...

     

     

    Obrigado pela atenção...

    sexta-feira, 7 de março de 2008 19:17
  • Pra quem um dia tiver dificuldades como eu tive:

     

    'Cria um datatable vazio

    Dim dt As New DataTable

    'Cria as colunas usando o m‚todo abaixo e atribui ao meu dt

    dt = CriaDataTable(dt)

    'Lendo um arquivo txt no diret¢rio

    Dim arquivoOpen As New StreamReader("C:\\hist77.txt")

    'Enquanto nÆo chega na £ltima linha de meu arquivo txt, leia

    While Not arquivoOpen.EndOfStream

    'Divida as colunas atrav‚s do pipeline e adicione linhas no meu DataTable

    dt.Rows.Add(arquivoOpen.ReadLine.Split(Convert.ToChar("|")))

    End While

    dgvTexto.DataSource = dt

     

    ''' <summary>

    ''' Cria as colunas do DataTable com seus respectivos tipos

    ''' </summary>

    ''' <param name="dt">dt As DataTable</param>

    ''' <returns>DataTable</returns>

    ''' <remarks></remarks>

    Private Shared Function CriaDataTable(ByVal dt As DataTable) As DataTable

    dt.Columns.Add("CLIENTE", GetType(String)).ToString()

    dt.Columns.Add("COD_OCORR_SIST", GetType(String)).ToString()

    dt.Columns.Add("CONTRATO", GetType(String)).ToString()

    dt.Columns.Add("CPF_CNPJ_DEVEDOR", GetType(String)).ToString()

    dt.Columns.Add("DEVEDOR", GetType(String)).ToString()

    dt.Columns.Add("HISTORICO", GetType(String)).ToString()

    dt.Columns.Add("VL_SALDO_PARCELA", GetType(Double)).ToString()

    dt.Columns.Add("VL_SALDO_PARC_TOTAL", GetType(Double)).ToString()

    dt.Columns.Add("COLUNA_SEM_DEFINICAO", GetType(String)).ToString() 'Tem pipeline mesmo após a última coluna, portanto é uma coluna necessária, mesmo sem utilização da mesma

    Return dt

    End Function

     

    Simples assim, sem usar um dataadapter com o método Fill...

     

    Espero que possa ser útil a alguém...

     

    Obrigado ViewState pela atenção!!!!!!

     

    Abraços a todos!!!!

     

    segunda-feira, 10 de março de 2008 17:46