Fórum Duvida com o comando Locate? #288603
19/07/2005
0
To com uma duvida com o comando locate
fiz um codigo assim:
begin
if not query4.LOCATE(´codigo´,edit4.TEXT,[]) then
begin
if qry5valor.value <> 0 then
begin
query1.append;
query1.Edit;
query1codigo.value:=500;
query1ref.value:=edit3.text;
query1descricao.value:=´Desconto do INSS´;
query1desconto.value:=strtofloat(edit4.text);
query1.post;
query2.refresh;
query3.refresh;
query4.refresh;
end else
showmessage(´Nao ha valor informado para calculo do INSS´);
end else
query1.Edit;
query1desconto.value:=strtofloat(edit4.text);
query1.post;
query2.refresh;
query3.refresh;
query4.refresh;
end;
Na dbgrid supondo que ja esteja cadastrado o codigo 500 ele deve fazer um locate sobre esse codigo e se ja estiver cadastrado ba dbgrid ele so corrige o valor, caso nao tenha ai sim cria uma nova linha para incluir os valores, mais nao funciona da forma acima.
Se eu fizer assim da erro
if not query4.LOCATE(´codigo´,edit4.TEXT,[500]) then
Minha intençao eh o programa localizar na dbgrid esse codigo 500 para fazer a correçao do valor ou inclusao do valor
Se tiver jeito dessa forma ou de outra agradeceria a ajuda.
Obrigado
Adriano
Adriano_servitec
Curtir tópico
+ 0Posts
19/07/2005
Rjun
Gostei + 0
19/07/2005
Adriano_servitec
procedure TForm6.BitBtn7Click(Sender: TObject);
begin
label13.Caption:=edit1.text+label14.caption+me1.text;
if not query4.LOCATE(´codigo´,edit5.text,[]) then
begin
if qry5valor.value <> 0 then
begin
query1.append;
query1.Edit;
query1codigo.value:=500;
query1ref.value:=edit3.text;
query1descricao.value:=´Desconto do INSS´;
query1desconto.value:=strtofloat(edit4.text);
query1.post;
query2.refresh;
query3.refresh;
query4.refresh;
end else
showmessage(´Nao ha valor informado para calculo do INSS´);
end else
begin
query1.Edit;
query1desconto.value:=strtofloat(edit4.text);
query1.post;
query2.refresh;
query3.refresh;
query4.refresh;
end;
end;
O que ocorre nesse codigo eh que em vez dele corrigir em cima no codigo 500 o valor do INSS ele coloca no ultimo valor cadastrado na dbgrid, preciso que ele corrige em cima do codigo 500
Flw!
T+
Gostei + 0
19/07/2005
Rjun
procedure TForm6.BitBtn7Click(Sender: TObject); begin label13.Caption := edit1.text + label14.caption + me1.text; if not (query4.LOCATE(´codigo´,edit5.text,[])) then begin if qry5valor.value <> 0 then begin query1.append; query1.Edit; query1codigo.value := 500; query1ref.value := edit3.text; query1descricao.value := ´Desconto do INSS´; query1desconto.value := strtofloat(edit4.text); query1.post; query2.refresh; query3.refresh; query4.refresh; end else showmessage(´Nao ha valor informado para calculo do INSS´); end else begin // Acho que você deveria por um locate aqui para achar o registro com // o código que você quer query1.Edit; query1desconto.value:=strtofloat(edit4.text); query1.post; query2.refresh; query3.refresh; query4.refresh; end; end;
Gostei + 0
19/07/2005
Adriano_servitec
Nao estou usando chave primaria na query
Bom a query4 eh aonde fica os dados da dbgrid
no banco de dados da query4 esta assim:
Paradox
codigo N
Descricao A 50
REF A 10
Valor $
Desconto $
Na SQL esta assim
select * from tbsalario
order by codigo
Gostei + 0
19/07/2005
Rjun
Gostei + 0
19/07/2005
Adriano_servitec
Sera que eh por isso que esta errado?
Gostei + 0
19/07/2005
Rjun
Gostei + 0
19/07/2005
Adriano_servitec
Na query1 a SQL esta somente assim
select * from tbsalario
se eu colocar order by codigo na query1 aparece o seguinte erro na hora de gravar
Project.exe raised exception class EDataBase wuth message query1 cannot modify a read-only Dataset. Process stopped use step or run to continue
Na query1 o requestlive esta true e na query4 o requestlive esta false
Gostei + 0
19/07/2005
Rjun
Gostei + 0
19/07/2005
Adriano_servitec
Coloquei assim na SQL
select codfunc,codigo,descricao,ref,valor,desconto from tbsalario
verifiquei num dbnavigator se eu colocar order by codigo na query1 os botoes de gravar e deletar ficam com o enabled false, se ficar sem o order by eles ficam true.
O edit5 aonde quero que o locate procure o codigo 500 No text dele esta digitado 500
Gostei + 0
19/07/2005
Adriano_servitec
Gostei + 0
19/07/2005
Rjun
dei uma pesquisada no forum e não tem como você conseguir uma query editavel com paradox usando order by. Usando TTable com chave provavelmente você consegueria.
Gostei + 0
19/07/2005
Adriano_servitec
Agora seu que o order by nao funciona para query q a gente precisa gravar, incluir e editar e se nao me engano o group by tambem nao funciona.
Olha so como fiz.
if not query1.LOCATE(´codigo´,edit5.text,[]) then
Ai funciona perfeitamente
Para nao usar o order by na query1 deixei o dbgrid com a query4 mesmo e ai na hora de fechar para usar o comando uso um refresh na query4 que ta ligada no datasource1 da query1
Ficou perfeito
Obrigado pela ajuda e força amigo
Valeu mesmo
Me ajudou muto
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)