terça-feira, 10 de novembro de 2009

Procedimentos com parâmetros opcionais:

{Quando você declara o procedimento:

procedure Esperar(Segundos: Byte);
você está determinando que todas as vezes que o procedimento Esperar for chamado, deverá ser passado um valor do tipo Byte. No entanto, esse tipo de declaração exige que em todas as chamadas ao procedimento Esperar seja especificado um parâmetro. Se você fizer uma chamada do tipo:}

procedure TForm1.Button1Click(Sender: TObject);
begin
Esperar()
end;

{será gerado um erro do tipo: Not enough actual parameters. Mas você pode declarar e implementar o procedimento da seguinte forma:}

procedure Esperar(Segundos: Byte = 1);
begin
Sleep(Segundos * 1000);
end;

{A declaração acima faz com que o procedimento Esperar assuma o valor 1 caso nenhum parâmetro seja passado. Assim você poderá fazer uma chamada ao procedimento em qualquer das situações abaixo:}

procedure TForm1.Button1Click(Sender: TObject);
begin
Esperar(); // nenhum parâmetro, será assumido o valor 1
Esperar(1);
Esperar // nenhum parâmetro, será assumido o valor 1
end;


{Como usar a cláusula UNION em um Query:

O uso do componente TQuery gera muitas vantagens e economiza muitas linhas de programação. Mas muitas vezes nos deparamos com situações que parecem não ser resolvidas com sentenças SQL. Vejamos um exemplo:

Você possui 2 tabelas (VendasExternas e VendasInternas) e deseja fazer um resumo de todas as vendas de um vendedor chamado Marcos. Se você usar a sentença}

SELECT Nome, Valor FROM VendasExternas, VendasInternas
WHERE Nome = 'Marcos'

{você vai obter como resultado uma query com 4 campos (Nome, Valor, Nome_1 e Valor_1) e um resultado bem confuso para ser manipulado.

Para resolver o problema, você poderá usar a sentença}

SELECT Nome, Valor FROM VendasExternas
WHERE Nome = 'Marcos'
UNION ALL
SELECT Nome, Valor FROM VendasInternas
WHERE Nome = 'Marcos'

{A sentença acima pede para que sejam identificados as vendas de Marcos na tabela VendasExternas, as vendas de Marcos na tabela VendasInternas e que o resultado da primeira seja unido com o resultado da segunda produzindo uma query com apenas 2 colunas.}

Nenhum comentário:

Postar um comentário