 VB.NET - Exportando um DataTable 
como String
 
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