Fita
01-05-2005, 17:10:51
Hola a todos...
Tengo dos DBgrid enlazadas a dos IBDatasets.
La DBGrid1 muestra los datos del IBDataset1 cuya sql es:
Select * from alu000 where estado = 'A'
La DBGrid2 muestra los datos del IBDataset2 cuya sql es:
Select * from alu000 where estado = 'B'
La idea es que al hacer dobleclick en una de las DBGrid cambie el valor del campo "estado" a su valor opuesto, es decir si es 'A' pasa a 'B' y viceversa. Con esto deberían cambiar las dos DBGrid. Suponiendo la existencia de un solo registro, éste debería pasar de una DBgrid a otra... bueno; lo que sucede es que desaparece de una pero no aparece en la otra.
Para ello la Sql que se ejecuta al hacer doble click en la DBGrid1 es:
// como es estado = 'A' lo pasa a estado = 'B'
IBDataset1.selctsql.close;
IBDataeet1.selectsql.clear;
IBDataset1.selectsql.add('update alu000 set estado = :estado');
IBDataset1.parambyname('estado').asString := 'B';
IBDataset1.ExecSql;
IBTransaction1.Commit;
Sel_Alu_A; // procedure que contiene la sql que selecciona estado = 'A'
Sel_Alu_B; // procedure que contiene la sql que selecciona estado = 'B'
---------------------------------------------------------------------
Para la DBGrid2 al hacer doble click
// (muestra estado = 'B' ) lo pasa a estado = 'A'
IBDataset2.selctsql.close;
IBDataeet2.selectsql.clear;
IBDataset2.selectsql.add('update alu000 set estado = :estado');
IBDataset2.parambyname('estado').asString := 'A';
IBDataset2.ExecSql;
IBTransaction2.Commit;
Sel_Alu_A; // procedure que contiene la sql que selecciona estado = 'A'
Sel_Alu_B; // procedure que contiene la sql que selecciona estado = 'B'
// Cuando abro el form se ejecutan las sql
Procedure Form.Create;
begin
Sel_alu_A;
Sel_Alu_B;
end;
Ya he probado con el DBGrid.Refresh y otras cosas... sólo funciona cuando cierro el formulario y lo habro nuevamente; lo que significa que algo estoy pasando por alto y no sé que es...
Alguna idea ???
Gracias por adelantado
:confused: Fita
Tengo dos DBgrid enlazadas a dos IBDatasets.
La DBGrid1 muestra los datos del IBDataset1 cuya sql es:
Select * from alu000 where estado = 'A'
La DBGrid2 muestra los datos del IBDataset2 cuya sql es:
Select * from alu000 where estado = 'B'
La idea es que al hacer dobleclick en una de las DBGrid cambie el valor del campo "estado" a su valor opuesto, es decir si es 'A' pasa a 'B' y viceversa. Con esto deberían cambiar las dos DBGrid. Suponiendo la existencia de un solo registro, éste debería pasar de una DBgrid a otra... bueno; lo que sucede es que desaparece de una pero no aparece en la otra.
Para ello la Sql que se ejecuta al hacer doble click en la DBGrid1 es:
// como es estado = 'A' lo pasa a estado = 'B'
IBDataset1.selctsql.close;
IBDataeet1.selectsql.clear;
IBDataset1.selectsql.add('update alu000 set estado = :estado');
IBDataset1.parambyname('estado').asString := 'B';
IBDataset1.ExecSql;
IBTransaction1.Commit;
Sel_Alu_A; // procedure que contiene la sql que selecciona estado = 'A'
Sel_Alu_B; // procedure que contiene la sql que selecciona estado = 'B'
---------------------------------------------------------------------
Para la DBGrid2 al hacer doble click
// (muestra estado = 'B' ) lo pasa a estado = 'A'
IBDataset2.selctsql.close;
IBDataeet2.selectsql.clear;
IBDataset2.selectsql.add('update alu000 set estado = :estado');
IBDataset2.parambyname('estado').asString := 'A';
IBDataset2.ExecSql;
IBTransaction2.Commit;
Sel_Alu_A; // procedure que contiene la sql que selecciona estado = 'A'
Sel_Alu_B; // procedure que contiene la sql que selecciona estado = 'B'
// Cuando abro el form se ejecutan las sql
Procedure Form.Create;
begin
Sel_alu_A;
Sel_Alu_B;
end;
Ya he probado con el DBGrid.Refresh y otras cosas... sólo funciona cuando cierro el formulario y lo habro nuevamente; lo que significa que algo estoy pasando por alto y no sé que es...
Alguna idea ???
Gracias por adelantado
:confused: Fita