DevMedia - asp.net, Java, Delphi, SQL e web Design, tudo em um só lugar!
Bem vindo a DevMedia!
LOGIN:     SENHA:
 
 

Fórum DevMedia


Autor
Mensagem
jose maria
 

País: Brasil
Estado: MG
Cidade: manhumirim
Mensagens: 99
 Postado em: 29/4/2011 10:06:21 AM

bom dia pessoal, estou fazendo um form de reajuste de precos..onde tenho um dblookupcombobox, 1 edit (percentual de aumento) e o botao confirmar...ou seja o usuario vai fazer o reajuste de preços de venda por grupo automaticamente, assim que informar o percentual de aumento no grupo selecionado, os preços de venda dos produtos que fazem parte do grupo que o usuario selecionou sera alterado...estou tentando mas nao deu certo...minha tabela esta assim:

tabela produtos:

codprod (chave primaria)
codgrupo(chave estrangeira)
precovenda
.....

tabela grupos
codgrupo(chave primaria)
grupo
....

desde ja agradeço.. Uso o delphi/Mysql com adoconection e adoquery...

Wilson Lehapan Junior, vulgo Paulista...!!!
 
 
 


País: Brasil
Estado: RS
Cidade: Caxias do Sul
Mensagens: 1574
 Postado em: 29/4/2011 11:32:03 AM
Teste assim
#Código

UPDATE PRODUTOS
SET PrecoVenda = PrecoVenda + ( (PrecoVenda/100) * PercReajuste)
WHERE
  CodGrupo = (SELECT CodGrupo FROM GRUPOS WHERE Grupo = GrupoSelecionado)


Espero ter colaborado

 
jose maria
 

País: Brasil
Estado: MG
Cidade: manhumirim
Mensagens: 99
 Postado em: 1/5/2011 11:09:49 AM
bom dia wilson...cara esta dando erro de sintaxe...este percentual reajuste nao seria uma valor fixo? pois preciso fazer com que calcule pelo valor do reajuste que o usuario vai digitar no edit certo...ai que esta pegando... veja o codigo do botao confirmar:
 
procedure Tfrmreajustar.SpeedButton1Click(Sender: TObject);
//var
//percentual:double;
//codgrupo:integer;
begin
with dmpedidos.ADOQueryreajustar do
    begin
    Close;
    SQL.Add('update produtos set precovenda + ((precovenda/100) * ??? '); duvidas
    SQL.Add('where codgrupo =(select codgrupo from grupos where grupo = grupo');
    //Parameters.ParamByName('percentual').Value := edit1;
    //Parameters.ParamByName('codgrupo').Value := dmpedidos.adoquerygrupocodgrupo.assva;
    ExecSQL;
    open;
    end;
 
coloquei o mesmo codigo na adoquery q esta no datamodule...
 

update produtos set precovenda =

precovenda + ((precovenda/100) * 0,05) (aqui fica o percentual certo? mas ai seria um valor fixo, e o usuario que vai informar no edit do form de reajuste ok)

where codgrupo = (select codgrupo from grupos where grupo = grupo)

aguardo retorno....desde ja agradeço...


 
Wilson Lehapan Junior, vulgo Paulista...!!!
 
 
 


País: Brasil
Estado: RS
Cidade: Caxias do Sul
Mensagens: 1574
 Postado em: 2/5/2011 8:15:25 AM
Veja se é isto que você precisa
#Código

procedure Tfrmreajustar.SpeedButton1Click(Sender: TObject);
begin
  with dmpedidos.ADOQueryreajustar do
  begin
    Close;
    SQL.Add('update produtos set precovenda + ((precovenda/100) * :percentual ');
    SQL.Add('where codgrupo = :codgrupo');
    Parameters.ParamByName('percentual').Value := StrToFloatDef( edit1.Text, 0 );
    Parameters.ParamByName('codgrupo').Value := dmpedidos.adoquerygrupocodgrupo.AsInteger;
    ExecSQL;
  end;
end;


Espero ter colaborado.

 
jose maria
 

País: Brasil
Estado: MG
Cidade: manhumirim
Mensagens: 99
 Postado em: 7/5/2011 10:32:43 AM
 
da este erro no codigo sql....
 
aguardo retorno....desde ja agradeço por ajudar...

 
Wilson Lehapan Junior, vulgo Paulista...!!!
 
 
 


País: Brasil
Estado: RS
Cidade: Caxias do Sul
Mensagens: 1574
 Postado em: 9/5/2011 8:18:11 AM
Troquei o sinal do SET.
#Código

procedure Tfrmreajustar.SpeedButton1Click(Sender: TObject);
begin
  with dmpedidos.ADOQueryreajustar do
  begin
    Close;
    SQL.Add('update produtos set precovenda = ((precovenda/100) * :percentual ');
    SQL.Add('where codgrupo = :codgrupo');
    Parameters.ParamByName('percentual').Value := StrToFloatDef( edit1.Text, 0 );
    Parameters.ParamByName('codgrupo').Value := dmpedidos.adoquerygrupocodgrupo.AsInteger;
    ExecSQL;
  end;
end;


Espero ter colaborado.

 
jose maria
 

País: Brasil
Estado: MG
Cidade: manhumirim
Mensagens: 99
 Postado em: 9/5/2011 11:02:19 AM
bom dia Wilson,,,cara esta dando erro no sql....
" COMMANDTEXT DOES NOT RETURN A RESULT SET"
NAO ESTOU CONSEGUINDO  CORRIGIR ESTE ERRO...
AGUARDO RETORNO...
 
 

 
Wilson Lehapan Junior, vulgo Paulista...!!!
 
 
 


