Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Conexión con bases de datos
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Conexión con bases de datos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 04-08-2003
CORBATIN CORBATIN is offline
Miembro
 
Registrado: may 2003
Ubicación: España
Posts: 131
Poder: 21
CORBATIN Va por buen camino
Consejos al acceder al estado de una tabla

Saludos a todos, me gustaría pedir consejo sobre cuál es la mejor forma de hacer lo siguiente:

if (table1.state in [dsinsert,dsedit] then begin
btaceptar.enabled:= true;
btcancelar.enabled := true;
bteliminar.enabled := true;
......
.....
......
end
else begin
btaceptar.enabled:= false;
btcancelar.enabled := false;
bteliminar.enabled := false;
......
.....
......
end;

o bien de esta forma:
btaceptar.enabled := table1.state in [dsinsert,dsedit];
btcancelar.enabled := table1.state in [dsinsert,dsedit];
bteliminar.enabled := table1.state in [dsinsert,dsedit];
......
......
.......

De la primera forma solo accedo una vez al estado de la tabla y escribo más código.

De la segunda forma escribo menos código pero accedo una vez por cada componente que quiero ajustar, pero la duda es ¿el acceder al estado de la tabla es costoso o más bien rápido?

Gracias a todos por vuestra ayuda.
__________________
No hay vientos favorables para quién no conoce su rumbo.
Responder Con Cita
  #2  
Antiguo 04-08-2003
andres1569 andres1569 is offline
Miembro
 
Registrado: may 2003
Posts: 908
Poder: 22
andres1569 Va por buen camino
Hola:

El acceder al estado de una tabla es algo rapidísimo, en realidad no se ejecuta ningún código interno al acceder a esa propiedad sino que se mira directamente la variable FState, así que puedes quedarte con la segunda opción, la primera crea código innecesario. Una tercera vía sería:

btaceptar.enabled := table1.state in [dsinsert,dsedit];
btcancelar.enabled := btaceptar.enabled;
bteliminar.enabled := btaceptar.enabled;

que evita la comprobación del in 2 veces.

La diferencia que cuenta aquí es de legibilidad y economía del código.
__________________
Guía de Estilo

Última edición por andres1569 fecha: 04-08-2003 a las 20:18:14.
Responder Con Cita
  #3  
Antiguo 04-08-2003
CORBATIN CORBATIN is offline
Miembro
 
Registrado: may 2003
Ubicación: España
Posts: 131
Poder: 21
CORBATIN Va por buen camino
Muchas gracias, me imagina algo así pero quería que alguién lo confirmara, saludos.
__________________
No hay vientos favorables para quién no conoce su rumbo.
Responder Con Cita
  #4  
Antiguo 06-08-2003
Avatar de Cabanyaler
Cabanyaler Cabanyaler is offline
Miembro
 
Registrado: jun 2003
Ubicación: País Valencià
Posts: 339
Poder: 21
Cabanyaler Va por buen camino
El coste, en ambos casos es lineal, por lo que cualquiera de ambas soluciones es igualmente buena.
Deberias preocuparte en el caso en que el coste fuese exponencial.
Cuando el coste es lineal, ya que el tiempo de acceso para cualquier componente es muy rápido, se considera el tmp minimo necesario, por lo que es igualmente bueno cualquiera de ambas como te digo.
Suerte.
__________________
El meu país és tan petit, que des de dalt d'un campanar es pot veure el campanar veí.
Responder Con Cita
  #5  
Antiguo 06-08-2003
Avatar de delphi.com.ar
delphi.com.ar delphi.com.ar is offline
Federico Firenze
 
Registrado: may 2003
Ubicación: Buenos Aires, Argentina *
Posts: 5.932
Poder: 27
delphi.com.ar Va por buen camino
Código:
procedure TForm1.Button1Click(Sender: TObject);
  procedure SetEnabled(AEnabled: boolean);
  begin
    btAceptar.Enabled  := AEnabled;
    btCancelar.Enabled := AEnabled;
    btEliminar.Enabled := AEnabled;
  end;
begin
  ...
  SetEnabled(Table1.State in [dsInsert,dsEdit]);
  ...
end;
__________________
delphi.com.ar

Dedique el tiempo suficiente para formular su pregunta si pretende que alguien dedique su tiempo en contestarla.
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro


La franja horaria es GMT +2. Ahora son las 23:47:11.


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
Copyright 1996-2007 Club Delphi