Sign in Join

Live chat for Free Pascal, Lazarus, Delphi and every Pascal programmer.

Mailing lists / lazarus-es / 2010-04

posicionar fila en grid en determinado registro

15 messages · 6 people · –

Reply by email Subscribe to this list Your subscription

Read-only archive. Use j and k to move between messages.

Paola Bruccoleri

Hola a todos..
tengo un grid asociado a un tzquery.
Supongamos que me posiciono en un registro cualquiera, y agrego unos datos a otra tabla. Esos datos est�n relacionados con los del grid. Obviamente necesito actualizar el grid para ver el cambio en un importe.
Cuando hago el refresh, me queda seleccionado el primer registro del grid, y no donde yo estaba.

�C�mo puedo hacer para quedarme en ese registro? colocando alg�n bookmark?
muchas gracias a todos...
chauuuuuuuuuu

Reply by email

José Antonio Cuello
to Paola Bruccoleri

hola te envio el procedimiento que uso para refrescar los datos de un grid, espero te sirva. Un saludo.

P.D: DBGrid1 = nombre de tu grid ( esto es por si refresca el Dataset del grid )

procedure TMantForm.RefreshQry( Sender: TDataSet );
Var
  vBookMark: String;
  vActGrid : Boolean;
begin
  if Sender.Active then
    vBookMark := Sender.Bookmark
  else
    vBookMark := '';
  vActGrid := (Sender = DBGrid1.DataSource.DataSet);
  try
    if vActGrid then DBGrid1.BeginUpdate;
    Sender.Close;
    Sender.Open;
  finally
    if vActGrid then DBGrid1.EndUpdate(true);
  end;
  if vBookMark  '' then
    try
      Sender.Bookmark := vBookMark;
    except
    end;
end;

El s�b, 24-04-2010 a las 11:46 -0300, Paola Bruccoleri escribi�:

Show quoted text 19 lines
Hola a todos.. tengo un grid asociado a un tzquery. Supongamos que me posiciono en un registro cualquiera, y agrego unos datos a otra tabla. Esos datos est�n relacionados con los del grid. Obviamente necesito actualizar el grid para ver el cambio en un importe. Cuando hago el refresh, me queda seleccionado el primer registro del grid, y no donde yo estaba. �C�mo puedo hacer para quedarme en ese registro? colocando alg�n bookmark? muchas gracias a todos... chauuuuuuuuuu _______________________________________________ Lazarus-es mailing list Lazarus-es en lists.lazarus.freepascal.org http://lists.lazarus.freepascal.org/mailman/listinfo/lazarus-es

Reply by email

Ismael L. Donis García
to Paola Bruccoleri: Hola a todos.. tengo un grid asociado a un tzquery. Supongamos que me posiciono en un…

Paola tomas la llave primaria y la guardas en una variable y despu�s realiza una b�squeda de ella.

Al menos yo hago eso en otros lenguajes. Espero que aqu� funcione tambi�n.

Salu2s
=========
|| ISMAEL ||
=========

Earlier message 22 lines
----- Original Message ----- From: "Paola Bruccoleri" <pbruccoleri en adinet.com.uy> To: <lazarus-es en lists.lazarus.freepascal.org> Sent: Saturday, April 24, 2010 9:46 AM Subject: [Lazarus-es] posicionar fila en grid en determinado registro Hola a todos.. tengo un grid asociado a un tzquery. Supongamos que me posiciono en un registro cualquiera, y agrego unos datos a otra tabla. Esos datos est�n relacionados con los del grid. Obviamente necesito actualizar el grid para ver el cambio en un importe. Cuando hago el refresh, me queda seleccionado el primer registro del grid, y no donde yo estaba. �C�mo puedo hacer para quedarme en ese registro? colocando alg�n bookmark? muchas gracias a todos... chauuuuuuuuuu

Reply by email

Fredy Gonzales
to José Antonio Cuello: hola te envio el procedimiento que uso para refrescar los datos de un grid, espero te…

