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: 104
 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: 104
 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 08: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: 104
 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 08:18:10 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: 104
 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: 104
 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 01:19:47 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: 104
 Postado em: 9/5/2011 03:30:26 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 05: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: 104
 Postado em: 17/5/2011 07: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: 104
 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 01: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