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

(Resolvido) Como Salvar um campo atribuindo um caption nele e o v


robinhocne

Pergunta

Bom,

Deixa eu tentar explicar!

Na tabela de lancamentos para eu fazer os lancamentos de "x" parcelas eu uso um grid para vizualizar as parcelas geradas, o grid (DbgLan) é ligado pelo datasource (DtsLan) e o datasource é ligado um RxMemoryData (TblPar):

Na tabela de Lancamentos eu tenho os seguintes campos:

Quantidade de Parcelas = 3 ** No caso aqui eu falo quantos parcelas eu quero gerar aqui no caso 3 igual no Dbgrid

Valor = 100,00 ** Valor das parcelas

1ªVencimento = 19/11/2007 ** no caso o primeiro vencimento da 1ªparcela e assim gera os restantes vencimentos.

Nesse grid eu tenho uma vizualização assim:

Par        Vencimento       Valor
  1         19/11/2007      100,00
  2         19/12/2007      100,00
  3         19/01/2008      100,00
No Botão (SpbGePar) é o botão que gera as parcelas e mostra no grid (dbglan), esses são os dados dele:
procedure Tfrmcadlan.SpbGeParClick(Sender: TObject);
var a, prazo : integer; data : TDate;
begin
   if ( not tblPar.Active ) then tblPar.Open else tblPar.EmptyTable;

   data  := StrToDate( txtVen.Text );

   prazo := 30;

   for a := 1 to StrToInt( txtPar.Text ) do
   begin
      with tblPar do
      begin
         Insert;
         Fields[00].AsInteger  := a;
         Fields[01].AsDateTime := data;
         Fields[02].AsCurrency := StrToFloat( txtVal.Text );
         Post;
      end;
      data := ( data + prazo );
   end;