Te envio algo que encontre por alli de delphi y lo aplique a lazarus

type
  { TGlobal }
 // Aqui creamos la clase global THackDBGrid
 THackDBGrid = class(TDBGrid);
// Este modulo lo coloque dentro de mi datamodule, asi podia llamarlo desde
cualquier
//formulario que use data
procedure TGlobal.Refresh_gridrow(dbgrid1: TDBGrid);
var
  rowDelta: Integer;
  row: integer;
  recNo: integer;
  ds : TDataSet;
begin
  ds := THackDBGrid(dbgrid1).DataSource.DataSet;
  rowDelta := -1 + THackDBGrid(dbgrid1).Row;
  row := ds.RecNo;
  ds.Refresh;
  with ds do
  begin
    DisableControls;
    RecNo := row;
    MoveBy(-rowDelta) ;
    MoveBy(rowDelta) ;
    EnableControls;
  end;
  ds:=Nil
end;

Y lo invoco asi, cuando necesito refrescar algo

procedure Tuliquid2010.dbrwliquidaDblClick(Sender: TObject);
begin
     Application.CreateForm(Tftomaservicios, ftomaservicios);
     with ftomaservicios do
       Begin
         if(ShowModal = mrOK ) Then
           Begin
              global.Refresh_gridrow(dbrwliquida);
          end;
       end;
     FreeAndNil(ftomaservicios);
end;

Espero te sirva saludas.

Fredy Gonzales P.
Lima - Peru

Earlier message 64 lines
----- Original Message ----- From: "Jos� Antonio Cuello" <josea en artextrading.com> To: "Spanish version of Lazarus List" <lazarus-es en lists.lazarus.freepascal.org> Sent: Monday, April 26, 2010 7:44 AM Subject: Re: [Lazarus-es] posicionar fila en grid en determinado registro hola te envio el procedimiento que uso para refrescar los datos de un grid, espero te sirva. Un saludo. P.D: DBGrid1 = nombre de tu grid ( esto es por si refresca el Dataset del grid ) procedure TMantForm.RefreshQry( Sender: TDataSet ); Var vBookMark: String; vActGrid : Boolean; begin if Sender.Active then vBookMark := Sender.Bookmark else vBookMark := ''; vActGrid := (Sender = DBGrid1.DataSource.DataSet); try if vActGrid then DBGrid1.BeginUpdate; Sender.Close; Sender.Open; finally if vActGrid then DBGrid1.EndUpdate(true); end; if vBookMark '' then try Sender.Bookmark := vBookMark; except end; end; El s�b, 24-04-2010 a las 11:46 -0300, Paola Bruccoleri escribi�: > Hola a todos.. > tengo un grid asociado a un tzquery. > Supongamos que me posiciono en un registro cualquiera, y agrego unos > datos a otra tabla. Esos datos est�n relacionados con los del grid. > Obviamente necesito actualizar el grid para ver el cambio en un > importe. > Cuando hago el refresh, me queda seleccionado el primer registro del > grid, y no donde yo estaba. > > �C�mo puedo hacer para quedarme en ese registro? colocando alg�n > bookmark? > muchas gracias a todos... > chauuuuuuuuuu > > > _______________________________________________ > Lazarus-es mailing list > Lazarus-es en lists.lazarus.freepascal.org > http://lists.lazarus.freepascal.org/mailman/listinfo/lazarus-es

Reply by email

Paola Bruccoleri
to José Antonio Cuello: hola te envio el procedimiento que uso para refrescar los datos de un grid, espero te…

Jos� Antonio Cuello escribi�:

