Locate para INSERT/UPDATE utilizando TQuery
Bom dia!
Tenho o seguinte problema: caso haja algum registro na tabela (de acordo com um filtro), devo fazer um UPDATE; caso contrário, um INSERT. No caso, estou utilizando o componente TQuery com as instruções INSERT e UPDATE direto no SQL, para tornar mais eficiente.
No momento, estou executando da seguinte forma, sendo qLocate e qEdit TQuery´s (de forma bem resumida):
----
qLocate.Close;
qLocate.SQL.Clear;
qLocate.SQL.Add(´Select * From Tabela Where Campo=:Campo´);
qLocate.ParamByName(´Campo´).AsInteger := 0;
qLocate.Open;
if qLocate.RecordCount > 0 then begin
qEdit.Close;
qEdit.SQL.Text := ´UPDATE Tabela SET Campo1=:Campo1 WHERE Campo=:Campo´;
qEdit.ParamByName(´Campo´).AsInteger := 0;
end
else begin
qEdit.Close;
qEdit.SQL.Text := ´INSERT INTO Tabela (Campo1) VALUES (:Campo1)´;
qEdit.ParamByName(´Campo1´).AsInteger := 0;
end;
----
Isso funciona, mas é necessário abrir uma consulta somente para realizar o Locate. Como seria sem o qLocate?!
Desde já agradeço!
Tenho o seguinte problema: caso haja algum registro na tabela (de acordo com um filtro), devo fazer um UPDATE; caso contrário, um INSERT. No caso, estou utilizando o componente TQuery com as instruções INSERT e UPDATE direto no SQL, para tornar mais eficiente.
No momento, estou executando da seguinte forma, sendo qLocate e qEdit TQuery´s (de forma bem resumida):
----
qLocate.Close;
qLocate.SQL.Clear;
qLocate.SQL.Add(´Select * From Tabela Where Campo=:Campo´);
qLocate.ParamByName(´Campo´).AsInteger := 0;
qLocate.Open;
if qLocate.RecordCount > 0 then begin
qEdit.Close;
qEdit.SQL.Text := ´UPDATE Tabela SET Campo1=:Campo1 WHERE Campo=:Campo´;
qEdit.ParamByName(´Campo´).AsInteger := 0;
end
else begin
qEdit.Close;
qEdit.SQL.Text := ´INSERT INTO Tabela (Campo1) VALUES (:Campo1)´;
qEdit.ParamByName(´Campo1´).AsInteger := 0;
end;
----
Isso funciona, mas é necessário abrir uma consulta somente para realizar o Locate. Como seria sem o qLocate?!
Desde já agradeço!
Deborazb
Curtidas 0