Fórum não consigo ver o erro #293460
28/08/2005
0
Promocao, valorreal, oTotal, oTotal1, oTotal2, oTotal3 : Double;
_sNomeClienteECF, sTotal, sTotal1, sTotal2, sTotal3,inicio, final : String;
begin
DateTimePicker1.Date := now;
inicio := DateToStr(DateTimePicker1.Date);
final := DateToStr(Date);
//seleciona ultima venda
QueryVen.SQL.Clear;
QueryVen.SQL.Add(´Select ChaveVenda´);
QueryVen.SQL.Add(´From VenItens´);
QueryVen.open;
QueryVen.Last;
//seleciona os produtos da venda
SQLGeral.Close;
SQLGeral.SQL.Clear;
SQLGeral.SQL.Add(´Select CodigoProduto, Qtde, ValorUnitario, Preco_Promocao, Inicio_Promocao, Fim_Promocao ´);
SQLGeral.SQL.Add(´From VenItens, Produtos´);
SQLGeral.SQL.Add(´Where ChaveVenda = ´+ QueryVen.FieldByName(´ChaveVenda´).AsString);
SQLGeral.SQL.Add(´and (Codigo = CodigoProduto)´);
SQLGeral.open;
//seleciona os produtos em promoção
Query1.Close;
Query1.SQL.Clear;
Query1.SQL.Add(´Select CodigoProduto, Qtde, ValorUnitario, Preco_Promocao, Inicio_Promocao, Fim_Promocao ´);
Query1.SQL.Add(´From VenItens, Produtos´);
Query1.SQL.Add(´Where ChaveVenda = ´+ QueryVen.FieldByName(´ChaveVenda´).AsString);
Query1.SQL.Add(´and (Codigo = CodigoProduto)´);
Query1.open;
//seleciona os produtos que tem valor diferente de zero na promoção para
Query2.Close;
Query2.SQL.Clear;
Query2.SQL.Add(´Select CodigoProduto, Qtde, ValorUnitario, Preco_Promocao, Inicio_Promocao, Fim_Promocao ´);
Query2.SQL.Add(´From VenItens, Produtos´);
Query2.SQL.Add(´Where ChaveVenda = ´+ QueryVen.FieldByName(´ChaveVenda´).AsString);
Query2.SQL.Add(´and (Codigo = CodigoProduto)´);
Query2.SQL.Add(´and (Preco_Promocao <> 0)´);
Query2.SQL.Add(´and (Fim_Promocao < :pinicio)´);
Query2.ParamByName(´pinicio´).AsDateTime := StrToDate(inicio);
Query2.open;
//seleciona os produtos em promoção com valor zero
Query3.Close;
Query3.SQL.Clear;
Query3.SQL.Add(´Select CodigoProduto, Qtde, ValorUnitario, Preco_Promocao, Inicio_Promocao, Fim_Promocao ´);
Query3.SQL.Add(´From VenItens, Produtos´);
Query3.SQL.Add(´Where ChaveVenda = ´+ QueryVen.FieldByName(´ChaveVenda´).AsString);
Query3.SQL.Add(´and (Codigo = CodigoProduto)´);
Query3.SQL.Add(´and (Preco_Promocao = 0.00)´);
Query3.open;
oTotal := 0;
with SQLGeral do
begin
First;
while not EOF do
begin
sTotal := FormatFloat(´#0.00´, SQLGeral.FieldByName(´ValorUnitario´).Value * SQLGeral.FieldByName(´Qtde´).Value);
oTotal := oTotal + StrToFloat(sTotal);
SQLGeral.Next;
Application.ProcessMessages;
end;
Result := oTotal;
end;
valorreal := oTotal;
if (DateTimePicker1.Date >= Query1.FieldByName(´Inicio_Promocao´).AsDateTime) or (DateTimePicker1.Date <= Query1.FieldByName(´Fim_Promocao ´).AsDateTime)then
Begin
oTotal1 := 0;
with Query1 do
begin
First;
while not EOF do
begin
sTotal1 := FormatFloat(´#0.00´, Query1.FieldByName(´Preco_Promocao´).Value * Query1.FieldByName(´Qtde´).Value);
oTotal1 := oTotal1 + StrToFloat(sTotal1);
Query1.Next;
Application.ProcessMessages;
end;
if oTotal1 = Null then
oTotal1 := 0.00;
Result := oTotal1 ;
end;
end;
oTotal2 := 0;
with Query2 do
begin
First;
while not EOF do
begin
sTotal2 := FormatFloat(´0.00´, Query2.FieldByName(´ValorUnitario´).Value * Query2.FieldByName(´Qtde´).Value);
Query2.Next;
Application.ProcessMessages;
end;
if oTotal2 = Null then
oTotal2 := 0.00;
Result := oTotal2 ;
end;
oTotal3 := 0;
with Query3 do
begin
First;
while not EOF do
begin
sTotal3 := FormatFloat(´0.00´, Query3.FieldByName(´ValorUnitario´).Value * Query3.FieldByName(´Qtde´).Value);
oTotal3 := oTotal3 + StrToFloat(sTotal3);
Query3.Next;
Application.ProcessMessages;
end;
if oTotal3 = Null then
oTotal3 := 0.00;
Result := oTotal3 ;
end;
if (oTotal1 = 0.00) or (oTotal2 = 0.00) or (oTotal3 = 0.00) then
begin
Promocao := (oTotal1 + oTotal2 + oTotal3 )+
(Query2.FieldByName(´ValorUnitario´).Value * Query2.FieldByName(´Qtde´).Value -
Query2.FieldByName(´Preco_Promocao´).Value * Query2.FieldByName(´Qtde´).Value )
end;
Promocao := ((oTotal1 + oTotal2 + oTotal3 ) - oTotal2) +
(Query2.FieldByName(´ValorUnitario´).Value * Query2.FieldByName(´Qtde´).Value -
Query2.FieldByName(´Preco_Promocao´).Value * Query2.FieldByName(´Qtde´).Value );
C_Promocao.Value := valorreal - Promocao ;[/b:6801ea469c]
acontece o seguinte, se uma das variaveis é nula, ele não assume o if , por que será?
ja fiz mil manobras mas nada deu certo, se tento editar a sql, diz que não posso editar um arquivo de leitura.
se alguem puder me dar uma luz agradeço
[]s a todos
Radesenvolvedor
Curtir tópico
+ 0Posts
28/08/2005
Marco Salles
Uma ´luzinha´ no fim do poço...
Vê se pelo menos , na linha onde esta esta variavel com este if , o compilador compila esta instrução ..(Quando isto ocrrer , apos compilar , fica marcado com bolinha azul entende :!: :!: :!: )
Verifique isto e nos retorne
Gostei + 0
28/08/2005
Radesenvolvedor
obrigado desde já, pelo interesse
abraço
Gostei + 0
28/08/2005
Marco Salles
if oTotal1 = Null then :?: :?: :?: Porque esta variavel seria Null.. Ela nunca sera Null...Pois ela foi definida como um [b:d38f5dc610]Double[/b:d38f5dc610] e portanto não faz sentido esta comparação
Teste fazer por exemplo :
oTotal:=null; e voce tera um erro de : conversão inválida...
Sugiro que voce inicialize estas variáveis com um valor improvavel antes delas soferem possiveis alteraçoes, e substitua os teste usando como parametro esse valor improvável , ao inves de null..
Gostei + 0
04/09/2005
Radesenvolvedor
cosegui resalver de uma outra forma
mes de qualquer forma muito obrigado
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)