Ocultar registro na impressão, mas considerá-lo
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.
[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
Curtidas 0
Respostas
Paulo
05/02/2004
aguardo respostas
GOSTEI 0
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.
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
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).
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
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....
:(
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
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?
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
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?
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
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.
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
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:
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