Fórum A onde esta o erro neste bloco? #405615
26/07/2011
0
Pessoal, alguém consegue localizar neste bloco aqui, o pq quando seleciono o checked "RbVendaCliente" faz o update certinho, mais quando cai nesta condição
"RbVendaProfissional" por mais que ja debuguei, olhei a instrução do Update, verifiquei o campo, quando entra nesta condição ai, atualiza os dois campos
"PRECO_DE_VENDA" e o "PRECO_PARA_REVENDA", aonde deveria apenas atualizar o campo "PRECO_PARA_REVENDA"
Obrigado
"RbVendaProfissional" por mais que ja debuguei, olhei a instrução do Update, verifiquei o campo, quando entra nesta condição ai, atualiza os dois campos
"PRECO_DE_VENDA" e o "PRECO_PARA_REVENDA", aonde deveria apenas atualizar o campo "PRECO_PARA_REVENDA"
procedure TF_Ajuste_Preco.ConfirmarPrecos;
function GetExecuteUpdate(sTable, sField: String): String;
begin
Result := ' UPDATE '+ sTable +' SET '+ sField +' = '
end;
begin
if CdsAtualiza.Active then
begin
Screen.Cursor := crHourGlass;
PrBar.Max := CdsAtualiza.RecordCount;
PrBar.Position := 0;
try
CdsAtualiza.DisableControls;
CdsAtualiza.First;
if not IBTrUpDate.InTransaction then
IBTrUpDate.StartTransaction;
DecimalSeparator := '.';
while not CdsAtualiza.Eof do
begin
if CdsAtualizaIC_NOVO_VALOR.Ascurrency <> 0 then
begin
IbUpdate.Close;
if RbVendaCliente.Checked then
begin
if RbProdutos.checked then
IbUpDate.SQL.Text := GetExecuteUpdate('PRODUTOS','PRECO_DE_VENDA') +
QuotedStr(FormatFloat('#0.00',CdsAtualizaIC_NOVO_VALOR.AsCurrency)) +
' where CODIGO = '+QuotedStr(CdsAtualizaCODIGO.AsString)+''
else
if RbServicos.Checked then
IbUpDate.SQL.Text := GetExecuteUpdate('SERVICOS','PRECO_DE_VENDA') +
QuotedStr(FormatFloat('#0.00',CdsAtualizaIC_NOVO_VALOR.AsCurrency)) +
' where CODIGO = '+QuotedStr(CdsAtualizaCODIGO.AsString)+''
end
else
if RbVendaProfissional.Checked then
begin
if RbProdutos.checked then
IbUpDate.SQL.Text := GetExecuteUpdate('PRODUTOS','PRECO_PARA_REVENDA') +
QuotedStr(FormatFloat('#0.00',CdsAtualizaIC_NOVO_VALOR.AsCurrency)) +
' where CODIGO = '+QuotedStr(CdsAtualizaCODIGO.AsString)+''
else
if RbServicos.Checked then
IbUpDate.SQL.Text := GetExecuteUpdate('SERVICOS','PRECO_PARA_REVENDA') +
QuotedStr(FormatFloat('#0.00',CdsAtualizaIC_NOVO_VALOR.AsCurrency)) +
' where CODIGO = '+QuotedStr(CdsAtualizaCODIGO.AsString)+''
end;
IbUpDate.ExecSQL;
end;
CdsAtualiza.Next;
PrBar.Position := PrBar.Position +1;
end;
CdsAtualiza.EnableControls;
IBTrUpDate.Commit;
Screen.Cursor := CrDefault;
Confirmou := True;
Limpar;
except
begin
IBTrUpDate.Rollback;
Screen.Cursor := CrDefault;
Confirmou := true;
end;
end;
end;
PrBar.Position := 0;
DecimalSeparator := ',';
end;Obrigado
Adriano Dolce
Curtir tópico
+ 0
Responder
Posts
26/07/2011
Adriano Dolce
Achei o problema, é uma trigger que esta disparando aqui
Mais como arrumo esta trigger para ela funcionar de acordo com o que selecionar
Uso firebird 1.5
Obrigado
Mais como arrumo esta trigger para ela funcionar de acordo com o que selecionar
CREATE TRIGGER AJUSTE_PRECO_HISTORICO_AI FOR AJUSTE_PRECO_HISTORICO ACTIVE AFTER INSERT POSITION 0 AS BEGIN IF (NEW.TIPO_PEDIDO = 'Serviço') THEN BEGIN UPDATE SERVICOS SET PRECO_DE_VENDA = NEW.VALOR_POSTERIOR WHERE CODIGO = NEW.CODIGO_PEDIDO; END ELSE IF (NEW.TIPO_PEDIDO = 'Produto') THEN BEGIN UPDATE PRODUTOS SET PRECO_DE_VENDA = NEW.VALOR_POSTERIOR WHERE CODIGO = NEW.CODIGO_PEDIDO; END ELSE IF (NEW.TIPO_PEDIDO = 'Pacotes') THEN BEGIN UPDATE ESTETICA_PACOTES SET PRECO_DE_VENDA = NEW.VALOR_POSTERIOR WHERE CODIGO = NEW.CODIGO_PEDIDO; END END
Uso firebird 1.5
Obrigado
Responder
Gostei + 0
26/07/2011
Adriano Dolce
Esquece pessoal, ja resolvi, criando um novo campo na tabela Historico aonde posso criar mais uma condição no IF
Obrigado a todos.
Obrigado a todos.
Responder
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)