terça-feira, 2 de setembro de 2008
Artigo Nº 04: Trabalhando com datas no Delphi .NET usando DateUtils
De início declare na uses a biblioteca: DateUtils, esta possibilita várias funções de cálculo de datas, segue um exemplo de cálculo de dias, onde temos a data atual e queremos somar a mesma com determinado valor de dias:
No load da página, preencho o label com a data atual:
Label3.Text := DateTime.Now.ToString('dd/MM/yyyy');
Coloco um TextBox e outro Label onde visualizarei o resultado do cálculo, e tb um button. No click do Button vai o seguinte:
Label4.Text := IncDay(convert.ToDateTime(Label3.Text),Convert. ToInt16(TextBox1.Text)).ToString;
Existem diversas outras funções desta biblioteca, que com certeza serão uteis algum dia.
Abraço e até a próxima!
segunda-feira, 1 de setembro de 2008
Artigo Nº 03: Exibir um somatório no rodapé da datagrid
bdpCom := BdpCommand.Create('SELECT SUM(HORAS) AS FEITAS FROM HORAS WHERE BOLSA = ?', Dados.CONEXAO);
try
bdpCom.Parameters.clear; // Limpa os parâmetros.
bdpCom.Parameters.Add('BOLSA', BdpType.&String); //Adiciona um parâmetro.
//====================================
bdpCom.Parameters['BOLSA'].Value := BOLSA; //Da um valor para o parâmetro criado.
bdpRead :=bdpCom.ExecuteReader;
if bdpRead.read then//Se o reader tiver algo nele, retorna o seu valor se não retorna 0.
Result := bdpRead['FEITAS'].ToString
else
Result := '0';
finally
bdpCom.free; // Libera da memória
bdpRead.free;
end;
Onde o deve-se utilizar o comando ExecuteReader do bdpCommand no componente bdpRead, e após isto uma simples verificação para ver se retornou algo da consulta onde foi realizada um SUM(CAMPO), sempre é claro lembrando de liberar da memória os componentes (após o finally). E retornando no Result a variavel dbpRead[‘FEITAS’] que é o nosso dbpReader. Após isto, vá na DataGrid e habilite a opção ShowFooter para exibir o rodapé. Agora adicione o evento ItemDataBound na DataGrid para que quando esteja sendo desenhado cada linha ele efetue o comando desejado.
Neste evento deve-se adicionar o seguinte comando:
if e.Item.ItemType = ListItemType.Footer then // Se estiver no rodapé executa
e.Item.Cells[7].Text := Soma (Session['BOLSA'].ToString);
Primeiro se verifica se na hora de desenhar ele esta no rodapé, se sim ele joga para a coluna 7 o valor retornado pela nossa função, abaixo esta a foto do resultado final, é claro que o resto dos campos espera-se que sejam criados manualmente, alias uma ultima coisa.... Isto não funcionará caso exista paginação na datagrid pois na função ele trás logo o total e não o total das linhas que estão aparecendo.
Bom, creio que seja isto.... Até mais!
Artigo Nº 02: GridView em DELPHI .NET
Olá a todos!
Este tutorial é sobre GridView em RAD Studio .NET, ASP.NET.
- Adicionar Colunas em Tempo de Execução
Em alguns casos é necessário adicionar colunas em tempo de execução em uma GridView, isso pode ser feito adicionando um código parecido com este no evento que desejar:
var
CAMPO1, CAMPO2, CAMPO3, CAMPO4 : BoundField;
begin
CAMPO1 := BoundField.Create;
CAMPO2 := BoundField.Create;
CAMPO3 := BoundField.Create;
CAMPO4 := BoundField.Create;
try
CAMPO1.HeaderText := 'Código';
CAMPO1.DataField := 'CODIGO';
CAMPO2.HeaderText := 'Nome';
CAMPO2.DataField := 'NOME';
CAMPO3.HeaderText := 'Idade';
CAMPO3.DataField := 'IDADE';
CAMPO4.HeaderText := 'Telefone';
CAMPO4.DataField := 'TELEFONE';
GridView1.Columns.Insert(0,CAMPO1);
GridView1.Columns.Insert(1,CAMPO2);
GridView1.Columns.Insert(2,CAMPO3);
GridView1.Columns.Insert(3,CAMPO4);
finally
CAMPO1.Free;
CAMPO2.Free;
CAMPO3.Free;
CAMPO4.Free;
end;
end;
Obs: Pode ser adicionado outros tipos de colunas também como ButtonColumn e definir outras propriedades.
- Recuperar Valores
Tive alguns problemas para recuperar os valores de uma gridview no começo porque quando você define que a coluna código, por exemplo, é visible=false, ele não permite pegar o conteúdo daquela coluna facilmente, mas com DataKeys é tranquilo, os códigos abaixo:
GridView1.DataKeys[Convert.ToInt32(e.CommandArgument)].Item[0].ToString;
ou
GridView1.DataKeys[Convert.ToInt32(e.CommandArgument)].Values[0].ToString;
Na gridview precisa ser preenchido a propriedade DataKeysNames, pode ir direto no código ou configurar na paleta propriedades mesmo, coloque o nome do campo que busca no BD, se quiser pode colocar mais de um(array), desde que separe com vírgula, se colocar mais de um, muda o valor -> Values[array], por exemplo, se quiser pegar o valor NOME, ficaria assim:
Ex: datakeynames="CODIGO, NOME"
//pega o código GridView1.DataKeys[Convert.ToInt32(e.CommandArgument)].Values[0].ToString; //pega o nome GridView1.DataKeys[Convert.ToInt32(e.CommandArgument)].Values[1].ToString;
O evento para pegar os valores é o RowCommand, fica no mesmo estilo que datagrid, coloca um buttonfield e atribui um commandname pra ele, no evento rowcommand pode-se implementar um codigo parecido com esse:
if e.CommandName = 'EXCLUIR' then begin lblcontrole.text := GrVwComponentes.DataKeys[Convert.ToInt32(e.CommandArgument)].Values[0].ToString; Excluir; end;
Qualquer dúvida postem ai!!
Artigo Nº 01: Estilo para deixar um texto na vertical em uma célula
.textovertical
{writing-mode: tb-rl;
filter: flipv fliph;
font-size: 9pt;
font-family:Arial,Helvetica;
color:#330066;
}
Depois clique dentro da célula que desejas aplicar o estilo e na propriedade css escreva o nome do estilo(textovertical). Pronto, só executar.
Valeu! E que esse código seja útil para você.