Erro ao alterar registros da query

Delphi

03/08/2004

Estou trabalhando com :
BDE
Tabela DBF
Os campos sao todos textos da tabela, tanto o LOTE quanto o PORTADOR.

1. Consulto a tabela com um Query1.
Esta consulta se da da seguinte maneira :
- Em um edit1 digito o numero do lote. e ao dar um enter esta query mostra a consulta em um Dbgrid,
- Em um edit2 digito o novo valor do portador. Ate aqui tudo bem.

O problema e agora

2. tenho um bitbtn com o seguinte fonte.

procedure TFrmAlterLotes.BitBtn4Click(Sender: TObject);
begin
With Query1 do // mesma query da consulta do edit1.
begin
First;
While not Eof do
begin
begin
Query1.SQL.Clear;
Query1.SQL.Add (´update AltRec set Portador =:´+Edit2.Text+´ WHERE Lote = ´+Edit1.Text+´´); // o portador terar que ser o que esta no edit2.
query1.ExecSQL;
end;
Next;
end;
end;
ShowMessage(´Dados Gravados OK´);
Edit1.Clear;
Edit1.SetFocus;
end;

quando clico tenho a seguinte menssagem :

type mismatch in expression.

resumindo quero clicar no button e ele devera me alterar o registro.

por favor o que devo fazer.



[b:91c60bd817]Título removido: ´Gostaria da Ajuda de Voces´[/b:91c60bd817]
No seu título, escreva uma pequena descrição para o seu problema.
Por favor, releia as [url=http://delphiforum.icft.com.br/forum/viewtopic.php?t=6689]Regras de Conduta[/url] do fórum.
Sandra/Moderação


Tornadofuracao

Tornadofuracao

Curtidas 0

Respostas

Sandra

Sandra

03/08/2004

Tornado,

Não testei para ver se funciona, mas verifique se é isso que está tentando fazer:

procedure TFrmAlterLotes.BitBtn4Click(Sender: TObject); 
begin 
  With Query1 do // mesma query da consulta do edit1. 
  begin 
    First; 
    While not Eof do 
    begin 
      Query1.SQL.Clear; 
      Query1.SQL.Add (´update AltRec set Portador =:´+Edit2.Text+´ WHERE Lote = ´+Edit1.Text+´´); 
                        // o portador terar que ser o que esta no edit2. 
      query1.ExecSQL; 
      Next; 
    end; 
  end; 
  ShowMessage(´Dados Gravados OK´); 
  Edit1.Clear; 
  Edit1.SetFocus; 
end;



GOSTEI 0
Tornadofuracao

Tornadofuracao

03/08/2004

Sandra

primeiro
Pesso desculpas pelo meu erro de titulo.

segundo
nao deu certo pois continua dando o mesmo erro
( type mismatch in expression )


GOSTEI 0
Tornadofuracao

Tornadofuracao

03/08/2004

Para quem puder me ajudar.

Alterei o fonte para este:

procedure TFrmAlterLotes.BitBtn4Click(Sender: TObject);
begin
With Query1 do
begin
First;
While not Eof do
begin
begin
Query1.SQL.Clear;
Query1.SQL.Add (´update AltRec set Portador =: ´+edit2.text+´´);// o portador deverar ser alterado pelo valor do edit2
Query1.SQL.Add (´WHERE Lote = ´+Edit1.Text+´´);
Query1.ExecSQL;
end;
Next;
end;
end;
ShowMessage(´Dados Gravados OK´);
Edit1.Clear;
Edit1.SetFocus;
end;


mais agora esta dando o seguinte erro
(invalid use of key word
token :0100
where)

a propriedade RequestLive = true.


GOSTEI 0
Rômulo Barros

Rômulo Barros

03/08/2004

Qual o motivo dos ´dois pontos(:)´? Pelo q vi, vc não está passando nenhum parâmetro antes do ExcSql();
Query1.SQL.Add (´update AltRec set Portador =:´+Edit2.Text+´ WHERE Lote = ´+Edit1.Text+´´);


Tenta assim:

Query1.SQL.Add (´update AltRec set Portador =:´+Edit2.Text+´ WHERE Lote = ´+Edit1.Text+´´);
Query1.Params[0].AsString := QuotedStr(Edit2.Text);
Query1.ExecSql();


GOSTEI 0
Tornadofuracao

Tornadofuracao

03/08/2004

coro amigo Undeclared Identifier

fiz como vc me sugeriu mas deu o seguinte erro sem os dois pontos

Query1.SQL.Add (´update AltRec set Portador = ´+Edit2.Text+´ WHERE Lote = ´+Edit1.Text+´´);

list index out of bounds (0)

como os dois pontos

Query1.SQL.Add (´update AltRec set Portador =:´+Edit2.Text+´ WHERE Lote = ´+Edit1.Text+´´);

Invalid use of keyword
token : update
line number :2

uma pergunta o que irei colocar nos parentes


GOSTEI 0
Tornadofuracao

Tornadofuracao

03/08/2004

Ai galera do mundo Delphi

coloquei este fonte

Query1.Edit;
Query1.Fields[4].AsString := Edit2.Text;
Query1.Post;

e funcionou beleza.


GOSTEI 0
POSTAR