Fórum Query com insert e update #466404
09/01/2014
0
Quero realizar update em uma tabela, mas caso o registro não exista, quero dar insert, tudo na mesma query, tem como?
Grato desde já...
Giovani
Giovani Arakan
Curtir tópico
+ 0Post mais votado
09/01/2014
Usei UPDATE OR INSERT ficou bem rápido. O código ficou assim:
s1 := nextgrid3.Cell[1,i].AsString;
s2 := nextgrid3.Cell[2,i].AsString;
s3 := nextgrid3.Cell[3,i].AsString;
qryaplic.close;
qryaplic.sql.clear;
qryaplic.sql.add('update or insert into produtos (codigo,produto,idtipoprod,unidade) values ('''+s1+''','''+s2+''','''+idtipo+''','''+s3+''') MATCHING (codigo)');
qryaplic.ExecSQL;
pode colocar ao invés de s1, o valor do grid direto na cláusula values.
Valeu
Giovani
Giovani Arakan
Gostei + 2
Mais Posts
09/01/2014
Douglas
se o registro existe na tabela. Ficaria da seguinte forma abaixo:
procedure TForm1.Button1Click(Sender: TObject);
var
Qry : TQuery;
begin
Qry := TQuery.Create(self);
Qry.DatabaseName := 'Nome do seu banco';
Qry.Close;
Qry.SQL.Clear;
Qry.SQL.Add('SELECT * FROM DEVMEDIA ');
Qry.SQL.Add('WHERE COD_DEVMEDIA =:COD');
Qry.ParamByName('COD').AsInteger := //PASSE O CODIGO;
Qry.Open;
if not Qry.IsEmpty then
begin
//AQUI VOCÊ FAZ O UPDADTE
Qry.Close;
Qry.SQL.Clear;
Qry.SQL.Add('UPDATE DEVMEDIA SET CAMPO =:CAMPO WHERE COD_DEVMEDIA =:COD');
Qry.ParamByName('COD').AsInteger := campo;
Qry.ParamByName('COD').AsInteger := cod;
Qry.ExecSQL;
end
else
begin
//AQUI VOCÊ FAZ INSERT DA MESMA MANEIRA QUE O UPDATE
end;
FreeAndNil(Qry);
end;
OBS: Dá forma que foi feita acima, você executa tudo numa mesma Query repare bem nas verificações
onde eu fecho e em seguida executo a Query ao final eu destruo o mesmo. Lembrando que é apenas
um exemplo para que você possa montar o seu código. Aguardo o seu feedback.
Gostei + 0
09/01/2014
Douglas
se o registro existe na tabela. Ficaria da seguinte forma abaixo:
procedure TForm1.Button1Click(Sender: TObject);
var
Qry : TQuery;
begin
Qry := TQuery.Create(self);
Qry.DatabaseName := 'Nome do seu banco';
Qry.Close;
Qry.SQL.Clear;
Qry.SQL.Add('SELECT * FROM DEVMEDIA ');
Qry.SQL.Add('WHERE COD_DEVMEDIA =:COD');
Qry.ParamByName('COD').AsInteger := //PASSE O CODIGO;
Qry.Open;
if not Qry.IsEmpty then
begin
//AQUI VOCÊ FAZ O UPDADTE
Qry.Close;
Qry.SQL.Clear;
Qry.SQL.Add('UPDATE DEVMEDIA SET CAMPO =:CAMPO WHERE COD_DEVMEDIA =:COD');
Qry.ParamByName('CAMPO ').AsString := campo;//PASSE O CAMPO PARA ATUALIZAÇÃO
Qry.ParamByName('COD').AsInteger := cod;//PASSE O CODIGO
Qry.ExecSQL;
end
else
begin
//AQUI VOCÊ FAZ INSERT DA MESMA MANEIRA QUE O UPDATE
end;
FreeAndNil(Qry);
end;
OBS: Dá forma que foi feita acima, você executa tudo numa mesma Query repare bem nas verificações
onde eu fecho e em seguida executo a Query ao final eu destruo o mesmo. Lembrando que é apenas
um exemplo para que você possa montar o seu código. Aguardo o seu feedback.
Fiz uma correção no código, pois postei errado desculpe.
Gostei + 0
09/01/2014
Giovani Arakan
Estava tentando fazer algo tipo UPDATE OR INSERT tipo:
s1 := grid1.cell[1,i].asstring;
s2 := grid1.cell[2,i].AsString;
s3 := grid1.cell[3,i].asstring;
qryaplic.close;
qryaplic.sql.clear;
qryaplic.sql.add('update or insert into produtos (codigo,produto,unidade) values (s1,s2,,s3) MATCHING (codigo)');
qryaplic.ExecSQL;
só que não inclui, o que você acha?
Giovani
Gostei + 0
09/01/2014
Leandro Chiodini
Topico resolvido entao?
att,
Gostei + 0
09/01/2014
Douglas
Gostei + 0
09/01/2014
Douglas
Topico resolvido entao?
att,[/quote
Leandro, por mim já esta resolvido.
Gostei + 0
09/01/2014
Giovani Arakan
Gostei + 0
15/01/2014
William
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)
Inserção de url
Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.