Visual Basic em Português

Página pessoal de Jorge Paulino sobre o Visual Basic (VB.NET, ASP.NET, VB6, VBA) e algumas noticias de tecnologia

Microsoft WebDay 2010 em Lisboa e no Porto

Nos dias 12 e 14 de Outubro acontece o evento o WebDay 2010 da Microsoft, no Porto e em Lisboa respectivamente.

O Webday é o evento dedicado a profissionais da área web, e este ano terá uma agenda mais interessante, com sessões "essentials" na parte da manhã, e sessões "deep dive" na parte da tarde, sobre diversos temas como Azure, Silverlight 4, Windows Phone 7, HTML5, IE9, ASP .NET 4, ASP .NET MVC 3, WebMatrix, Razor, entre outros...

Outra novidade é o seminário de pré-conferência que acontece no dia que antecede o evento em cada cidade (11 e 13), dedicado exclusivamente ao Windows Phone 7.

É um evento a não perder!

Mais informações e registo:
http://www.mswebday.com


MSDN Magazine - Setembro 2010

Já está disponível a MSDN Magazine de Setembro 2010!

Nesta edição estão disponíveis artigos como:

Async Tasks: Simplify Asynchronous Programming with Tasks
Concurrency: Throttling Concurrency in the CLR 4.0 ThreadPool
App Migration: Migrate Your ASP.NET 1.1 Apps to Visual Studio 2010
Data-Bound Design: Create a Silverlight 4 Web Part for SharePoint 2010
IronRuby on Windows Phone 7

Entre muitos outros!

VB.NET: Como abrir ficheiros de texto delimitados

Os ficheiros de texto são cada vez menos usados, mas ainda há alguns casos que se utilizam, como por exemplo, para a criação de ficheiros log, ficheiro CSV (Comma-separated values), etc.

Para ler ficheiros de texto existem vários métodos, alguns dos quais referidos num artigo anterior, mas quando são listas a forma mais fácil, rápida e prática de o fazer é utilizando uma ligação Microsoft Jet OLE DB 4.0.

Imaginemos o seguinte ficheiro (dados.csv):

1;Amarelo;22:09 11-06-2010
2;Azul;22:10 12-06-2010
3;Verde;22:11 12-06-2010
4;Verde;22:12 13-06-2010
5;Preto;22:13 14-06-2010
6;Branco;22:14 14-06-2010

Para ler este ficheiro é apenas necessário:

' ConnectionString para ligação Microsoft Jet OLEDB
Dim connString As String =
    "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=d:\;" &
    "Extended Properties='text;HDR=no;FMT=Delimited'"

Dim SQL As String = "SELECT * FROM dados.csv"
Using da As New OleDb.OleDbDataAdapter(SQL, connString)
    Dim ds As New DataSet
    da.Fill(ds)

    Stop ' Informação disponível no DataSet

End Using

Desta forma colocamos toda a informação num DataSet. Neste exemplo, a DataTable terá 6 linhas (rows) e três colunas (columns), onde as colunas terão o nome, gerado automaticamente, de “F1”, “F2” e “F3”.

Depois é fácil filtrar os dados! Por exemplo, para mostrar todos os registos que tenham na segunda coluna o valor “Verde”:

' ConnectionString para ligação Microsoft Jet OLEDB
Dim connString As String =
    "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=d:\;" &
    "Extended Properties='text;HDR=no;FMT=Delimited'"

Dim SQL As String = "SELECT * FROM dados.csv"
Using da As New OleDb.OleDbDataAdapter(SQL, connString)
    Dim ds As New DataSet
    da.Fill(ds)

    Dim view As DataView = ds.Tables(0).DefaultView
    view.RowFilter = "F2 = 'Verde'"

    ' Mostra o número das linhas que têm o
    ' valor “Verde’ na segunda coluna      
    For x As Integer = 0 To view.Count - 1
        Console.WriteLine(view(x).Row.Item(0).ToString)
    Next
    Console.Read()

End Using

Neste exemplo foi utilizado um DataView, mas podia ser feito directamente na instrução SQL:

"SELECT * FROM dados.csv WHERE F2 = 'Verde'"

Mas imaginemos que o ficheiro tem um delimitador diferente, ou seja, não é utilizado o ponto e virgula (;) mas sim outro. Isto poderá acontecer por diversos motivos, com por exemplo, quando o ficheiro é gerado por uma máquina ou quando é gerado por uma aplicação que não temos controlo.

Imaginemos agora que o delimitador e uma barra (|).

1|Amarelo|22:09 11-06-2010
2|Azul|22:10 12-06-2010
3|Verde|22:11 12-06-2010
4|Verde|22:12 13-06-2010
5|Preto|22:13 14-06-2010
6|Branco|22:14 14-06-2010

Se executássemos o código anterior, iria ler o ficheiro como uma coluna apenas. 

Uma solução para resolver este problema seria a de utilizar um ficheiro de schema, com o nome schema.ini, que seria colocado na mesma directoria do ficheiro a ler. Este ficheiro fornece o IISAM com informações sobre o formato dos dados, o nome da coluna e informações sobre o tipo de dados, e várias outras características, permitindo também definir qual o delimitador.

A estrutura(simplificada) é a seguinte:

[nome do ficheiro]
Format=Delimited(delimitador)
ColNameHeader=True ou False

Para o exemplo apresentado, o ficheiro schema.ini ficaria da seguinte forma:

[dados.csv]
Format=Delimited(|)
ColNameHeader=False

Desta forma podemos ler o ficheiro indicando qual o delimitador correcto e definindo ainda algumas informações adicionais.


NOTICIA: Revista PROGRAMAR - Edição 24 - Junho de 2010

Já está disponível a revista PROGRAMAR, um dos projectos da comunidade Portugal-a-Programar, edição nº 24 de Junho de 2010.

Nesta edição pode-se ler os seguintes artigos:

  • Bases de dados para objectos
  • Padrões de desenho para projectos corporativos
  • Introdução ao WCF 4 (Windows Communication Foundation)
  • Continuação do tutorial sobre LUA
  • Entrevista a Celso Pinto, o autor do modelo3.pt

Mais Informações




Microsoft Office Especialist

Membro da Comunidade
Experts-Exchange


Administ. da Comunidade
Portugal-a-Programar



Twitter

Artigos no CodeProject

Artigos no CodeProject

Subscrever Novidades

Endereço de Email:

Delivered by FeedBurner

Seguidores

Histórico