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