PDA

Ver la Versión Completa : Swap entre campos en Firebird


santiago14
16-02-2021, 17:40:45
Buenas, tengo una consulta bastante simple. Debo intercambiar los datos de los campos en una Tabla.
¿Existe una función, onda swap, para hacerlo?
De no ser así, ¿cómo sería una buena forma de hacerlo?

Muchas gracias.

Casimiro Notevi
16-02-2021, 18:12:58
Si tienes campo1 y campo2, quieres cambiar lo que hay en campo1 a campo2 y lo que hay en campo2 a campo1.

Creas un campo nuevo temporal, pasas los datos de campo1 a campo temporal, pasas los datos del campo2 a campo1, pasas los datos de campo temporal a campo 2.
También puedes hacer usando una tabla en memoria, lista, etc.

ecfisa
16-02-2021, 18:43:24
Hola.

A primera vista no parece lógico, pero en mis pruebas funciona correctamente de este modo:

procedure TForm1.FormCreate(Sender: TObject);
begin
// Mostrar en DBGrid
IBQuery1.SQL.Text := 'SELECT * FROM TEST';
IBQuery1.Open;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
qyTmp.SQL.Text := 'UPDATE TEST SET VALOR0 = VALOR1, VALOR1 = VALOR0';
qyTmp.ExecSQL;
IBQuery1.Close;
IBQuery1.Open;
end;


https://i.postimg.cc/4y5J28hM/swap.gif

Saludos :)

Casimiro Notevi
16-02-2021, 19:02:49
¡¡¡Muy bueno!!! ^\||/