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
| 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! | ![]() |
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.
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

.png)















