Exportando dados de uma tabela para um arquivo texto no formato CSV(delimitado)


Se algum dia você precisou exportar dados para um arquivo texto deveria ter lido este artigo antes. Como exemplo iremos exportar os dados da tabela Authors do arquivo Biblio.mdb. Neste exemplo o banco de dados esta no diretório c:\teste,e o nosso objeto é gerar um arquivo texto no formato delimitado com os dados.

 Em nosso projeto iremos fornecer o nome e a localização do banco de dados , a instrução SQL que irá selecionar os registros que queremos exportar e o nome do arquivo texto que iremos gerar. De presente iremos permitir a visualização do nosso arquivo gerado. Vamos lá...

  1. Inicie um novo projeto no Visual Basic
  2. Altere nome do formulário padrão , form1 , para frmexporta , e insira 3 etiquetas , 3 caixa de textos e dois botões de comando como na figura abaixo:

O código deste formulário é o seguinte:

- Código do botão de Comando- Command1- Exportar dados para Arquivo Texto

Private Sub Command1_Click()
Dim db As Database
Dim ws As Workspace

On Error GoTo inicia_erro

Set db = DBEngine.Workspaces(0).OpenDatabase(Text1.Text)

If Text1.Text <> "" And Text2.Text <> "" And Text3.Text <> "" Then
   Call Exporta(db, Text2, Text3)
   MsgBox "Arquivo texto : " & Text3.Text & " Gerado com sucesso "
Else
   MsgBox "Por favor , informe todos os parâmetros ...", vbCritical, "Exportando dados para um arquivo Texto"
End If

Exit Sub

inicia_erro:
MsgBox ("Erro : " & Err.Description)
Exit Sub

End Sub

- Codigo da função Exporta - Recebe como parâmetro o banco de dados, a string SQL e o nome do arquivo de destino e retorna Falso(False) ou Verdadeiro (True)

Public Function Exporta(db As DAO.Database, sSQL As String, sDestino As String) As Boolean

   Dim registro      As Recordset
   Dim nI            As Long
   Dim nJ            As Long
   Dim nArquivo      As Integer
   Dim sTemp         As String
   
   On Error GoTo Trata_Erro
   
   Set registro = db.OpenRecordset(sSQL, DAO.dbOpenDynaset, DAO.dbReadOnly)
   
   'Abre o arquivo de saida
   nArquivo = FreeFile
   
   Open sDestino For Output As #nArquivo
   
   'Exporta os nomes dos campos
   For nI = 0 To registro.Fields.Count - 1
      sTemp = "" & (registro.Fields(nI).Name)
      Write #nArquivo, sTemp;
   Next
   Write #nArquivo,

   If registro.RecordCount > 0 Then
      registro.MoveLast
      registro.MoveFirst
   
      For nI = 1 To registro.RecordCount
         For nJ = 0 To registro.Fields.Count - 1
            sTemp = "" & (registro.Fields(nJ))
            Write #nArquivo, sTemp;
         Next
         Write #nArquivo,
         registro.MoveNext
      Next
   End If
   
   Close #nArquivo
   Exporta = True
   
   Exit Function
   
Trata_Erro:
   MsgBox ("Erro : " & Err.Description)

   Exporta = False
   
End Function

- Codigo do botão de comando - command2 - Exibe Texto

Private Sub Command2_Click()
   frmMostraTexto.Show vbModal
End Sub

O segundo formulário do nosso projeto será usado para exibir o arquivo texto gerado.O form contém apenas uma caixa de texto com a propriedade Multiline definida como True e um botão de comando. Ele tem o seguinte aspecto:

O seu código é dado a seguir:

Private Sub Command1_Click()
  Unload Me
End Sub
---------------------------------------------------------------
Private Sub Form_Load()
   Open frmexporta.Text3.Text For Input As #1
   txt_arquivo = Input(LOF(1), 1)
   Close #1
End Sub

O resultado da execução do projeto é mostrado a seguir:

O formulário com os dados informados pelo usuário e exibindo o arquivo gerado

Até a próxima dica...

Veja os Destaques e novidades do SUPER DVD Visual Basic (sempre atualizado) : clique e confira !

Quer migrar para o VB .NET ?

Quer aprender C# ??

Quer aprender os conceitos da Programação Orientada a objetos ?

Quer aprender o gerar relatórios com o ReportViewer no VS 2013 ?

Referências:


José Carlos Macoratti