end;
E para salvar isso tudo:
procedure Tfrmcadlan.spbsalClick(Sender: TObject);
var vCod, vNom : String;
begin
   with vcpo do
     begin
        clear;
        add ('Aluno');
        add ('Parcela');
        add ('Valor');
        add ('Vencimento');
        add ('Emissao');
     end;

   tblPar.First;
   while ( not tblPar.eof ) do
   begin
      with vvlr do
      begin
         clear;
         add (#39 + TxtCod.Text + #39);
         Add ( tblPar.Fields[00].AsString );
         Add ( TiraMascara( FormatFloat( '#########,##', tblPar.Fields[02].AsCurrency ) ) );
         add (#39 + FormatDateTime ('mm/dd/yyyy', tblPar.Fields[01].AsDateTime ) + #39);
         add (#39 + FormatDateTime ('mm/dd/yyyy', StrToDate ( TxtEmi.Text ) ) + #39);
      end;

      incluirregistro ('Lancamento', vcpo, vvlr);
      tblPar.Next;

   end;

   vCod := txtCod.Text;
   vNom := txtAlu.Text;

   inherited;

      tblPar.close;
end;
Então o que eu quero depois dessa explicação é o seguinte, gostaria em onde eu vizualizo as parcelas tipo parcela...1,2,3 etc aparecesse assim, 1ªparcela, 2ªparcela, 3ªparcela e etc, o campo parcela na tabela de dados era numeric (2,0), mas já mudei para varchar (30). Em vez de ser assim no grid e para salvar:
Par        Vencimento       Valor
  1         19/11/2007      100,00
  2         19/12/2007      100,00
  3         19/01/2008      100,00
Seria assim:
Parcelas          Vencimento       Valor
  1ª Parcela         19/11/2007      100,00
  2ª Parcela         19/12/2007      100,00
  3ª Parcela         19/01/2008      100,00

Como eu poderia fazer dessa maneira tipo eu já deixar algo dito na coluna da parcela que é parcela e atribuir a qual parcela será na frente?

Link para o comentário
Compartilhar em outros sites

Posts Recomendados

  • 0
Micheus, está dando esse erro:

'SQL Error code = -104

Token Unknow - line 1, char 108 %'

robinhocne, como você pode agora observar, esta mensagem "falando" apenas do caracter "%" pode ficar meio vaga e de difícil auxílio na solução.

Mas, com o pouco que avançamos on-line, já deu para perceber que ela deve-se ao fato de na sua string SQL haver a sequência "%.2' como um dos parâmetros.

Baseado nisto, e refletindo um pouco sobre a questão, fica logo claro que há algum problema com aquela parte em que o número é formatado utilizando a função Format. Bom, a única possibilidade de esta sequência ter aparecido deste modo é que ela não tenha sido entendida pela função e eu pediria para você confirmar ser acrescentou o "f" após a sequência:

Add (Format('%.2f', [tblPar.Fields[02].AsFloat]));

A sua ausência seria a primeira explicação para o "problema".

Abraços

Link para o comentário
Compartilhar em outros sites

  • 0
Micheus, está dando esse erro:

'SQL Error code = -104

Token Unknow - line 1, char 108 %'

robinhocne, como você pode agora observar, esta mensagem "falando" apenas do caracter "%" pode ficar meio vaga e de difícil auxílio na solução.

Mas, com o pouco que avançamos on-line, já deu para perceber que ela deve-se ao fato de na sua string SQL haver a sequência "%.2' como um dos parâmetros.

Baseado nisto, e refletindo um pouco sobre a questão, fica logo claro que há algum problema com aquela parte em que o número é formatado utilizando a função Format. Bom, a única possibilidade de esta sequência ter aparecido deste modo é que ela não tenha sido entendida pela função e eu pediria para você confirmar ser acrescentou o "f" após a sequência:

Add (Format('%.2f', [tblPar.Fields[02].AsFloat]));

A sua ausência seria a primeira explicação para o "problema".

Abraços

Está sim, esta dessa maneira:

Add (FormatFloat('%.2f', tblPar.Fields[02].AsFloat));

Link para o comentário
Compartilhar em outros sites

  • 0
Então. Olha a tal da desatenção. <_<

Leia o que você postou e o que eu sugeri.

Por acaso você não está utilizando a função errada não?! :blink:

É que eu fui fazendo uns testes, com o tipo de formatação e assim que você me passou dá aquele mesmo erro do incio:

SQL Error code = - 804
Count of columns does not equal count of values

Está dizendo que tem mais colunas tipo no vcpo do que no Vvlr, mas já fiz de tudo e nada, se possivel você me ajudar ou analisar on-line, agradeço. :unsure: :huh:

Link para o comentário
Compartilhar em outros sites

  • 0

Ok Resolvido

Obrigado pela ajuda e uma aulinha rápida Micheus, acabei aprendendo um pouco mais e o que eu nem sabia!

Bom o que foi feito para resolver o problema dê incial do assunto que era o erro:

SQL Error code = - 804

Count of columns does not equal count of values

Bom os valores a serem gravados eram separados por "," (Virgula) e então ele estava lendo dessa maneira:

'000001','1','250,00','01/01/2008','12/20/2007','1'

Então em 250,00 ele estava lendo essa separação

Para resolver foi feito o seguinte fez o programa lê a "," (Virgula) como "." (Ponto), então ficou assim:

Add (AnsiReplaceStr(Format('%.2f', [tblPar.Fields[02].AsFloat]), ',', '.'));

E foi colocado em uso a unit StrUtils

Link para o comentário
Compartilhar em outros sites

  • 0

E para complementar...

Cabe salientar que fiz um comentário equivocado lá no post #18 (grifado), o que também colaborou para a demora em corrigir o problema:

- se a informação agora for gravada corretamente, então tem algum problema com o procedimento que você utiliza para transformar o valor em texto. Se o objetivo é converter o campo que é numérico, para uma string, lembre-se que não deverá estar no formato de milhar - deve apenas conter o separador decimal e que neste caso deverá ser o ponto. Assim, sendo, experimente chamar desta forma:

...
         Add (#39 + tblPar.Fields[00].DisplayText + #39);
         Add (Format('%.2f', [tblPar.Fields[02].AsFloat]));  // <=================== AQUI
         add (#39 + FormatDateTime ('mm/dd/yyyy', tblPar.Fields[01].AsDateTime ) + #39);
...

onde a string de formatação "%.2f" significa que você estará formatando um float com 2 casas decimais (observe o número 2 após o ".") e a string retornada não fará a substituição do separador decimal. Ou seja, o separador será o ponto ("."), mesmo que esteja configurado em seu Windows para ser a vírgula.

Desculpem-me e observem que a função format, ao contrário do que disse, utilizará também o separador de decimal configurado no Windows (normalmente a ",").

Abraços

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,3k
    • Posts
      652,4k
×
×
  • Criar Novo...