Show quoted text 34 lines
hola te envio el procedimiento que uso para refrescar los datos de un grid, espero te sirva. Un saludo. P.D: DBGrid1 = nombre de tu grid ( esto es por si refresca el Dataset del grid ) procedure TMantForm.RefreshQry( Sender: TDataSet ); Var vBookMark: String; vActGrid : Boolean; begin if Sender.Active then vBookMark := Sender.Bookmark else vBookMark := ''; vActGrid := (Sender = DBGrid1.DataSource.DataSet); try if vActGrid then DBGrid1.BeginUpdate; Sender.Close; Sender.Open; finally if vActGrid then DBGrid1.EndUpdate(true); end; if vBookMark '' then try Sender.Bookmark := vBookMark; except end; end;

Hola Jos�..
no me est� funcionando, pero quiz�s sea que algo estoy haciendo mal..

Puse ese procedimiento en el form, y lo uso de esta manera:

     f:= TfrmAgregar.Create(Self);
     try
      if (f.ShowModal = mrOK) Then
       Begin
          RefreshQry(qryM);
       end
     finally
       FreeAndNil(f);
     end;

pero no me deja el grid en la fila seleccionada, sino en la primera fila... chauuuuuuuuuu

Reply by email

Maxi
to Paola Bruccoleri

2010/4/26 Paola Bruccoleri <pbruccoleri en adinet.com.uy>:

Show quoted text 62 lines
Jos� Antonio Cuello escribi�: > > hola te envio el procedimiento que uso para refrescar los datos de un > grid, espero te sirva. Un saludo. > > P.D: DBGrid1 = nombre de tu grid ( esto es por si refresca el Dataset > del grid ) > > procedure TMantForm.RefreshQry( Sender: TDataSet ); > Var > �vBookMark: String; > �vActGrid : Boolean; > begin > �if Sender.Active then > � �vBookMark := Sender.Bookmark > �else > � �vBookMark := ''; > > �vActGrid := (Sender = DBGrid1.DataSource.DataSet); > �try > � �if vActGrid then DBGrid1.BeginUpdate; > � �Sender.Close; > � �Sender.Open; > �finally > � �if vActGrid then DBGrid1.EndUpdate(true); > �end; > > �if vBookMark '' then > � �try > � � �Sender.Bookmark := vBookMark; > � �except > � �end; > end; > > > Hola Jos�.. no me est� funcionando, pero quiz�s sea que algo estoy haciendo mal.. Puse ese procedimiento en el form, y lo uso de esta manera: � �f:= TfrmAgregar.Create(Self); � �try � � if (f.ShowModal = mrOK) Then � � �Begin � � � � RefreshQry(qryM); � � �end � �finally � � �FreeAndNil(f); � �end; pero no me deja el grid en la fila seleccionada, sino en la primera fila... chauuuuuuuuuu _______________________________________________ Lazarus-es mailing list Lazarus-es en lists.lazarus.freepascal.org http://lists.lazarus.freepascal.org/mailman/listinfo/lazarus-es

y donde haces la llamada al bookmark? o el locate del registro?

Maximiliano Duarte Linux User #495070 Ubuntu User #28504 Tolerancia significa disculpar los defectos de los dem�s; tacto, no reparar en ellos.

Reply by email

Paola Bruccoleri
to Maxi

Maxi escribi�:

