Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   MS SQL Server (https://www.clubdelphi.com/foros/forumdisplay.php?f=23)
-   -   ayuda con los dbgrids (https://www.clubdelphi.com/foros/showthread.php?t=49154)

amix 15-10-2007 03:10:03

ayuda con los dbgrids
 
hola
tengo un problemita :confused: , tengo 2 pantallas una es de pura consulta y contiene un dbgrid y la otra es de busqueda y da los resultados en otro dbgrid, lo q me han pedido es que cuando haga la busqueda en los resultados si le doy dbclick a cualquiera de ellos por ejemplo a la columna uno q tiene como clave el 3 entonces me mande a la pantalla de consulta y me seleccione la clave 3 del dbgrid y la vrdd no tengo idea de como hacerle si alguien me puede ayudar de antemano graxias :)

enecumene 15-10-2007 03:16:33

Hola Amix, mira no entendi muy bien lo quieres, a ver, lo que quieres es que luego de una busqueda y al hacer doble click un resultado especifico te presente los detalles en un form? si es asi solo debes usar el mismo dataset arrastrar los edits al otro form y en el evento OnDblClick del dbgrid pones:

Código Delphi [-]
Form1:=TForm1.Create(self);
Form1.Show;

Tan simple como eso, ahora si no entendi bien lo que quieres avisame.

Saludos.

enecumene 15-10-2007 03:23:06

Hombre, no me habia dado cuenta de que se trataba de dos dbgrids en diferentes forms, los grids tienen la misma tabla o diferentes tablas con una clave en comun? deberias dar mas detalles para poderte ayudar.

Saludos.

NeoTrooper 15-10-2007 09:57:12

Supongo que tendrias que pasar resultado recogido de busqueda y pasarlo por parametros al de la consulta. Quiza algo asi:

Código:

public
clave:integer;
....
procedure TForm1.DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect;
  DataCol: Integer; Column: TColumn; State: TGridDrawState);
begin
clave:=DataSet1.FieldByName('clave').AsInteger;
end;

Y asi que el dbgrid de consulta se posiciona donde se encuentra esta clave.

Lepe 15-10-2007 11:38:48

Lo mejor para ello es usar propiedades:

Código Delphi [-]
// Form para ver un solo registro:

TFormConsulta = class (TForm)

private 
   FClave:integer;
   procedure SetClave(const Value:integer);

public
  property Clave:integer read FClave write SetClave;
end;

implementation

procedure TFormConsulta.SetClave(const Value:integer);
begin
  if Value <> FClave then
  begin 
     if not dataset.Active then
       dataset.Open;
     FClave := Value;
    if not dataset.Locate('NombreCampo', Value, []) then
       ShowMessage('no encuentro el registro con el valor ' + inttostr(Value))
    else
       ShowMessage('ok, estoy situado en el registro');
  end;
end;

procedure TFormConsulta.Button1Click 
// boton para realizar la búsqueda y mostrar los resultados:
begin
  With TFormBusqueda.Create(nil) do
  begin 
     if ShowModal = mrOk then
       Clave := Resultado;
     Free;
  end;
El Form de búsqueda se muestra como modal, tendrá una variable llamada Resultado de tipo integer:
Código Delphi [-]
// en el Form de búsqueda, puedes hacer algo así en el evento doble clic del grid:
 Resultado := Formbusqueda.DAtasetPrincipal.FieldByname('clave').asinteger;
 self.ModalResult := mrOk;

El funcionamiento:

En la ventana de consulta pulsas el button1, se abre la ventana de busqueda y espera a que el usuario dé doble clic sobre una fila (siempre se devuelve la clave primaria, ya que a partir de ahí podremos tomar cualquier campo de ese registro), la ventana se cierra y la ventana de consulta estará situado en ese registro.

Espero sea lo que necesites.

Saludos

amix 17-10-2007 03:30:05

Muchas graxias por ayudarme chicos me fue de gran ayuda ;) y ojala y me siguan apoyando


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

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