asdbernardo
09-10-2011, 08:39:45
Buenas noches foristas, una pregunta .. estoy trabajndo en un formulario que añada, modifique, borre( logicamente con una variable boolean ) restaure ( la variable boolean pasa a false ) confirme y cancele .. es algo como esto:
----------------------------------------------------------
aca los mismos campos de la grilla pero en tdbedit
Añadir - Borrar - Restaurar - Modificar - Confirmar - Cancelar
----------------------------------------------------------
Grilla
----------------------------------------------------------
la cuestion esta creo que en cursor de la grilla.. ejemplo.. añado 3 registros y perfecto, borro los 3 ( logicamente pasando un campo que tengo oculto llamado borrado a true .. y se borran de la grilla ya que lo tengo filtradosql por los not borrado.. ahora el detalle es, que cuando estos 3 estan borrados, y quiero restaurar ejemplo.. borre 123 y quiero restaurar el 2 le doy confirmar y no lo hace, basta que en el boton confirmar coloque a un boton que hice para simular las movidas del dbnavigator << < > >> al darle el click Proximo es decir unitable1.next; y si borra pero el siguiente y quiero la posibilidad de que al marcar en la dbgrid1 el registro que yo desee sea cual fuere el registro lo haga, dejo el codigo con que hago borrar, restaurar, confirmar y cancelar, aparte del oncreate.
Si existen mejores formas de hacer este formulario escucho opiniones, ya que el filtrado con muchos registros me imagino que se pondra lenta .. ( aun no lo pruebo con registros exagerados), pero si con 20 registros al borrar logicamente que es ( cambiar el campo invisible a true, y el estado a desactivado se tarda a veces por el refresh que tiene la grilla ) -.- jeje bueno aki dejo el codigo.. a ver que se puede hacer..
saludos y gracias de antemano ..
pd: uso tdbedit + la grilla
procedure TfrmAgencia.btnborrarClick(Sender: TObject);
begin
if MessageDlg('¿Que quiere borrar este registro?', mtConfirmation, [mbYes, mbNo], 0) = mrYes then
begin
desactivarbarra;
unitable1.Edit;
edtborrado.Field.AsString := 'true';
comboestado.Field.AsString := 'Desactivado';
unitable1.Post;
unitable1.FilterSQL:= 'not borrado';
activarbarra;
end;
escero;
esceroborrado;
end;
procedure TfrmAgencia.btnrestaurarClick(Sender: TObject);
begin
comprobarnull;
unitable1.FilterSQL:= 'borrado';
unitable1.Edit;
desactivarbarra;
btnconfirmarborrado.Enabled :=true;
btnconfirmarborrado.Visible := true;
btncancelarborrado.Enabled := true;
btncancelarborrado.Visible := true;
edtborrado.Visible := true;
end;
procedure TfrmAgencia.btncancelarborradoClick(Sender: TObject);
begin
escero;
unitable1.Cancel;
desactivarbarra;
btnañadir.Enabled := true;
btnmodificar.Enabled := true;
btnborrar.enabled :=true;
unitable1.FilterSQL:= 'not borrado';
btncancelar.Visible := true;
btnconfirmar.Visible :=true;
btncancelarborrado.Visible := false;
btnconfirmarborrado.Visible :=false;
dbgrid1.Refresh;
end;
procedure TfrmAgencia.btnconfirmarborradoClick(Sender: TObject);
begin
unitable1.Edit;
comboestado.Field.AsString := 'Activado';
unitable1.Post;
unitable1.FilterSQL:= 'not borrado';
desactivarbarra;
btnañadir.Enabled := true;
btnmodificar.Enabled := true;
btnborrar.enabled :=true;
activarbtnir;
btncancelar.Visible := true;
btnconfirmar.Visible :=true;
btncancelarborrado.Visible := false;
btnconfirmarborrado.Visible :=false;
end;
aca el create del formulario
procedure TfrmAgencia.FormCreate(Sender: TObject);
begin
esceroborrado;
escero;
try
if conexion = true then
begin
unitable1.Active := true;
unitable1.Last;
end
else // OJEAR NO TRABAJA! LA EXCEPCION SI LA CONEXION SE CAE
except
on E: Exception do
begin
unitable1.Active := false;
showmessage('Compruebe la conexion a internet, debido a que no se ha podido conectar con el servidor')
end;
end;
Query1.SQL.Clear;
Query1.SQL.Add('Select Max(numero_agencia) From Agencia');
Query1.Open;
unitable1.Edit;
edtfalsonroagencia.Text:= inttostr(Query1.Fields[0].AsInteger);
end;
Bueno eso creo que es todo.. agradezco su tiempo.. saludos!
pd1: el detalle sigo e insisto esta en el posicionamiento del dbgrid pero la verdad no se como hacer que al darle click y seleccionar el registro sepa que eso que estoy seleccionando debo cambiarle el campo borrado debe cambiarle el campo para que aparezca.. Saludos!
pd2: recien me he dado cuenta que al posicionarme en el registro desde la dbgrid1 y volver a darle el boton restaurar y darle al boton confirmar me hace la seleccion de ese registro y me lo restaura, pero si solamente le doy click a restaurar, no me deja editar el tdbcombobox que posee el true o el false del campo.. he ahi el dilema!
----------------------------------------------------------
aca los mismos campos de la grilla pero en tdbedit
Añadir - Borrar - Restaurar - Modificar - Confirmar - Cancelar
----------------------------------------------------------
Grilla
----------------------------------------------------------
la cuestion esta creo que en cursor de la grilla.. ejemplo.. añado 3 registros y perfecto, borro los 3 ( logicamente pasando un campo que tengo oculto llamado borrado a true .. y se borran de la grilla ya que lo tengo filtradosql por los not borrado.. ahora el detalle es, que cuando estos 3 estan borrados, y quiero restaurar ejemplo.. borre 123 y quiero restaurar el 2 le doy confirmar y no lo hace, basta que en el boton confirmar coloque a un boton que hice para simular las movidas del dbnavigator << < > >> al darle el click Proximo es decir unitable1.next; y si borra pero el siguiente y quiero la posibilidad de que al marcar en la dbgrid1 el registro que yo desee sea cual fuere el registro lo haga, dejo el codigo con que hago borrar, restaurar, confirmar y cancelar, aparte del oncreate.
Si existen mejores formas de hacer este formulario escucho opiniones, ya que el filtrado con muchos registros me imagino que se pondra lenta .. ( aun no lo pruebo con registros exagerados), pero si con 20 registros al borrar logicamente que es ( cambiar el campo invisible a true, y el estado a desactivado se tarda a veces por el refresh que tiene la grilla ) -.- jeje bueno aki dejo el codigo.. a ver que se puede hacer..
saludos y gracias de antemano ..
pd: uso tdbedit + la grilla
procedure TfrmAgencia.btnborrarClick(Sender: TObject);
begin
if MessageDlg('¿Que quiere borrar este registro?', mtConfirmation, [mbYes, mbNo], 0) = mrYes then
begin
desactivarbarra;
unitable1.Edit;
edtborrado.Field.AsString := 'true';
comboestado.Field.AsString := 'Desactivado';
unitable1.Post;
unitable1.FilterSQL:= 'not borrado';
activarbarra;
end;
escero;
esceroborrado;
end;
procedure TfrmAgencia.btnrestaurarClick(Sender: TObject);
begin
comprobarnull;
unitable1.FilterSQL:= 'borrado';
unitable1.Edit;
desactivarbarra;
btnconfirmarborrado.Enabled :=true;
btnconfirmarborrado.Visible := true;
btncancelarborrado.Enabled := true;
btncancelarborrado.Visible := true;
edtborrado.Visible := true;
end;
procedure TfrmAgencia.btncancelarborradoClick(Sender: TObject);
begin
escero;
unitable1.Cancel;
desactivarbarra;
btnañadir.Enabled := true;
btnmodificar.Enabled := true;
btnborrar.enabled :=true;
unitable1.FilterSQL:= 'not borrado';
btncancelar.Visible := true;
btnconfirmar.Visible :=true;
btncancelarborrado.Visible := false;
btnconfirmarborrado.Visible :=false;
dbgrid1.Refresh;
end;
procedure TfrmAgencia.btnconfirmarborradoClick(Sender: TObject);
begin
unitable1.Edit;
comboestado.Field.AsString := 'Activado';
unitable1.Post;
unitable1.FilterSQL:= 'not borrado';
desactivarbarra;
btnañadir.Enabled := true;
btnmodificar.Enabled := true;
btnborrar.enabled :=true;
activarbtnir;
btncancelar.Visible := true;
btnconfirmar.Visible :=true;
btncancelarborrado.Visible := false;
btnconfirmarborrado.Visible :=false;
end;
aca el create del formulario
procedure TfrmAgencia.FormCreate(Sender: TObject);
begin
esceroborrado;
escero;
try
if conexion = true then
begin
unitable1.Active := true;
unitable1.Last;
end
else // OJEAR NO TRABAJA! LA EXCEPCION SI LA CONEXION SE CAE
except
on E: Exception do
begin
unitable1.Active := false;
showmessage('Compruebe la conexion a internet, debido a que no se ha podido conectar con el servidor')
end;
end;
Query1.SQL.Clear;
Query1.SQL.Add('Select Max(numero_agencia) From Agencia');
Query1.Open;
unitable1.Edit;
edtfalsonroagencia.Text:= inttostr(Query1.Fields[0].AsInteger);
end;
Bueno eso creo que es todo.. agradezco su tiempo.. saludos!
pd1: el detalle sigo e insisto esta en el posicionamiento del dbgrid pero la verdad no se como hacer que al darle click y seleccionar el registro sepa que eso que estoy seleccionando debo cambiarle el campo borrado debe cambiarle el campo para que aparezca.. Saludos!
pd2: recien me he dado cuenta que al posicionarme en el registro desde la dbgrid1 y volver a darle el boton restaurar y darle al boton confirmar me hace la seleccion de ese registro y me lo restaura, pero si solamente le doy click a restaurar, no me deja editar el tdbcombobox que posee el true o el false del campo.. he ahi el dilema!