VB.NET - Exportando um DataTable
como String
![]() |
Como você faria para exportar uma Tabela para o formato de String ? Se estivesse usando ADO usaria o método getString() certo ? |
Mas infelizmente ADO.NET não possui o método getString(). Se não temos o método podemos então criá-lo certo ?
Pois neste artigo vou mostrar como você pode obter um resultset gerando um DataTable e exportar os dados no formato de uma string exibindo o resultado em uma caixa de Texto.
Como exemplo vou acessar o banco de dados Northwind.mdb que , no meu caso esta pasta d:\teste.
A string de conexão esta armazenada no arquivo de configuração web.config. (Leia o artigo : Tratando arquivos de configuração para saber mais)
Então para o exemplo deste artigo o arquivo de configuração tem o seguinte conteúdo:
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<appSettings>
<add key="acessoBD" value="Provider=Microsoft.Jet.OLEDB.4.0;Data Source=d:\teste\Northwind.mdb" />
</appSettings>
</configuration>
|
Inicie um novo projeto no VS.NET e no formulário padrão insira os seguintes controles (conforme figura abaixo):

A combobox será preenchida na carga do formulário através do seguinte código no evento Load:
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
ComboBox1.Items.Add("Clientes")
ComboBox1.Items.Add("Products")
ComboBox1.Items.Add("Orders")
ComboBox1.Items.Add("Customers")
ComboBox1.Items.Add("Employees")
ComboBox1.Items.Add("Categories")
ComboBox1.SelectedIndex = 0
End Sub
|
No evento Click do botão de comando vou colocar o código que chama o método getString() que vamos criar:
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
' preenche a tabela Order
Dim tabela As String = ComboBox1.Text
Dim sql As String = "SELECT * FROM " & tabela
Dim da As New OleDbDataAdapter(sql, ConfigurationSettings.AppSettings("acessoBD"))
Dim dt As New DataTable(tabela)
Try
da.Fill(dt)
Catch ex As Exception
MsgBox(ex.Message, MsgBoxStyle.Critical, "Erro")
End Try
' chama o método para converter o DataTable para String
resultadoTextBox.Text = GetString(dt, -1, Nothing, Nothing, Nothing)
End Sub
|
O método é mostrado abaixo:
Ele recebe os seguintes parâmetros:
Private Function GetString(ByVal dt As DataTable, ByVal numLinhas As Integer, ByVal delimitadorColunas As [String], _
ByVal delimitadorLinhas As [String], ByVal nullExpr As [String]) As [String]
If numLinhas < 0 Then
' um número negativo retorna todas as rows (linhas)
numLinhas = dt.Rows.Count
Else
numLinhas = Math.Max(numLinhas, dt.Rows.Count)
End If
' o delimitador padrão da coluna é TAB
If delimitadorColunas Is Nothing Then
delimitadorColunas = ControlChars.Tab
End If
' o delimitador padrão de roe é CARRIAGE RETURN
If delimitadorLinhas Is Nothing Then
delimitadorLinhas = ControlChars.CrLf
End If
' se houver um null expression transforma em vazio
If nullExpr Is Nothing Then
nullExpr = ""
End If
Dim sb As New StringBuilder
' percorre a coleção de linhas(rows)
Dim i As Integer
For i = 0 To numLinhas - 1
' percorre a coleção de oclunas
Dim col As Object
For Each col In dt.Rows(i).ItemArray
' substitui os valores nulls
Dim colString As String
If col Is System.DBNull.Value Then
colString = nullExpr
Else
colString = col.ToString()
End If
' inclua o valor da coluna para string
sb.Append((colString & delimitadorColunas))
Next col
' remove o delimitador de colunas no último campo
sb.Remove(sb.Length - delimitadorColunas.Length, delimitadorColunas.Length)
' inclui o delmitador de linha
sb.Append(delimitadorLinhas)
Next i
Return sb.ToString()
End Function
|
O resultado da execução para a tabela Clientes , que eu criei no banco de dados é :
(O usuário deverá selecionar a tabela que deseja converter e clicar no botão de comando.)

Acabamos de converter um DataTable para String.
Até o próximo artigo ...
![]()
Referências:
Super DVD Vídeo Aulas - Vídeo Aula sobre VB .NET, ASP .NET e C#
VB.NET - Conhecendo as estruturas de controle - Macoratti ...
VB .NET - Copiando arquivos entre diretórios - Macoratti.net