País: Brasil
Estado: RS
Cidade: Caxias do Sul
Mensagens: 1574
 Postado em: 9/5/2011 11:10:53 AM
Você não pode utilizar o OPEN e sim, deve utilizar o ExecSQL.
Qualquer coisa coloque aqui o seu código.

Espero ter colaborado.

 
jose maria
 

País: Brasil
Estado: MG
Cidade: manhumirim
Mensagens: 99
 Postado em: 9/5/2011 11:34:54 AM
executei o sistema e quando vou testar um reajuste da a seguinte mensagem?
 
segue o codigo do botao confirmar:
 
procedure Tfrmreajustar.SpeedButton1Click(Sender: TObject);
begin
with dmpedidos.ADOQueryreajustar do
    begin
    Close;
    SQL.Add('update produtos set precovenda = ((precovenda/100) * :percentual');
    SQL.Add('where codgrupo = :codgrupo');
    Parameters.ParamByName('percentual').Value:= strtofloatdef (edit1.Text, 0);
    Parameters.ParamByName('codgrupo').Value := dmpedidos.adoquerygrupocodgrupo.Value;
    ExecSQL;
    //open;
    end;
    end;
 
segue o codigo da adoquery no datamodule
 

update produtos set precovenda = ((precovenda/100) * :percentual)

where codgrupo = :codgrupo


 
Wilson Lehapan Junior, vulgo Paulista...!!!
 
 
 


País: Brasil
Estado: RS
Cidade: Caxias do Sul
Mensagens: 1574
 Postado em: 9/5/2011 1:19:48 PM
Se não me engano o StrToFloat retorna um valor conforme os pontos e vírgula, verifique se este valor esta retornando corretamente, pois ele não está conseguindo passar o valor do percentual para o parâmetro.

Espero ter colaborado.

 
jose maria
 

País: Brasil
Estado: MG
Cidade: manhumirim
Mensagens: 99
 Postado em: 9/5/2011 3:30:27 PM
nao esta retornando nada...continua dando o erro...socorro....

 
Wilson Lehapan Junior, vulgo Paulista...!!!
 
 
 


País: Brasil
Estado: RS
Cidade: Caxias do Sul
Mensagens: 1574
 Postado em: 9/5/2011 5:23:48 PM
#Código

procedure Tfrmreajustar.SpeedButton1Click(Sender: TObject);
begin
  with dmpedidos.ADOQueryreajustar do
  begin
    Close;
    SQL.Add('update produtos set precovenda = ((precovenda/100) * :percentual ');
    SQL.Add('where codgrupo = :codgrupo');
    Parameters.ParamByName('percentual').Value := StrToFloatDef( TRIM(StringReplace(edit1.Text, ThousandSeparator,'',[rfReplaceAll])), 0 );
    Parameters.ParamByName('codgrupo').Value := dmpedidos.adoquerygrupocodgrupo.AsInteger;
    ExecSQL;
  end;
end;


Espero ter colaborado.

 
jose maria
 

País: Brasil
Estado: MG
Cidade: manhumirim
Mensagens: 99
 Postado em: 17/5/2011 7:07:30 PM
boa noite...Wilson....está dando o mesmo erro....(erro postado na imagem anterior)...aguardo retorno....desde ja agradeço por ajudar...

 
RAFAEL CARVALHO GOMES
 

País: Brasil
Estado: BA
Cidade: BARREIRAS
Mensagens: 2
 Postado em: 21/5/2011 11:34:23 PM
peguei o barco andando, mas acho que isso resolve!! teste aii.

procedure Tfrmreajustar.SpeedButton1Click(Sender: TObject);
begin
  with dmpedidos.ADOQueryreajustar do
  begin
    Close;
    SQL.clear;
    SQL.Add('update produtos set precovenda = ((precovenda/100) * '+StrToFloatDef( edit1.Text, 0 ) );
    SQL.Add('where codgrupo = 'dmpedidos.adoquerygrupocodgrupo.AsInteger);
    ExecSQL;
  end;
end;


 
RAFAEL CARVALHO GOMES
 

País: Brasil
Estado: BA
Cidade: BARREIRAS
Mensagens: 2
 Postado em: 21/5/2011 11:36:06 PM

Citação:
peguei o barco andando, mas acho que isso resolve!! teste aii.

procedure Tfrmreajustar.SpeedButton1Click(Sender: TObject);
begin
  with dmpedidos.ADOQueryreajustar do
  begin
    Close;
    SQL.clear;
    SQL.Add('update produtos set precovenda = ((precovenda/100) * '+StrToFloatDef( edit1.Text, 0 ) );
    SQL.Add('where codgrupo = ' + inttostr(dmpedidos.adoquerygrupocodgrupo.AsInteger));
    ExecSQL;
  end;
end;


 
jose maria
 

País: Brasil
Estado: MG
Cidade: manhumirim
Mensagens: 99
 Postado em: 27/5/2011 11:59:42 AM
bom dia...rafael esta dando erro de sintaxe....
aguardo retorno...

 
Wilson Lehapan Junior, vulgo Paulista...!!!
 
 
 


País: Brasil
Estado: RS
Cidade: Caxias do Sul
Mensagens: 1574
 Postado em: 27/5/2011 1:53:13 PM
Tem um parenteses a mais, então troque de:
#Código

SQL.Add('update produtos set precovenda = ((precovenda/100) * ' + StrToFloatDef( edit1.Text, 0 ) );


para:
#Código

SQL.Add('update produtos set precovenda = (precovenda/100) * ' + StrToFloatDef( edit1.Text, 0 ) );


Espero ter colaborado.

 
web-03
DevMedia  |  Anuncie  |  Fale conosco
Hospedagem web por Porta 80 Web Hosting
2013 - Todos os Direitos Reservados a web-03