como faço em sql ...

Delphi

30/09/2005

quero fazer em sql o q em paradox eu faço assim:
tb1.first;
          while tb1.eof = false do
            begin
               if tb1.fieldbyname(´campo´).asstring = nome then
                 begin
                   tb1.fieldbyname(´campo2´).asstring:=´ok´;
                 end
                  else
                 tb1.fieldbyname(´campo3´).asstring:=´error´;
            end;



ou seja, ele vai varrer o banco inteiro, se o campo 1 for = ao campo 2 ele edita e coloca ok, se for diferente ele coloca error. é simples em paradox, agora migrei o banco para interbase/ firebird, e preciso colocar nas querys isso e nao estou conseguindo.

agradeco muito a ajuda.


Geisonc

Geisonc

Curtidas 0

Respostas

Michael

Michael

30/09/2005

Olá!

Vc deve usar o comando UPDATE da linguagem SQL:

update tabela set campo2 = ´ok´ where campo = nome update tabela set campo3 = ´error´ where campo <> nome


[]´s


GOSTEI 0
Geisonc

Geisonc

30/09/2005

mas ele varre a tabela inteira assim ?


GOSTEI 0
Motta

Motta

30/09/2005

Todos os reg´s que obedecerem as condições serão alterados.


GOSTEI 0
Geisonc

Geisonc

30/09/2005

olhem, no IB CONSOLE funcionou perfeitamente, agora dentro do delphi eu sempre apanho em fazer.. vejam...


DM.tbordem.SQL.Clear;
DM.tbordem.SQL.Add(´update TBORDEM set CARGO = "P" where PREPARADOR = "EDSON"´);
DM.tbordem.Open;



o erro é: colum unknonw P´ ..

obrigado novamente


GOSTEI 0
Rjun

Rjun

30/09/2005

Você pos ´ e deve ser ´. Utilize querys parametrizadas para fazer esse tipo de operação. E OPEN só se utiliza com SELECT. Nesse caso você deve utilizar EXECSQL.

DM.tbordem.SQL.Clear; 
DM.tbordem.SQL.Add(´update TBORDEM set CARGO = :Cargo where PREPARADOR = :Preparador´);
DM.tbordem.SQL.ParamByName(´Cargo´).Value := ´P´;
DM.tbOrdem.SQL.ParamByName(´Preparador´).Value := ´Edson´; 
DM.tbordem.ExecSql; 



GOSTEI 0
Geisonc

Geisonc

30/09/2005

uhhh legal heim, não fazia desse jeito, na parte de opensql eu escrevi sem querer...

eu so tive que alterar a linha 3 e 4, tirando o SQL, mas funcionou legal.


muito obrigado, ajudou pacas !


GOSTEI 0
Geisonc

Geisonc

30/09/2005

Pq o SQL do delphi é diferente do sql do IBConsole ?

estou tentando fazer um select com OR e nao da certo de modo algum no delphi...

DM.tbordem.SQL.Clear;
DM.tbordem.SQL.Add(´select * from tbordem where preparador or auxiliar = ´+ nome);
DM.tbordem.open;


fala que or´ esta errado... :(

vou ter q fazer um curso de sql e rápido.. pensei q sabia alguma coisa... mas to vendo que vou precisar,,,


GOSTEI 0
Michelli88

Michelli88

30/09/2005

fica assim:

DM.tbordem.SQL.Clear;
DM.tbordem.SQL.Add(´select * from tbordem where preparador = ´+ nome + ´or auxiliar = ´+ nome);
DM.tbordem.open;



GOSTEI 0
Geisonc

Geisonc

30/09/2005

ahhh se não fossem vcs !!!



muito obrigado.


GOSTEI 0
Geisonc

Geisonc

30/09/2005

mas dei uma mudadinha no codigo... ficou assim :

DM.tbordem.SQL.Clear;
DM.tbordem.SQL.Add(´select * from tbordem where preparador = :FUNC or auxiliar = :FUNC´);
DM.tbordem.ParamByName(´FUNC´).AsString:=nome;
DM.tbordem.open;



GOSTEI 0
POSTAR