Apresentar campo juros num dbgrid

Delphi

05/06/2006

Olá amigos, tenho um form de consulta genérico, em que nele, chamado através de índice, crio os campos a serem mostrados em run-time. Nessa criação tenho dúvidas de como criar dois tipos de campos:

1) Campo calculado de juros de determinado pagamento;
2) Mostrar no dbgrid, campos em forma de string, conforme conteúdo da tabela. Exemplo: 0 ´Aberto´ ou 1 ´Quitado´

Segue abaixo, um trecho da criação dos campos no form ConsultaGenerica:

   case ArquivoConsulta of
      1:
         begin
            Lista.DataSource := DM.DS_Usuarios ;
            Lista.Columns.Add;
            Lista.Columns[0].FieldName := ´CODUSU´;
            Lista.Columns[0].Title.Caption:= ´Código´;
            Lista.Columns.Add;
            Lista.Columns[1].FieldName := ´NOMUSU´;
            Lista.Columns[1].Title.Caption:= ´Usuário´;
            CampoProcura.MaxLength := DM.CDS_Usuarios.FieldByName(´NOMUSU´).Size-2;
         end;
      2:
         begin
            Lista.DataSource := DM.DS_Areceber ;
            Lista.Columns.Add;
            Lista.Columns[0].FieldName := ´doci´;
            Lista.Columns[0].Title.Caption:= ´Documento´;
            Lista.Columns.Add;
            Lista.Columns[1].FieldName := ´vencimento´;
            Lista.Columns[1].FieldName := ´vencimento´;
            Lista.Columns.Add;
            Lista.Columns[2].Title.Caption:= VlOriginal´;
            Lista.Columns[2].Title.Caption:= ´Valor Original´;
         end;


Aguardo opinião dos amigos.

Att
Mario


Aldus

Aldus

Curtidas 0

Respostas

Minuto

Minuto

05/06/2006

eu tenho um form de pesquisa igual:
o unica diferença é q eu deixei a grid limpa então os fields sao adicionados automaticamente ao abrir uma unica query q esta ligada ao grid
repare q eu faço runtime a SQL entao se eu precisar de um campo calculado da pra fazer pela query : ex:

select cod, nome , (valor1 + valor2)total from teste

var
  frmproc: Tfrmproc;

implementation
uses udm;

{$R *.dfm}

procedure Tfrmproc.FormShow(Sender: TObject);
begin
cdsproc.Close;
 case proc of
  1:begin  //cargos
    dsproc.CommandText:=´select * from cargos´;
    cdsproc.Open;
    dbgrid.Columns[0].Title.caption:=´Código´;
    dbgrid.Columns[1].Title.caption:=´Cargo´;
     campo:=´nome´;
    end;
  2:begin   //edital
    dsproc.CommandText:=´select edital.codcargo,nome from edital inner join cargos ´ +
    ´on cargos.codcargo = edital.codcargo where codconc=´+ inttostr(dm.cdsconcursocodconc.Value ) ;
    cdsproc.Open;
    dbgrid.Columns[0].Title.caption:=´Código´;
    dbgrid.Columns[1].Title.caption:=´Cargo´;
     campo:=´nome´;
     end;
   3:begin   //bancos
    dsproc.CommandText:=´select codban, nomecedente,nomebanco,codcedente from bancos ´;
    cdsproc.open;
    dbgrid.Columns[0].Title.caption:=´Código´;
    dbgrid.Columns[1].Title.caption:=´Cedente´;
    dbgrid.Columns[2].Title.caption:=´Banco´;
    dbgrid.Columns[3].Title.caption:=´Código Cedente´;
     campo:=´nomecedente´;
    end;

       4:begin   //Fornecedores
    dsproc.CommandText:=´select codfor,razao,cidade from fornecedor ´;
    cdsproc.open;
    dbgrid.Columns[0].Title.caption:=´Código´;
    dbgrid.Columns[1].Title.caption:=´Razão´;
    dbgrid.Columns[2].Title.caption:=´Cidade´;

     campo:=´razao´;
     end;

         5:begin   //Apuração
    dsproc.CommandText:=´select * from apuracao ´;
    cdsproc.open;
    dbgrid.Columns[0].Title.caption:=´Código´;
    dbgrid.Columns[1].Title.caption:=´Apuração´;
    campo:=´apuracao´;
    end;

        6:begin   //pagar
    dsproc.CommandText:=´codpag,razao,vencimento,valor,tipo,baixa from pagar ´ +
    ´inner join fornecedor on pagar.codfor=fornecedor.codfor order by razao asc,vencimento desc´ ;
    cdsproc.open;
    dbgrid.Columns[0].Title.caption:=´Código´;
    dbgrid.Columns[1].Title.caption:=´Razão´;
    dbgrid.Columns[2].Title.caption:=´Vencimento´;
    dbgrid.Columns[3].Title.caption:=´Valor´;
    dbgrid.Columns[4].Title.caption:=´Baixa´;
    dbgrid.Columns[5].Title.caption:=´Data´;

     campo:=´razao´;
     end;
 end;
end;

procedure Tfrmproc.Edit1KeyPress(Sender: TObject; var Key: Char);
begin
if edit1.Text <>´´ then
cdsproc.Locate(campo,edit1.Text,[loPartialKey,loCaseInsensitive]);

end;



GOSTEI 0
Aldus

Aldus

05/06/2006

Bom dia Minuto, o segredo está em criar os novos campos (juros/quitado) no sql?

Como ficaria:

Select Doc,Pa,Vencimento,VlrOriginal,((DataHoje-Vencimento)*(TaxaJuros/30)) as Juros,VlrOriginal + ((DataHoje-Vencimento)*(TaxaJuros/30)) as TotDevido,???? if Quitado=0,"Sim","Não") as EstaQuitado ???? FROM areceber where CodCli=:vCodCli


O cálculo do juro ficaria dessa forma? E quanto a aparecer Quitado (Sim ou Nâo) (Entre ????), seria assim?

Aí no meu form de consulta, continuo criando os campos normalmente, acrescentando aqueles gerados pela sql, no caso Juros, Totdevido e EstaQuitado?

Aguardo contato.

Att
Mario


GOSTEI 0
Aldus

Aldus

05/06/2006

Olá amigos, aproveitando a pergunta, como poderia criar uma função que recebesse um parâmetro array multidimensional e como passar o parâmetro?

Função
procedure TfConsulta.IncluiCampos(vItens: array of string);
var
   i: integer;
begin
   for i:=0 to High(vItens) do
      begin
         Lista.Columns.Add;
         Lista.Columns[i].FieldName     := vItens[i,1];
         Lista.Columns[i].Title.Caption := vItens[i,2];
      end;
end;


Chamar a função:
IncluiCampos([´codusu´,´Código´,´nomusu´,´Usuário´]);


Verifiquem o código pois não estou principalmente passar o parâmetro na função.

Att
Mario


GOSTEI 0
Aldus

Aldus

05/06/2006

Bom dia amigos, alguma idéia?


GOSTEI 0
Aldus

Aldus

05/06/2006

Alguma idéia


GOSTEI 0
Aldus

Aldus

05/06/2006

Alguma idéia amigos


GOSTEI 0
POSTAR