none
VB.NET - Importar TXT para banco de Dados DBF RRS feed

  • Pergunta

  • Olá a todos
    Trabalho com um programinha de automação comercial que utiliza base de dados em DBF. Tenho um arquivo em TXT (delimitado com ";") com o cadastro dos funcionarios. Muitos funcionarios. Estou precisando criar um programinha que leia esse arquivo TXT e insira os dados no arquivo clientes.dbf
    Sou novato em programação e estou com algumas dúvidas. Desde já agradeço.

    Seguinte, fazendo alguns testes, consigo acessar o arquivo clientes.dbf sem problema, através do código abaixo

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        Dim oConn As New OdbcConnection()
        oConn.ConnectionString = "Driver={Microsoft dBase Driver (*.dbf)};SourceType=DBF;SourceDB=c:\SuperDB\;Exclusive=No; Collate=Machine;NULL=NO;DELETED=NO;BACKGROUNDFETCH=NO;"
        oConn.Open()
        Dim oCmd As OdbcCommand = oConn.CreateCommand()
        oCmd.CommandText = "SELECT * FROM c:\SuperDB\clientes.dbf"
        Dim dt As New DataTable()
        dt.Load(oCmd.ExecuteReader())
        oConn.Close()
    
        DataGridView1.DataSource = dt
      End Sub
    

    Com isso o DatagridView mostra todos os dados do clientes.dbf

    O arquivo txt esta da seguinte forma:

    CRACHA;NOME;SEXO;RG;CPF;MUNICIPIO
    10103949;AGUINALDO ;M;111111111;11111111199;SAO PAULO
    10104745;FELIPE ;M;111111111;11111111199;SÃO BERNARDO DO CAMPO
    10104893;THIAGO ;M;111111111;11111111199;MAUA
    10104999;CAMILA ;F;111111111;11111111199;SÃO BERNARDO DO CAMPO
    10104973;CARINA ;F;111111111;11111111199;SÃO BERNARDO DO CAMPO

    Em um outro teste fiz o seguinte:

    Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click
        'define um DataTable e um DataRow
        Dim dt As New DataTable
        Dim row As DataRow
        'define as variáveis usadas no projeto
        Dim linhaTexto As String = ""
        Dim arrrayDeLinhas() As String
        Dim nomeArquivo As String = ""
    
        'define os valores padrão para o componente OpenFileDialog
        OpenFileDialog1.InitialDirectory = "c:\dados\"
        OpenFileDialog1.Filter = "TXT files (*.txt)|*.TXT"
        OpenFileDialog1.FilterIndex = 2
        OpenFileDialog1.RestoreDirectory = True
    
        'verifica se foi escolhido um arquivo
        If (OpenFileDialog1.ShowDialog() = Windows.Forms.DialogResult.OK) Then
    
          nomeArquivo = OpenFileDialog1.FileName
    
        End If
    
        'atribui o nome e caminho do arquivo a caixa de texto
        Me.TextBox1.Text = nomeArquivo
    
        'define a estrutura da DataTable que vai receber os dados
        dt.Columns.Add("Crachá", Type.GetType("System.String"))
        dt.Columns.Add("Nome", Type.GetType("System.String"))
        dt.Columns.Add("Sexo", Type.GetType("System.String"))
        dt.Columns.Add("RG", Type.GetType("System.String"))
        dt.Columns.Add("CPF", Type.GetType("System.String"))
        dt.Columns.Add("Municipio", Type.GetType("System.String"))
    
        'verifica se o arquivo existe
        If File.Exists(nomeArquivo) = True Then
    
          'cria um novo objeto StreamReader
          Dim objReader As New StreamReader(nomeArquivo)
          'percorre o arquivo
          Do While objReader.Peek() <> -1
    
            linhaTexto = objReader.ReadLine()
            arrrayDeLinhas = Split(linhaTexto, ";")
            row = dt.NewRow
            row.ItemArray = arrrayDeLinhas
            dt.Rows.Add(row)
          Loop
    
          'atribui ao datagridview o objeto datatable criado
          DataGridView1.DataSource = dt
    
        Else
    
          MsgBox("O arquivo não foi encontrado...")
    
        End If
      End Sub
    

    Mas agora parei no seguinte, como passar esses dados que conseguí do arquivo TXT para o Clientes.DBF
    Como manipular esses dados para montar uma instrução INSERT? Pois creio que consiguirei usar linguagem Transact-SQl para inserir (já que usei no primeiro teste a instrução SELECT)

    Thanks

     

    terça-feira, 24 de maio de 2011 19:00

Respostas

Todas as Respostas