[Lazarus-es] posicionar fila en grid en determinado registro

Maxi maximiliano.duarte en gmail.com
Mar Abr 27 14:12:01 CEST 2010


El día 27 de abril de 2010 03:46, José Antonio Cuello
<josea en artextrading.com> escribió:
> El lun, 26-04-2010 a las 22:25 -0300, Maximiliano Duarte escribió:
>> Paola, se me hace q eso nunca va a funcionar ya q al cerrar el dataset y volverlo a abrir el conjunto cambio y la marca ya no es vida. Sugiero q hagas las modificaciones directamente sobre el dataset q apunta a la grilla y listo, cuando volves ya tenes el dato nuevo. Sino la otra es guardara clave primaria, cerrar, abrir y hacer locate. Si no entendes mañana t paso un ejemplo. Ahora esoty con el telefono
>
> Hola, creo que tu afirmación no es correcta. El bookmark se calcula
> según la posición del registro y si el mismo no ha sido cambiado sigue
> siendo el mismo. Lo he estado probando y veo que no funciona porque al
> asignarle de nuevo el bookmark al dataset no hace nada. Esto estaba
> funcionando, llevo usando ese procedimiento desde hace muchos años,
> cuando tenga un rato revisaré el código del free pascal y del Zeos. Me
> da que pasa algo con el bookmark, pues hace una conversión de string a
> puntero y algo no va al intentar situarse de nuevo.
>
> Hacer la prueba siguiente y vereis como funciona. Se situa en el antiguo
> registro.
>
> vBookmark := Query1.Bookmark;
> Query1.Close;
> Query1.Open;
> while (not Query1.Eof) and (Query1.Bookmark<>vBookmark) do
>  Query1.Next;
>
> De todas maneras también funciona con locate, sólo que te obliga a
> depender del numero de campos de la clave primaria.
>
> Un saludo.
>
>
>
> _______________________________________________
> Lazarus-es mailing list
> Lazarus-es en lists.lazarus.freepascal.org
> http://lists.lazarus.freepascal.org/mailman/listinfo/lazarus-es
>


el manejo de bookmarks en ambientes clientes/servidores no esta muy
recomendado aunque funcionan, lo mejor para mi en hacerlo si se puede
sin cerrar el dataset y sobre el mismo registro.
ejemplo


Form1
//aca tengo la grilla con el dataset de los datos(o puede estar en un
datamodule)

//llamo a la ventana que modifica el campo
 with TfrmAgregar.Create(Self) do
 try
    ShowModal;
 finally
     Free;
end;

//////
frmAgregar
//en este form hago refencia al fomr1
uses form1

//asigno los dbedit al dataset del form1

//todo lo que modifique se verá reflejado directamente sin necesidad
de refrescos





-- 
Maximiliano Duarte
Linux User #495070
Ubuntu User #28504

Tolerancia significa disculpar los defectos de los demás; tacto, no
reparar en ellos.




More information about the Lazarus-es mailing list