Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Conexión con bases de datos (https://www.clubdelphi.com/foros/forumdisplay.php?f=2)
-   -   Dudas genericas (https://www.clubdelphi.com/foros/showthread.php?t=2061)

Giniromero 07-07-2003 18:24:16

Dudas genericas
 
Hola,

Sigo pasando una aplicacion a interbase 7, que estaba hecha para paradox 5. Utilizo delphi 6.

Tengo varias dudas, que la ayuda del delphi no me aclara del todo.
Exactamente, ¿cómo funcionan los enable/disablecontrol del delphi?
¿tengo que usarlo con los try ... finally...end...?
¿cómo funcionan lo bookmark?
¿si tengo un tGrid, conectado a una TIBTable, y hago un post en dicha tabla. ¿como hago para que se actualize mi tabla, y por tanto me muestre los cambios inmediatamente en el TGrid?

¿El procedure refresh, despues de este post, usando interbase 7, ¿me deja en el mismo registro?

Si no es así, ¿cómo hago para figar la tabla en el registro que acabo de crear, después del refresh? (esto es, por que después de guardar el registro, necesito tomar el valor de uno de sus campos, que es un campo auto incremental, para asignarlo a otro campo inmediatamente después).

Muchas gracias,

virginia

__cadetill 07-07-2003 19:00:24

Cita:

Posteado originalmente por Giniromero
Exactamente, ¿cómo funcionan los enable/disablecontrol del delphi?
Con Tabla.EnableControls o Tabla.DisableControls

Cita:

Posteado originalmente por Giniromero
¿tengo que usarlo con los try ... finally...end...?
Preferiblemente. Si se produce un error en las sentencias que tengas entre el DisabledControls y el EnabledControls, siempre recuperaras el control de los controles

Cita:

Posteado originalmente por Giniromero
¿cómo funcionan lo bookmark?
Un ejemplo con Interbase
Código:

procedure ActualitzaTaula(DataSet : TDataSet; Transac : TIBTransaction);
var Marca : TBookmark;
begin
    Marca := DataSet.GetBookmark;
    Transac.CommitRetaining;
    DataSet.Close;
    DataSet.Open;
    DataSet.GotoBookmark(Marca);
end;

Cita:

Posteado originalmente por Giniromero
¿si tengo un tGrid, conectado a una TIBTable, y hago un post en dicha tabla. ¿como hago para que se actualize mi tabla, y por tanto me muestre los cambios inmediatamente en el TGrid?
Con un Commit o un CommitRetaining

Cita:

Posteado originalmente por Giniromero
¿El procedure refresh, despues de este post, usando interbase 7, ¿me deja en el mismo registro?
Si no recuerdo mal, sí (lo digo de memoria). Pero un Refresh no termina una transaccion, por lo que los valores dentro de la transacción no se actualizarán

Cita:

Posteado originalmente por Giniromero
Muchas gracias,
De nada :p

Giniromero 08-07-2003 10:17:48

Gracias por tu ayuda, pero ¿podrías ser más especifico en el funcionamiento de bookmark y lo de disable-enablecontrols?
Es que, en lo que más problemas tengo, es en que casos hay que usarlo, vamos, que es lo que hacen. Por que, en el help te dicen un poco de que van, pero no me queda claro, y creo que por ello, lo estoy usando algo mal.

Por otro lado, lo del commit o CommitRetaining, lo estoy usando dentro del evento AfterPost de las tablas, y en el evento AfterCancel, estoy poniendo el RollbackRetaining. ¿tengo que poner esto mismo secuencialmente después de un refresh, directamente dentro del código? Es que, como ya te comento, poniendolo dentro del event, no me lo está refrescando, y no se si es por como lo pongo, o que tal vez tengo que configurar mi transacción de algún modo en concreto, para que esto me funcione correctamente.

En cuanto a lo de poner try... finally...end... ¿puedo ponerlo para que, dentro de un procedure me afecte sólo a una parte del código, o me tiene que incluir todo el código menos los:


FrmVentana1 := TFrmVentana1.Create(Self);?

Muchisimas gracias por tu ayuda, una vez más.

Virginia Romero

__cadetill 08-07-2003 12:23:01

Cita:

Posteado originalmente por Giniromero
¿podrías ser más especifico en el funcionamiento de bookmark
Bueno, el bookmark, lo que hace, es posicionarse de forma rapida en el numero de registro que tu le indicas. No es una busqueda, sino un registro relativo a la base de datos (no se si me he explicado)

Cita:

Posteado originalmente por Giniromero
y lo de disable-enablecontrols?
El DisableControls y EnableControls, yo al menos, suelo utilizarlo cuando tengo que realizar un proceso que recorre toda una tabla (o parte de ella) y no quiero que se vea el efecto de recorrido. Basicamente, lo que hace es habilitar/deshabilitar el "refresco" en los controles DataAware, es decir, es como si desligases el DataSource de tu TTable

Cita:

Posteado originalmente por Giniromero
Por otro lado, lo del commit o CommitRetaining, lo estoy usando dentro del evento AfterPost de las tablas, y en el evento AfterCancel, estoy poniendo el RollbackRetaining. ¿tengo que poner esto mismo secuencialmente después de un refresh, directamente dentro del código?
En principio, en poner un Commit/CommitRetaining o un Rollback/RollbackRetaining en los eventos que indicas, tendrias que tener suficiente para el refresco de tus tablas (siempre y cuando éstas estén dentro de la misma transaccion).

Cita:

Posteado originalmente por Giniromero
En cuanto a lo de poner try... finally...end... ¿puedo ponerlo para que, dentro de un procedure me afecte sólo a una parte del código, o me tiene que incluir todo el código menos los
Sí, sin problemas. Puedes hacer algo estilo...
Código:

procedure .....
var
begin
    .........
    Mis instrucciones fuera del try..finally..end
    .......
    try
      disablecontrols
    finally
        enablecontrols
    end;
    .........
    Mis instrucciones fuera del try..finally..end
    .......
end;

Espero te sirva

Giniromero 08-07-2003 13:12:55

La verdad, me has aclarado muchas cosas que no terminaba de entender. sin embargo con ello se me han creado más dudas.

1) ¿puedo usar varios try.... finally... end dentro del mismo procedure?

esto es, si por ejemplo tengo un procedure que me gestiona varias tablas, y necesito hacer un disablecontrols a dos de ellas, en el mismo procedure, pero uno a continuacion de otro para tablas distintas... ¿podría?

2) podría ser, el hecho de que una tabla esté como disablecontrols, el motivo de que no funcione el refresco de datos, aunque tenga, en el evento afterpost, el commit de la transaccion, tal como comenté anteriormente?

