Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Firebird e Interbase (https://www.clubdelphi.com/foros/forumdisplay.php?f=19)
-   -   ¿como se usan los bookmarks? (https://www.clubdelphi.com/foros/showthread.php?t=69397)

JXJ 15-08-2010 22:14:37

¿como se usan los bookmarks?
 
firebird y otras bases de datos
tienen bookmarks asi como
ibobjects tiene componentes para trabajar con bookmarks,

pero
¿ como se usan?
¿para que sirven?

¿cuales son los escenarios en los que se debe usar y en cuales
es mejor otra cosa (querys)?

guillotmarc 16-08-2010 01:51:14

O estoy muy equivocado o Firebird no tiene bookmarks (ni los tienen el resto de bases de datos). Teniendo campos de clave primaria no necesitas para nada bookmarks.

Los diferentes componentes de accesos a bases de datos son los que implementan bookmarks. Son como punteros a un registro determinado. Tienes que mirar la documentación de los componentes que utilices, puesto que no siempre se tratan igual.

Saludos.

Casimiro Notevi 16-08-2010 02:22:50

¿Puede que te refieras a los bookmarks desde delphi?

JXJ 16-08-2010 05:45:25

me pasaron un codigo fuente escrito en delphi 7
y usando la base de datos firebird 1.5
en dbexpress y usando datasnap
que al hacer la busqueda en la
base de datos
hace uso de bookmarks

el codigo es asi

Código SQL [-]
var
    sBM : String;
begin
    with dmDatos.qryListados do begin
        sBM := dmDatos.cdsCliente.Bookmark;

        dmDatos.cdsCliente.Active := false;
        Close;
        SQL.Clear;
        SQL.Add('SELECT tabla.clave, tabla.nombre, tabla.categoria');
        Open;
        dmDatos.cdsCliente.Active := true;

        dmDatos.cdsCliente.FieldByName('clave').Visible := false;
        dmDatos.cdsCliente.FieldByName('nombre').DisplayLabel := 'vendido';
        dmDatos.cdsCliente.FieldByName('categoria').Visible := false;

        registros.value := dmDatos.cdsCliente.RecordCount;
        try
            dmDatos.cdsCliente.Bookmark := sBM;
        except
            Registros.Value := txtRegistros.Value;
        end;
    end;


lo que me interesa es quitar el uso de bookmarks
y ver si se puede hacer la busqueda por medio
de solo querys,
y no usar datasnap

por que

cdsCliente es un TClientDataSet
y se usan
TDataSetProvider

guillotmarc 16-08-2010 15:06:08

Hay un principio de la informática que dice que : lo que funciona no lo toques. Claro que si funciona mal, entonces ya es otra cosa.

Respecto a los ClientDatasets son componentes magníficos, cargados de funcionalidad extra. No veo que problema tienes en que use un DatasetProvider.

Respecto a tu código, está difícil decirte como cambiarlo, puesto que desde el momento en que utilizas el "with" (la mayor chapuza existente en Delphi), no hay forma de estar seguro de lo que hace ese código (por ejemplo, ¿ que es sBM, una variable, una propiedad de qryListados, etc. ... ?).

Si quieres mejorar tu código, yo empezaría evitando el uso del "with" y no quitando componentes tan útiles como el ClientDataset.

La ventaja de usar ClientDatasets y bookmarks es que podrás realizar muchos cálculos y acciones en el mismo ClientDataset, es decir en la memoria local de tu equipo. En cambio si tuvieras que hacer lo mismo con querys (que se puede hacer perfectamente) estás obligando a lanzar consultas al servidor, con le consiguiente aumento del tráfico en la red, y su tiempo de demora.

Casimiro Notevi 16-08-2010 19:36:53

Cita:

Empezado por guillotmarc (Mensaje 373628)
[..] Si quieres mejorar tu código, yo empezaría evitando el uso del "with" [..]

En la mayoría de casos, with, sólo sirve para hacer ilegible el código y traerte problemas :)

JXJ 16-08-2010 19:40:19

quiero actualizar el programa.
y no usar datasnap

no importa que el trafico de la red aumente.
por que el programa trabaja en forma local.

JXJ 16-08-2010 19:43:42

si eso ya lo he notado.. con with se vuelve ilegible..

el codigo me lo pasaron y lo engo que actualizar y mejorar..


La franja horaria es GMT +2. Ahora son las 13: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