Show quoted text 69 lines
2010/4/26 Paola Bruccoleri <pbruccoleri en adinet.com.uy>: > Jos� Antonio Cuello escribi�: > >> hola te envio el procedimiento que uso para refrescar los datos de un >> grid, espero te sirva. Un saludo. >> >> P.D: DBGrid1 = nombre de tu grid ( esto es por si refresca el Dataset >> del grid ) >> >> procedure TMantForm.RefreshQry( Sender: TDataSet ); >> Var >> vBookMark: String; >> vActGrid : Boolean; >> begin >> if Sender.Active then >> vBookMark := Sender.Bookmark >> else >> vBookMark := ''; >> >> vActGrid := (Sender = DBGrid1.DataSource.DataSet); >> try >> if vActGrid then DBGrid1.BeginUpdate; >> Sender.Close; >> Sender.Open; >> finally >> if vActGrid then DBGrid1.EndUpdate(true); >> end; >> >> if vBookMark '' then >> try >> Sender.Bookmark := vBookMark; >> except >> end; >> end; >> >> >> >> > Hola Jos�.. > no me est� funcionando, pero quiz�s sea que algo estoy haciendo mal.. > > Puse ese procedimiento en el form, y lo uso de esta manera: > > f:= TfrmAgregar.Create(Self); > try > if (f.ShowModal = mrOK) Then > Begin > RefreshQry(qryM); > end > > finally > FreeAndNil(f); > end; > > pero no me deja el grid en la fila seleccionada, sino en la primera fila... > chauuuuuuuuuu > > > _______________________________________________ > Lazarus-es mailing list > Lazarus-es en lists.lazarus.freepascal.org > http://lists.lazarus.freepascal.org/mailman/listinfo/lazarus-es > > y donde haces la llamada al bookmark? o el locate del registro?

