Ir para conteúdo
Fórum Script Brasil
  • 0

Montar array


Guest --junior.ds --

Pergunta

Guest --junior.ds --

Boa tarde a todos!

Tenho uma tabela com registros cujo código tem o seguinte fomato:

1.001.0001

1.001.0002

1.002.0001

1.002.0002

1.003.0001

1.003.0002

Queria colocar em um array os registros com o codigo até : '1.001' , '1.002', etc.

E em outro array o codigo completo, no formato: '1.001.0001' .

Pois, estou montando um relatorio de plano de contas e estou identado os valores.

Já tentei fazer assim :

while not qyRec.Eof do
   begin
      if (copy(qyRelPlanConcdPlano.AsString,1,1) = '1')  then
        begin
          totalRec := totalRec + qyRecvlLiqui.AsFloat;
          QRLabel10.Caption := 'R$ '+floattostr(totalRec);
        end;
      for i:=0 to 100  do
        begin
          if (trim(copy(qyRelPlanConcdPlano.AsString,1,5))  <>  cdFormato1[i]) and (trim(copy(qyRelPlanConcdPlano.AsString,1,5)) <> '1.   ') then
            begin
             cdFormato1[i] := copy(qyRelPlanConcdPlano.AsString,1,5);
             subRec[i] := subRec[i] + qyRecvlLiqui.AsFloat;
            end
          else
             subRec[i] := subRec[i] + qyRecvlLiqui.AsFloat;
          QRLabel10.Caption := 'R$ '+floattostr(subRec[i]);
        end;
     
   qyRec.Next;
   end;

Mas não tá armazenando nos arrays os valores.

Link para o comentário
Compartilhar em outros sites

5 respostass a esta questão

Posts Recomendados

  • 0

Sou iniciante em delphi, por isso, desconsidere a resposta caso falei besteira.

Pelo que pude ver os arrays são:

cdFormato1 e

subRec.

Se assim for surge uma pergunta fundamental: Aonde é que você está incrementando o ?

É preciso corre os arrays para poder armazenar os dados.

Se é esse o problema, talvez bastasse colocar um i := i + 1 no final do while.

Espero ter ajudado.

Link para o comentário
Compartilhar em outros sites

  • 0

Junior, pelo que entendir você tem uma tabela e quer soma os valores do registro da mesma, dependendo do Codigo "PlanConcPlano.AsString" a primeira condição é que o codigo inicie com "1" e a segunda opção não entendir "1. "

if (trim(copy(qyRelPlanConcdPlano.AsString,1,5))  <>  cdFormato1[i]) and (trim(copy(qyRelPlanConcdPlano.AsString,1,5)) <> '1.   ') then

Da forma em que estar sendo feito você estar pegando os valores e atualizando a cada While deve ser jogada no "QRlabel10.caption" depois do While, e você estar usando duas query, post mais informações sobre as querys,

Link para o comentário
Compartilhar em outros sites

  • 0
Guest --junior.ds --

Bem...

estou tentando montar um relatório de Plano de contas, estou usando três tabelas: tbPlanoContas, tbContasPagar e tbContasReceber.

A ADOQuery que uso para chamar o relatório é a que pega os campos da tbPlanoContas.

Nessa tbPlanoContas tenho os códigos no seguinte formato:

Receitas 1. .

Contratos 1.001.

Contratos X 1.001.0001

Contratos Y 1.001.0002

Vendas 1.002.

Computador 1.002.0001

Despesas 2. .

Material Escritorio 2.001.

Papel Timbrado 2.001.0001

estou querendo montar dois arrays:

1- para receber os subtotais onde os codigos têm o formato citado acima: por ex. '1.001'

2 - para receber os valores, por ex., do contrato X, contratos Y. Ou seja onde o código tem o formato '1.001.0001' (exemplo)

Meu código do evento BeforePrint da QRBand (Detail) que mostrar os dados tá assim :

procedure TfrRelPlanCon.QRBand2BeforePrint(Sender: TQRCustomBand;
  var PrintBand: Boolean);

type
TRec = record
    cod: integer;
    des: string;
    val: real;
end;
var
  Rec: array of TRec;
var
 totalRec: real;  //total recebido
 totalPag: real; //total pago
 subRec: array[1..1000] of real; //subtotal recebido
 subPag: real; //subtotal pago
 cdFormato1: array[1..1000] of string;
 i, j: integer; //contadores
begin

  //identando a descrição d plano
  if  length(Trim(qyRelPlanConcdPlano.AsString)) = 6 then
     begin
       QRDBText6.Left := 120;
       QRLabel10.Left := 550;
     end;
  if  (copy(qyRelPlanConcdPlano.AsString,1,3) = '1. ') or (copy(qyRelPlanConcdPlano.AsString,1,3) = '2. ') then
     begin
       QRDBText6.Left := 88;
       QRLabel10.Left := 500;
     end;
  if  length(Trim(qyRelPlanConcdPlano.AsString)) = 10 then
     begin
       QRDBText6.Left := 180;
       QRLabel10.Left := 600;
     end;

  qyRec.Close;
  qyrec.SQL.Clear;
  qyRec.SQL.Add('select * from tbContasReceber');
  qyrec.Open;

  //i recebe o numero de registros da tbContasReceber que será o tamanho do array Rec
  while not qyrec.Eof do
    begin
      i := i + 1;
      qyrec.Next;
    end;
  setlength(Rec, i);



  qyDes.Close;
  qyDes.SQL.Clear;
  qyDes.SQL.Add('select * from tbContasPagar');
  qyDes.Open;

      j:=0;
      while not qyRec.Eof do
       begin
          if (copy(qyRelPlanConcdPlano.AsString,1,1) = '1')  then
            begin
              totalRec := totalRec + qyRecvlLiqui.AsFloat;
              QRLabel10.Caption := 'R$ '+floattostr(totalRec);
            end;


          if (qyRecidPlano.AsInteger = qyRelPlanConidPlano.AsInteger) and
               (trim(copy(qyRelPlanConcdPlano.AsString,1,5))  <>  rec[j].des) then
            begin
               rec[j].des := copy(qyRelPlanConcdPlano.AsString,1,5);
               rec[j].val := rec[i].val + qyRecvlLiqui.AsFloat;
            end
          else
            Rec[j].val := Rec[i].val + qyRecvlLiqui.AsFloat;
        QRLabel10.Caption := 'R$ '+floattostr(Rec[i].val);
       qyRec.Next;
       j := j+1;
       end;






  while not qyDes.Eof do
   begin
      if (copy(qyRelPlanConcdPlano.AsString,1,1) = '2')  then
        begin
          totalPag := totalPag + qyDesvlLiqui.AsFloat;
          QRLabel10.Caption := 'R$ '+floattostr(totalPag);

        end;
   qyDes.Next;
   end;

end;

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,1k
    • Posts
      651,8k
×
×
  • Criar Novo...