No Delphi, eu estava tentando executar uma query, e logo abaixo, eu testava quantos registros a query retornou. A Query simples, uma join de duas tabelas pequenas. Meu sistema é desenvolvido utilizando banco de dados SQL Server, acessado através de componentes DBExpress. Pra qualquer porcaria ( BDE, ADO, Zeos, etc.. ) o recordcount funciona. Menos para DBExpress. Quando eu tento chamar o método Recordcount do TSQLQuery, ele berra, avisando que a operação não é suportada.
Segundo esta explicação da Borland, o recordcount não pode ser obtido se:
- você está executando uma stored procedure;
- você está executando uma view;
- você está executando um script que contém joins entre tabelas;
Resumindo: recordcount never more. Qual sistema que não tem stored procedure, view ou joins ?
Boa sorte desenvolvedor Delphi. Você vai precisar.
sábado, março 08, 2008
quinta-feira, março 06, 2008
Fluent Interfaces, by Guilherme Chapiewski
Não domino o assunto, nem tampouco me atrevo a escrever muito sobre isso aqui, mas Fluent Interfaces é uma forma de escrever código.
É um esforço para criar interfaces mais intuitivas, onde outros analistas que vão utilizar o seu método possam facilmente entender a regra de negócio a qual o seu método está inserido e/ou pretende resolver.
A abordagem é interessantíssima, embora não aplicável a todos os casos de software.
Guilherme Chapiewski escreveu artigos interessantes sobre este assunto no blog dele, inclusive, implementou uma classe de exemplo, uma API para envio de e-mails, utilizando Fluent Interfaces.
Link para os artigos:
Refatorando para Fluent Interface
Um exemplo prático de Fluent Interface
É um esforço para criar interfaces mais intuitivas, onde outros analistas que vão utilizar o seu método possam facilmente entender a regra de negócio a qual o seu método está inserido e/ou pretende resolver.
A abordagem é interessantíssima, embora não aplicável a todos os casos de software.
Guilherme Chapiewski escreveu artigos interessantes sobre este assunto no blog dele, inclusive, implementou uma classe de exemplo, uma API para envio de e-mails, utilizando Fluent Interfaces.
Link para os artigos:
Refatorando para Fluent Interface
Um exemplo prático de Fluent Interface
Delphi: showmodal em aplicação MDI
O padrão MDI é um tipo de interface onde múltiplos documentos podem ser abertos dentro de uma única janela. Cada um desses documentos, por sua vez, abrem-se cada qual em uma
janela, dentro da janela "pai". Um exemplo de aplicação que usa um padrão
desse tipo é o Adobe Photoshop.
A vantagem do padrão MDI é que ele dá a possibilidade do usuário utilizar duas ou mais janelas, comparando dados entre elas. Uma desvantagem é que a proliferação de muitas janelas abertas pode deixar o sistmea lento e o usuário perdido.
Uma dúvida muito comum em aplicações Delphi que utilizam MDI é quando o analista tem que recorrer ao recurso de janelas modais, aquelas que bloqueiam o usuário enquanto a janela está ativa. No delphi, o formstyle da janela que vai ser modal tem que ser fsNormal, uma janela comum, e a janela não pode estar visível, portanto, a propriedade visible tem que estar configurada para False.
A dica de ouro é que estas propriedades setadas em design time não funcionam; quando você for executar o showmodal, ocorrerá um erro de excessão dizendo que a janela não pode ser modal. A solução é fazer tudo em runtime:
Bons códigos.
janela, dentro da janela "pai". Um exemplo de aplicação que usa um padrão
desse tipo é o Adobe Photoshop.
A vantagem do padrão MDI é que ele dá a possibilidade do usuário utilizar duas ou mais janelas, comparando dados entre elas. Uma desvantagem é que a proliferação de muitas janelas abertas pode deixar o sistmea lento e o usuário perdido.
Uma dúvida muito comum em aplicações Delphi que utilizam MDI é quando o analista tem que recorrer ao recurso de janelas modais, aquelas que bloqueiam o usuário enquanto a janela está ativa. No delphi, o formstyle da janela que vai ser modal tem que ser fsNormal, uma janela comum, e a janela não pode estar visível, portanto, a propriedade visible tem que estar configurada para False.
A dica de ouro é que estas propriedades setadas em design time não funcionam; quando você for executar o showmodal, ocorrerá um erro de excessão dizendo que a janela não pode ser modal. A solução é fazer tudo em runtime:
application.createform(TfrmLocalizarPessoa,frmLocalizarPessoa);
frmLocalizarPessoa.Visible:=false;
frmLocalizarPessoa.FormStyle:= fsNormal;
frmLocalizarPessoa.ShowModal;
Bons códigos.
terça-feira, março 04, 2008
Alterar senha do Postgresql no Ubuntu
Quando instalamos o server Postgresql no Ubuntu, onde a forma mais fácil é via synaptic, ele não pede a senha inicial do usuário postgres.
Para acessar o banco, primeiro, você tem que configurar esta senha. Os códigos abaixo vão auxiliar você nesta tarefa:
Entre no diretório /etc/init.d
cd /etc/init.d/
Logue no postgresql usando a conta root:
sudo -u postgres psql template1
Depois quando estiver no psql digite o seguinte comando SQL:
ALTER USER postgres WITH PASSWORD ‘***password***’;
onde ***password*** é a sua nova senha.
Saia do console do postgresql digitando \q
Pronto. Senha alterada, logue no Postgresql via PgAdmin
ou o Aqua Data Studio e boa diversão.
Para acessar o banco, primeiro, você tem que configurar esta senha. Os códigos abaixo vão auxiliar você nesta tarefa:
Entre no diretório /etc/init.d
cd /etc/init.d/
Logue no postgresql usando a conta root:
sudo -u postgres psql template1
Depois quando estiver no psql digite o seguinte comando SQL:
ALTER USER postgres WITH PASSWORD ‘***password***’;
onde ***password*** é a sua nova senha.
Saia do console do postgresql digitando \q
Pronto. Senha alterada, logue no Postgresql via PgAdmin
ou o Aqua Data Studio e boa diversão.
Assinar:
Postagens (Atom)