se supone que el RefreshQry lo hace...pero evidentemente lo estoy usando mal :(

Reply by email

Maxi
to Paola Bruccoleri

El d�a 26 de abril de 2010 14:21, Paola Bruccoleri <pbruccoleri en adinet.com.uy> escribi�:

Show quoted text 85 lines
Maxi escribi�: > > 2010/4/26 Paola Bruccoleri <pbruccoleri en adinet.com.uy>: > >> >> Jos� Antonio Cuello escribi�: >> >>> >>> hola te envio el procedimiento que uso para refrescar los datos de un >>> grid, espero te sirva. Un saludo. >>> >>> P.D: DBGrid1 = nombre de tu grid ( esto es por si refresca el Dataset >>> del grid ) >>> >>> procedure TMantForm.RefreshQry( Sender: TDataSet ); >>> Var >>> �vBookMark: String; >>> �vActGrid : Boolean; >>> begin >>> �if Sender.Active then >>> � vBookMark := Sender.Bookmark >>> �else >>> � vBookMark := ''; >>> >>> �vActGrid := (Sender = DBGrid1.DataSource.DataSet); >>> �try >>> � if vActGrid then DBGrid1.BeginUpdate; >>> � Sender.Close; >>> � Sender.Open; >>> �finally >>> � if vActGrid then DBGrid1.EndUpdate(true); >>> �end; >>> >>> �if vBookMark '' then >>> � try >>> � � Sender.Bookmark := vBookMark; >>> � except >>> � end; >>> end; >>> >>> >>> >>> >> >> Hola Jos�.. >> no me est� funcionando, pero quiz�s sea que algo estoy haciendo mal.. >> >> Puse ese procedimiento en el form, y lo uso de esta manera: >> >> � f:= TfrmAgregar.Create(Self); >> � try >> � �if (f.ShowModal = mrOK) Then >> � � Begin >> � � � �RefreshQry(qryM); >> � � end >> >> � finally >> � � FreeAndNil(f); >> � end; >> >> pero no me deja el grid en la fila seleccionada, sino en la primera >> fila... >> chauuuuuuuuuu >> >> >> _______________________________________________ >> Lazarus-es mailing list >> Lazarus-es en lists.lazarus.freepascal.org >> http://lists.lazarus.freepascal.org/mailman/listinfo/lazarus-es >> >> > > > y donde haces la llamada al bookmark? o el locate del registro? > se supone que el RefreshQry lo hace...pero evidentemente lo estoy usando mal :( _______________________________________________ Lazarus-es mailing list Lazarus-es en lists.lazarus.freepascal.org http://lists.lazarus.freepascal.org/mailman/listinfo/lazarus-es

pasa todo el codigo de refreshqry

Maximiliano Duarte Linux User #495070 Ubuntu User #28504 Tolerancia significa disculpar los defectos de los dem�s; tacto, no reparar en ellos.

Reply by email

Paola Bruccoleri
to Maxi

Maxi escribi�:

Show quoted text 92 lines
El d�a 26 de abril de 2010 14:21, Paola Bruccoleri <pbruccoleri en adinet.com.uy> escribi�: > Maxi escribi�: > >> 2010/4/26 Paola Bruccoleri <pbruccoleri en adinet.com.uy>: >> >> >>> Jos� Antonio Cuello escribi�: >>> >>> >>>> hola te envio el procedimiento que uso para refrescar los datos de un >>>> grid, espero te sirva. Un saludo. >>>> >>>> P.D: DBGrid1 = nombre de tu grid ( esto es por si refresca el Dataset >>>> del grid ) >>>> >>>> procedure TMantForm.RefreshQry( Sender: TDataSet ); >>>> Var >>>> vBookMark: String; >>>> vActGrid : Boolean; >>>> begin >>>> if Sender.Active then >>>> vBookMark := Sender.Bookmark >>>> else >>>> vBookMark := ''; >>>> >>>> vActGrid := (Sender = DBGrid1.DataSource.DataSet); >>>> try >>>> if vActGrid then DBGrid1.BeginUpdate; >>>> Sender.Close; >>>> Sender.Open; >>>> finally >>>> if vActGrid then DBGrid1.EndUpdate(true); >>>> end; >>>> >>>> if vBookMark '' then >>>> try >>>> Sender.Bookmark := vBookMark; >>>> except >>>> end; >>>> end; >>>> >>>> >>>> >>>> >>>> >>> Hola Jos�.. >>> no me est� funcionando, pero quiz�s sea que algo estoy haciendo mal.. >>> >>> Puse ese procedimiento en el form, y lo uso de esta manera: >>> >>> f:= TfrmAgregar.Create(Self); >>> try >>> if (f.ShowModal = mrOK) Then >>> Begin >>> RefreshQry(qryM); >>> end >>> >>> finally >>> FreeAndNil(f); >>> end; >>> >>> pero no me deja el grid en la fila seleccionada, sino en la primera >>> fila... >>> chauuuuuuuuuu >>> >>> >>> _______________________________________________ >>> Lazarus-es mailing list >>> Lazarus-es en lists.lazarus.freepascal.org >>> http://lists.lazarus.freepascal.org/mailman/listinfo/lazarus-es >>> >>> >>> >> y donde haces la llamada al bookmark? o el locate del registro? >> >> > se supone que el RefreshQry lo hace...pero evidentemente lo estoy usando mal > :( > > > _______________________________________________ > Lazarus-es mailing list > Lazarus-es en lists.lazarus.freepascal.org > http://lists.lazarus.freepascal.org/mailman/listinfo/lazarus-es > > pasa todo el codigo de refreshqry

est� mas arriba en este correo...

Reply by email

Maximiliano Duarte

-- mensaje original --
Asunto: Re: [Lazarus-es] posicionar fila en grid en determinado registro De: Paola Bruccoleri <pbruccoleri en adinet.com.uy> Fecha: 26/04/2010 20:54

Maxi escribi�:

Show quoted text 92 lines
El d�a 26 de abril de 2010 14:21, Paola Bruccoleri <pbruccoleri en adinet.com.uy> escribi�: > Maxi escribi�: > >> 2010/4/26 Paola Bruccoleri <pbruccoleri en adinet.com.uy>: >> >> >>> Jos� Antonio Cuello escribi�: >>> >>> >>>> hola te envio el procedimiento que uso para refrescar los datos de un >>>> grid, espero te sirva. Un saludo. >>>> >>>> P.D: DBGrid1 = nombre de tu grid ( esto es por si refresca el Dataset >>>> del grid ) >>>> >>>> procedure TMantForm.RefreshQry( Sender: TDataSet ); >>>> Var >>>> vBookMark: String; >>>> vActGrid : Boolean; >>>> begin >>>> if Sender.Active then >>>> vBookMark := Sender.Bookmark >>>> else >>>> vBookMark := ''; >>>> >>>> vActGrid := (Sender = DBGrid1.DataSource.DataSet); >>>> try >>>> if vActGrid then DBGrid1.BeginUpdate; >>>> Sender.Close; >>>> Sender.Open; >>>> finally >>>> if vActGrid then DBGrid1.EndUpdate(true); >>>> end; >>>> >>>> if vBookMark '' then >>>> try >>>> Sender.Bookmark := vBookMark; >>>> except >>>> end; >>>> end; >>>> >>>> >>>> >>>> >>>> >>> Hola Jos�.. >>> no me est� funcionando, pero quiz�s sea que algo estoy haciendo mal.. >>> >>> Puse ese procedimiento en el form, y lo uso de esta manera: >>> >>> f:= TfrmAgregar.Create(Self); >>> try >>> if (f.ShowModal = mrOK) Then >>> Begin >>> RefreshQry(qryM); >>> end >>> >>> finally >>> FreeAndNil(f); >>> end; >>> >>> pero no me deja el grid en la fila seleccionada, sino en la primera >>> fila... >>> chauuuuuuuuuu >>> >>> >>> _______________________________________________ >>> Lazarus-es mailing list >>> Lazarus-es en lists.lazarus.freepascal.org >>> http://lists.lazarus.freepascal.org/mailman/listinfo/lazarus-es >>> >>> >>> >> y donde haces la llamada al bookmark? o el locate del registro? >> >> > se supone que el RefreshQry lo hace...pero evidentemente lo estoy usando mal > :( > > > _______________________________________________ > Lazarus-es mailing list > Lazarus-es en lists.lazarus.freepascal.org > http://lists.lazarus.freepascal.org/mailman/listinfo/lazarus-es > > pasa todo el codigo de refreshqry

est� mas arriba en este correo...

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

Reply by email

Paola Bruccoleri
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

ok.. probar� las otras sugerencias....
si tienes alg�un ejemplo, ser� bienvenido...
chauuuuuuuuuuu

Reply by email

José Antonio Cuello
to Maximiliano Duarte: -- mensaje original -- Asunto: Re: [Lazarus-es] posicionar fila en grid en determinado…

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.BookmarkvBookmark) 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.

