Ocultar registro na impressão, mas considerá-lo

Delphi

05/02/2004

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

Curtidas 0

Respostas

Paulo

Paulo

05/02/2004

aguardo respostas


GOSTEI 0
Paulo

Paulo

05/02/2004

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.


GOSTEI 0
Everton

Everton

05/02/2004

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).


GOSTEI 0
Carlos Bernardo

Carlos Bernardo

05/02/2004

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....
:(


GOSTEI 0
Paulo

Paulo

05/02/2004

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?


GOSTEI 0
Aroldo Zanela

Aroldo Zanela

05/02/2004

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?


GOSTEI 0
Paulo

Paulo

05/02/2004

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.


GOSTEI 0
Fabio.hc

Fabio.hc

05/02/2004

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;



GOSTEI 0
POSTAR