quinta-feira, 2 de outubro de 2008

O DELPHI é um POETA 2!


Aqui vai mais um verso do poeta DELPHI!!!

terça-feira, 30 de setembro de 2008

O DELPHI é um POETA.!

Erros inusitados que você nunca viu por ai... rsrs



É gurizada no primeiro post, não saiu artigo por causa disso ai oh ...rsrsrs

segunda-feira, 29 de setembro de 2008

Artigo Nº 14: Performance em consultas com Stored Procedures

Diante das necessidades de alta performance em aplicações WEB, um elemento que auxilia neste processo são as Stores Procedures(SP), procedimentos executados diretamente pelo BD, diminuindo significativamente o tempo para manipulação dos dados.
Veremos um exemplo de utilização de cursores no Banco Firebird, cursores são normalmente utilizados para retornar mais de um registro em uma SP, entre outras funcionalidades.
Criando nossa Stored Procedure:
CREATE PROCEDURE SP_CLIENTES (
cep integer)
returns (
nome varchar(100),
endereco varchar(100))
as
begin
for select clientes.nome,clientes.endereco from clientes
where clientes.cep = :cep
into :nome, :endereco do

suspend;

end^


O uso do for/selec/do caracteriza o uso do cursor.

Após criada nossa SP, para chamá-la basta realizarmos um simples select passando o parâmetro:
select * from sp_clientes(98910000)
Para consultas pesadas no BD, as SPs são uma ótima alternativa para aumentar a performance.

Abraço e até a próxima.



PS: O post mais comentado do blog foi simplesmente excluído pelo nosso administrador...

PS2: Tudo bem, a gente sabe que o blog não trata desse assunto, foi mesmo só pra tirar um pouco com o Azuis..., faz parte tb...

Artigo Nº 13: Carregar Lista de Dados em C#

Bom, estou voltando com um artigo sobre gridview com DataSet em C#. Como já foi dito no décimo artigo que fala sobre performance comparando DataReader e DataSet, o DataSet se torna mais lucrativo quando se trata de performance. Bom, começando temos primeiramente que configurar uma conexão com o banco de dados, iremos usar o banco de dados SQLServer conectando através do driver de conexão com o Odbc.

Cria-se uma nova classe com o nome de BancoDados e dentro desta um objeto de conexão Odbc ficando assim.

public OdbcConnection sCon;
sCon = new OdbcConnection("Driver={SQL Native Client}; Server=crack\\sqlexpress; Database=prop; Uid=sa; Pwd=123456;");

Onde dentro dos parenteses seria a string de conexão no caso com SQL Server. Criado este objeto vamos criar duas funções, uma para abrir a conexão com o banco e outra para fechar a conexão com o banco. Vamos lá então. A primeira:

// Publica para ser chamada de qualquer lugar e VOID por que não retorna nada
public void Conecta()
{
try // Tratamento de Erros
{

if (sCon.State == 0)
// Se fechada a conexão, abre ela
{
sCon.Open(); // Abre a conexão
}
}
catch (Exception e)
{
throw new Exception("Não Conectou: " + e.Message);
}
}

Pois então esta feito a primeira agora a segunda:
// Já foi explicado antes o por que do public e do void
public void Desconecta()
{
try
{
sCon.Close(); // Fecha a conexão

}

catch (Exception e)

{

t
hrow new Exception("Erro: " + e.Message);
}
}

Bom, nossa primeira classe está pronta, agora vamos para a classe que retornará dados do banco de dados para uma GridView. Cria-se uma nova classe com o nome de usuarios. Nesta vamos criar uma function apenas.

// Publica e retorna um DataSet.
public DataSet Usuarios()
{

Bom, nossa primeira classe está pronta, agora vamos para a classe que retornará dados do banco de dados para uma GridView. Cria-se uma nova classe com o nome de usuarios. Nesta vamos criar uma function apenas.

// Publica e retorna um DataSet.

Muito bom, criamos as 2 classes que vamos utilizar. Cria-se uma nova página .aspx para que assim possamos buscar os dados com a nossa classe. Adicione nesta página aspx uma gridview e nomeie ela como desejar, aqui usaremos GVUsuarios como nome dela. Agora vamos no evento OnLoad da página aspx e lá vamos chamar a nossa classe.

// Define novamente uma variável para uma classe
usuarios User = new usuarios();
// Agora diz que o DataSource da GridView é o nosso DataSet
GVUsuarios.DataSource = User.Usuarios();
// Atualiza a tabela
GVUsuarios.DataBind();

Agora abaixo vocês podem ver o resultado final, mas é claro que vocês devem definir os campos que vocês querem trazer na GridView

Teclas de Atalho Delphi

F5: Adiciona um break-point na linha selecionada

Ctrl+F7: Executa a opção de debug Evaluate/Modify para verificar o conteúdo da variável selecionada em tempo de debug.

Ctrl+F5: Adiciona um Watch para a variável selecionada em tempo de debug.

Ctrl+Shift+F11: Chama as opções do projeto.

Ctrl+Shift+I: Indentar multiplas linhas de código de uma única vez em "n" espaços (conforme o que estiver especificado em Tools/Editor Options/General/Block Indent).

Ctrl+Shift+U
: Recuar indentação em "n" espaços (ídem acima).

Ctrl+Shift+0 a 9: Inserir um Bookmark no editor de código.

Ctrl+: troque n pelo número do Bookmark.

Ctrl+Shift+0: para desmarcar um Bookmark.

Alt+G: Ir para uma determinada linha.

Ctrl+Shift+Seta (cima/baixo): Intercala entre o cabeçalho da procedure/função e a implementação da mesma.

Ctrl+Shift+C: Complementacao de Classes.

Ctrl+Shift+Up: Vai para a seção interface.

Ctrl+Shift+Down: Vai para a seção implementation.

Ctrl+Mouse: Clique com o botão esquerdo do mouse mantendo pressionada a tecla Ctrl sobre a chamada a uma procedure/function/variável para localizá-la na unit atual ou em outra unit.

Ctrl+J (Code Templates): Exibi templates de códigos.

Ctrl+Shift+J (Delphi 2006): Executar o SyncEdit para alterar variáveis com mesmo nome de uma só vez após a seleção de um bloco de código.

Ctrl+O+U: Alterna a caixa (maiúscula/minúscula) do código selecionado.

Ctrl+K+E: Converter o código selecionado para minúsculas.

Ctrl+K+F: Converter o código selecionado para maiúsculas.

Ctrl+E: Ativa a busca incremental. Sem a necessidade de teclar (Ctrl+F).

Ctrl+Shift+Setas: Mover o(s) componente(s) selecionado(s) rapidamente no form.

Ctrl+Setas: Move o componente pixel a pixel.

Shift+Setas: Redimensiona o componente pixel a pixel.

Ctrl+Alt+P
(Delphi 2006...): Seleciona a Paleta de Ferramentas possibilitando a filtragem dos componentes ao se digitar seus nomes.

Ctrl+Shift+E (Delphi 2006...): Executa o Refactoring de modificação de nomes de variáveis, procedures/functions e propriedades.

Ctrl+Shift+A
(Delphi 2006...): Executa o Refactoring Find Unit, que localiza as units onde as variáveis são declaradas e as coloca na seção uses automaticamente.

Ctrl+Shift+V (Delphi 2006...): Refactoring de declaração de variável, pressiona-se este atalho para declará-la localmente.

Ctrl+Shift+D (Delphi 2006...): Refactoring de declaração de atributo, pressiona-se este atalho para declará-lo na classe.

Ctrl+Shift+F9
(Delphi 2006...): Executa a aplicação sem a opção de depuração (Debug). A execução fica mais rápida.

Referências: Imasters, Marlos Waquim

sexta-feira, 26 de setembro de 2008

Artigo Nº 12: JavaScript Limitador e Contador de Caracteres

Bem, neste artigo mostraremos como aplicar um contador e limitador de caracteres para o componente TextBox, onde a cada caractere digitado irá informar quantos ainda faltam para atingir o limite e depois que atingido não permite digitar mais.

Montando o layout

Com a sua aplicação já criada, coloque um TextBox e logo abaixo coloque a seguinte frase:
Faltam ainda 99 caracteres.

Depois vá para o código .aspx da sua página, e procure o número da frase acima (esse número pode ser quanto a sua necessidade) e o substitua pelo seguinte código HTML:

99
É nessa tag span é que vai mostrar o número de caracteres que faltam.

Aproveitando, dentro da tag do componente TextBox, coloque o código HTML abaixo, o evento onkeyup, evento acionado depois que clicar e voltar qualquer tecla do teclado.

onkeyup="LimitarCaracter(TextBox1, ContaCaractere,'99');"
Então, quando soltar qualquer tecla, será acionado o evento e executará a função “LimitarCaracter”, passando alguns parâmetros, como por exemplo: “TextBox1” id do TextBox, “ContaCaractere” id do SPAN e “99”, número máximo de caracteres e esse número tenque ser o mesmo a do SPAN.

Caso seja necessário colocar a mesma função em outro evento, sinta-se a vontade. Ex.: onmousemove, evento quando passar o mouse sobre o TextBox.

Veja a figura 01 como que fica o código .aspx.

Figura 01: Codigo .aspx


Escrevendo a Função

Agora vamos criar a função JavaScript, para contar e limitar os caracteres. Abra o bloco de notas e salve dentro do diretório do projeto com o nome de Funcoes.js, arquivo responsável por armazenar todas as funções JavaScript do seu projeto. É uma maneira de deixar seus códigos mais organizados.

Feito isso, copie a função abaixo e salve:

function LimitarCaracter(idCampo, idContador, TamMax)
{
Caracteres = TamMax - document.getElementById(idCampo).value.length;
document.getElementById(idContador).innerHTML = Caracteres;
if(document.getElementById(idCampo).value.length >= TamMax)
{
document.getElementById(idCampo).value = document.getElementById(idCampo).value.substring(0, TamMax);
document.getElementById(idContador).innerHTML = "0";
}
}
Na linha 1, é declarado a função com o mesmo nome que foi definido no evento do TextBox, com as respectivas variáveis.

Linha 3 , aplica na variável, a subtração do número máximo pela quantidade de caracteres que já possui no TextBox, resultando no número de caracteres que ainda faltam para chegar no máximo.

Linha 4, escrever na tag SPAN, o resultado.

Linha 5, verifica se número de caracteres que já tem no TextBox é maior ou igual ao número máximo permitido.

Se for verdadeira a condição, na linha 7, escreve no TextBox somente os caracteres que não ultrapassam o número máximo, caso passa da quantidade, apaga-se todos os caracteres a partir desse. E na linha 8, escreve na tag SPAN, o número zero.

Agora vá novamente no código .aspx da sua página e dentro da tag , localizada no início do código, coloque o script abaixo, responsável por linka a página com o arquivo das funções.

Feito tudo isso, compilando o resultado é de acordo com a figura 2.

Figura 02: Resultado


Caso tenha mais de um TextBox por página para realizar esse procedimento, faça tudo da mesma maneira, mas só substitui o id do TextBox e do SPAN, por outro qualquer e coloque-os na função do evento.

Ex:
onkeyup="LimitarCaracter(TextBox2, ContaCaractere2,'999');"
Um abraço e até o próximo post. Obrigado.

quarta-feira, 24 de setembro de 2008

Delphi Tour em Porto Alegre

A Borland Latin America, distribuidora exclusiva da Embarcadero para a linha CodeGear no Brasil, realizou na terça-feira, 23, em Porto Alegre, o Delphi Tour.
O evento aconteceu na PUC-RS, das 9h às 12h45, contando com a presença do Sr. Andreano Lanusse (CodeGear/Embarcadero Evangelist Leader for Latin America), que vive atualmente na California USA e é responsável pela ferramenta de desenvolvimento de sistemas Delphi em toda a América Latina.

Andreano Lanusse, Fauzi Shubeita e Eu(Edinei Steffen)

O evento foi voltado a desenvolvedores de software, arquitetos de sistemas, líderes de projetos de software e gerentes de desenvolvimento, onde tiveram a oportunidade de conhecer os novos recursos do Delphi 2009, tais como: globalização de aplicações, criação de interfaces ricas para desktop, escalabilidade de aplicações e muito mais.

Entre as novas funcionalidades da ferramenta de desenvolvimento, o Delphi 2009 traz diversos avanços na VCL (Visual Component Library, ou Biblioteca de Componentes Visuais), permitindo a criação de aplicações com interface Ribbon (Recursos presentes no Office 2007), suporte a UNICODE (suporte a código de padrão mundial) e tradução de aplicações. Além disso, vem com o novo DataSnap framework, integrado ao dbExpress e sem dependência da tecnologia COM (Component Object Model).

E para aqueles que acreditavam que a partir da versão 2009 o Delphi não trabalharia mais com o .NET, não se preocupem segundo Andreano, no final do mês de novembro deste ano (2008) será lançado também o Delphi 2009 for .NET, incorporando as funcionalidades do Framework 3.5 da microsoft.

A empresa Embarcadero Technologies é a nova "dona" de ferramenta Delphi, onde a ferramenta só tende a crescer com mais força, pois a empresa dispõe de uma equipe com mais de 120 pessoas trabalhando no desenvolvimento e melhoramentos da ferramenta. Segundo Andreano, o Brasil ainda é considerado pequeno frente a outros países, como por exemplo a Rússia investiu neste ano, 1 milhão de licenças para distribuir entre escolas de Ensino Fundamental e Médio.

A Embarcadero Technologies Inc. auxilia desenvolvedores de aplicações e profissionais de bancos de dados fornecendo ferramentas para o design, construção e execução de aplicações de software no ambiente de preferência do cliente. Uma comunidade de mais de três milhões de pessoas ao redor do mundo e 90 empresas da Fortune 100 confiam nas linhas de produtos da CodeGear™ e da DatabaseGear™ da Embarcadero para aumentar a produtividade, a abertura da colaboração e a liberdade de inovar. Fundada em 1993 a Embarcadero tem sua sede em São Francisco, com escritórios espalhados pelo mundo.

t+
Edinei