Reply by email

Maxi
to José Antonio Cuello

El d�a 27 de abril de 2010 03:46, Jos� Antonio Cuello <josea en artextrading.com> escribi�:

Show quoted text 33 lines
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.BookmarkvBookmark) 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.

Reply by email

Paola Bruccoleri

Hola a todos..

Show quoted text 8 lines
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

estuve probando tambien la sugerencia de Fredy (sin resultados). El asunto es que yo modifico el campo de una tabla que a su vez es parte de la consulta que muestro en el grid y en otros tdbxxxx usando un procedim almacenado.
Al final de cuentas, us� el metodo de Ismael, y que tb uso en otros lenguajes: el locate para volver a la fila donde estaba.

De todas formas, son muy interesantes las otras opciones y que no descarto usar para otros casos.

Muchas gracias a todos...
chauuuuuuuuu

Reply by email

José Antonio Cuello
to Maxi: El d�a 27 de abril de 2010 03:46, Jos� Antonio Cuello <josea en artextrading.com>…

Reconozco que suelo utilizar ese m�todo, es decir pasarme el puntero al dataset entre forms, pero sigue siendo necesario el refresco, pues "normalmente" adem�s de los campos principales suelen haber decripciones y dem�s campos de otras tablas y estos no se rellenan a menos que refresques el query/sql. Como el m�todo Refresh no siempre funciona finalmente opt� por cerrar y abrir el dataset de nuevo.

Me reitero en mi afirmaci�n de que el bookmark funcionaba correctamente. Pero hace un tiempo que no programo con datasets, haber si saco un rato y miro por qu� est� fallando.

Un saludo.

El mar, 27-04-2010 a las 09:12 -0300, Maxi escribi�:

Show quoted text 28 lines
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

Reply by email