Arquivo mensais:setembro 2006

Acessando o MS SQL Server através do PostGreSQL

Para acessar o MS SQL Server através de aplicativos que não possuam os meios oficiais de acesso (protocolo TDS) devemos utilziar ou o FreeTDS ou uma conexão ODBC (Open Database Communication).
Segue como utilizar uma conexão ODBC através do módulo DBI do Perl:

Configurando o PostGreSQl para acessar fontes externas de dados:

  • instale o Perl (padrão para usuários Unix/Linux, ActivePerl no caso de usuários Windows);
  • instale os módulos DBI e DBD-ODBC do Perl via ppm (ou “Perl Package Manager”);
  • adicione a linguagem plperlu à lista de linguagens de seu banco de dados (utilize o PgAdmin ou vá por linha de comando: psql)
  • instale o módulo dbi-link no PostGreSQL, basta rodar os scripts (note que o script do arquivo remote_query.sql está com problemas, tente este no lugar: remote_query2.sql);
  • teste!!

SELECT * FROM remote_select(
‘dbi:ODBC:DRIVER=SQL Server;UID=nom_usuario;PWD=senha_usuario;WSID=nom_maquina;DATABASE=nome_BD;APP=Microsoft Data Access Components;SERVER=(local);Description=Sql Server ODBC’
, ‘nom_usuario’
, ‘senha_usuario’
, ‘{AutoCommit => 1, RaiseError => 1}’
, ‘SELECT * FROM tabela’)
AS (id int4, coluna varchar, outracoluna varchar)

A consulta acima resulta numa tabela com três colunas: id, coluna e outracoluna.
Talvez seja preciso mudar o primeiro parâmetro da chamada da função, que é onde se encontra o DSN (“Data Source Name”) do ODBC. Tente criar pelo próprio Windows (estou numa estação com Windows 2003), indo na seção de configuração de Fontes de Dados ODBC, na aba Fonte de dados de arquivos (que eu acho que deveria ter sido traduzido como “arquivo de fonte de dados”, mas enfim…). Siga o “wizard” apresentado e depois abra o arquivo .dsn num editor de texto para obter a string de conexão.

Note que é preciso que os nomes das tabelas no SQL Server estejam todos em minúsculo. Se este não for o caso, tente utilizar aspas duplas nos nomes das colunas:

SELECT * FROM remote_select(
‘dbi:ODBC:DRIVER=SQL Server;UID=nom_usuario;PWD=senha_usuario;WSID=nom_maquina;DATABASE=nome_BD;APP=Microsoft Data Access Components;SERVER=(local);Description=Sql Server ODBC’
, ‘nom_usuario’
, ‘senha_usuario’
, ‘{AutoCommit => 1, RaiseError => 1}’
, ‘SELECT * FROM tabela’)
AS (“Id” int4, “coluna” varchar, “outraColuna” varchar)

E é isso.

ASP.NET Development Server (integrated web server)

O Visual Studio 2005 vem com um web server integrado, cujo nome é Cassini (eu acho). Para utilizarmos os benefícios do Edit & Continue é necessário utilizar este servidor. Para isto basta editar as propriedades do seu projeto.

Infelizmente existem arquivos inseridos na aplicação aspnet_client, registrada no Internet Information Services (IIS), que não ficam disponíveis para a aplicação rodando no Cassini. Isto ocorre pelo fato do Cassini só rodar uma aplicação web por vez. Ao abrir outra aplicação, O Cassini abre outro processo rodando o servidor em uma nova porta http, impossibilitando as referências inter-aplicações.

Solução 1: copiar a pasta aspnet_client inteira (ela se encontra, por padrão, em C:\Inetpub\wwwroot\) para o seu projeto e editar o arquivo web.config inserindo o seguinte trecho na seção system.web:

<webControls clientScriptsLocation=“aspnet_client”/>

Ao copiar a pasta não se esqueça de adicioná-la ao projeto no Visual Studio.

Fonte: http://delphi.about.com/od/adptips2005/qt/cassinivalidate.htm

Solução 2: copiar o conteúdo da pasta aspnet_client, que deve estar em c:\Inetpub\wwwroot\aspnet_client, para dentro de sua aplicação, e renomear o nome da aplicação que aparece na url para aspnet_client. Isto fará com que qualquer referência para os arquivos em http://localhost:porta/aspnet_client sejam encontrados, afinal, este é o nome de sua aplicação agora.
Feio, mas funciona! E dá um jeito nos problemas encontrados em controles third party, que não obedecem a tag xml definida na solução 1.

String DateTime Formatters em C#

Specifier Type Example (Passed System.DateTime.Now)
d Short date 10/12/2002
D Long date December 10, 2002
t Short time 10:11 PM
T Long time 10:11:29 PM
f Full date & time
December 10, 2002 10:11 PM F Full date &
time (long) December 10, 2002 10:11:29 PM g
Default date & time 10/12/2002 10:11 PM
G Default date & time (long)
10/12/2002 10:11:29 PM M Month day pattern
December 10 r RFC1123 date string
Tue, 10 Dec 2002 22:11:29 GMT s Sortable date string
2002-12-10T22:11:29 u Universal sortable, local time
2002-12-10 22:13:50Z U Universal sortable, GMT
December 11, 2002 3:13:50 AM Y Year month pattern
December, 2002

Custom date formatting:

Specifier Type Example Example Output
dd Day {0:dd} 10
ddd Day name {0:ddd} Tue
dddd Full day name {0:dddd} Tuesday
f, ff, … Second fractions {0:fff} 932
gg, … Era {0:gg} A.D.
hh 2 digit hour {0:hh} 10
HH 2 digit hour, 24hr format {0:HH} 22
mm Minute 00-59 {0:mm} 38
MM Month 01-12 {0:MM} 12
MMM Month abbreviation {0:MMM} Dec
MMMM Full month name {0:MMMM} December
ss Seconds 00-59 {0:ss} 46
tt AM or PM {0:tt} PM
yy Year, 2 digits {0:yy} 02
yyyy Year {0:yyyy} 2002
zz Timezone offset, 2 digits {0:zz} -05
zzz Full timezone offset {0:zzz} -05:00
: Separator {0:hh:mm:ss} 10:43:20
/ Separator {0:dd/MM/yyyy} 10/12/2002

Fonte: http://blog.stevex.net/index.php/string-formatting-in-csharp/