Gracias por todo

Virginia:)

__cadetill 08-07-2003 13:28:43

Cita:

Posteado originalmente por Giniromero
1) ¿puedo usar varios try.... finally... end dentro del mismo procedure?
Sí, he incluso si lo necesitas, anidar varios de ellos

Cita:

Posteado originalmente por Giniromero
2) podría ser, el hecho de que una tabla esté como disablecontrols, el motivo de que no funcione el refresco de datos, aunque tenga, en el evento afterpost, el commit de la transaccion, tal como comenté anteriormente?
Creo que no, en principio no tiene nada que ver el DisableControls con un update o insert en una tabla. Mas bien parece que las acciones sobre la tabla no esten en la misma transaccion

Giniromero 08-07-2003 14:15:48

Cita:

Posteado originalmente por cadetill
Creo que no, en principio no tiene nada que ver el DisableControls con un update o insert en una tabla. Mas bien parece que las acciones sobre la tabla no esten en la misma transaccion

Hola,

en principio si están en la misma transacción, pues sólo tengo una en la aplicación, y a ella están conectadas todas mis tablas.

En cualquier caso, te agradezco infinito tu ayuda. No saber cuanto me has ayudado. Ahora tengo que intentar ordenar todo esto, y ponerlo en práctica.

Gracias por todo,

Virginia


La franja horaria es GMT +2. Ahora son las 04:31:46.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi