Fórum Ocultar registro na impressão, mas considerá-lo #211880

05/02/2004

0

Tenho um campo descrição, onde estão os meu dados. Um desses dados, não pode ser impresso, mas ele deve fazer parte do somatório final. Coloquei um asterisco no final da string e fiz assim no OnPrint do QRDBText:

[color=green:9f5b417c7c]if copy(TabelaCampo.asstring, length(tabelacampo.asstring),1) = ´*´ then begin
tabelacampo.asstring.visible:=false;
end;[/color:9f5b417c7c]

Fiz no OnPrint do QRDBText, no BeforePrint do QRPT e nada feito. Além dele não aparecer, para não dar erro no somatório final, pois o cliente vai conferir e vai ver que tem um valor a mais sendo cobrado que não aparece, então ele deve ser dividido pela quantidade de itens vendidos e somado ao preço total por coluna, para depois ser somado no final. Não estou conseguindo fazer nada.
Uso ADO com ACCESS. Disseram-me para usar SQL com WHERE, mas WHER é cláusula de condição, o que não daria certo, pois a impressão não depende de condição e sim de um registro não ser impresso. NÃO É OCULTAR UM CAMPO, MAS SIM UM REGISTRO E ESTE DEVE SER CALCULADO(CONTADO) COM OS OUTROS.


Paulo

Paulo

Responder

Posts

05/02/2004

Paulo

aguardo respostas


Responder

Gostei + 0

05/02/2004

Paulo

Explicando melhor:
O cliente ele vende computador e faz entrega que é cobrada, só que no relatório de venda ou orçamento, a palvra entrega não pode aparecer, mas tem que ser cobrado o valor. Como ela está sendo cobrada e não aparece, caso o cliente resolva somar, vai ver que foi cobrado um valor a mais. Aí que eu devo dividir o valor da entrega pelos demais itens vendidos e somar a cada preço de cada produto para não aparecer a diferença no somatório total. Creio que agora me expliquei melhor.


Responder

Gostei + 0

05/02/2004

Everton

Pelo que entendi, você simplesmente não quer que o campo ENTREGA apareça no relatório quando a última letra for o asterisco, então acho que o código abaixo deve te ajudar.

Coloque no BeforePrint da banda onde se encontra o QRDBText do campo entrega (chamei de qdtEntrega).

qdtEntrega.Enabled := (copy(TabelaCampo.AsString, Length(TabelaCampo.AsString),1) = ´*´);

Assim, quando a última letra for * o campo será impresso (Enabled = True), caso contrário, não será (Enabled = False).


Responder

Gostei + 0

05/02/2004

Carlos Bernardo

Mesmo não pactuando com a sua idéia de lesionar o cliente final, pois afinal, seremos o cliente final...talvez eu possa ajudar...

usando sua condição

if copy(TabelaCampo.asstring, length(tabelacampo.asstring),1) = ´*´ then begin
qrdbtext.font.color := clWithe;
end;

espero ter te ajudado a resolver um problema e não a :( enganar o povo....
:(


Responder

Gostei + 0

06/02/2004

Paulo

Esta pergunta eu fiz a ele, se é legal ou não? Não são todas as máquinas que ele cobra a entrega, há um critério e eu concordei, dentro deste critério estabelecido por ele. A quetão não é lesionar, segundo o comprador do software. É como, segundo ele, vc comprar um produto e levar de brinde outro. Vc acha q este outro é de graça? Ele é omitido. Eu apenas faço software, e espero não estar quebrando nenhuma regra. Bem deixemos isso de lado pois foge aos objetivos deste forum.
Quanto a omitir a string, já consegui, fazendo assim no OnPrint do QRDBText:

if copy(TabelaCampo.asstring, length(tabelacampo.asstring),1) = ´*´ then begin
value:=´´;
end;
Agora, como dividir o valor da entrega(R$23,00, por exemplo) pela qde de itens vendidos e somar ao preço de cada item?


Responder

Gostei + 0

06/02/2004

Aroldo Zanela

Colega,

Não sei se entendi corretamente, mas você quer apenas fazer o rateio do valor da entrega em cada item comprado, ou seja, o valor da entrega deve ser rateado para todos os produtos constantes da nota fiscal/pedido.
Não é nenhuma mágica do tipo: 1+1+1 = 2? ou melhor 1+1=3?


Responder

Gostei + 0

09/02/2004

Paulo

Não, não é isso: O valor deve ser rateado pelos valores de cada item, e depois o samatório de tudo, com o valor rateado. Comigo está dando um erro no loop, ou seja, o valor está somando ao primeiro item e só:

a:2,3;//a é valor rateado
tabela.first;
while not tabela.eof do begin
tabelavaloritem.value:=tabelavaloritem.value+a;
tabela.next;
end;
Assim não está funcionando. Se eu colocar a variável ´a´ dentro do loop, também não funciona. Uso ACCESS com ADO.


Responder

Gostei + 0

09/02/2004

Fabio.hc

Vc quer só imprimir?

Tente assim: No QRDBText do valor vc soma o rateio, já que vc já tem o valor que será rateado para todos os itens.

Ex:
procedure TForm1.QRDBText1Print(sender: TObject; var Value: String);
begin
   value:=floattostr(strtofloat(value) + 2.3);
end;



Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar