Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Locate (https://www.clubdelphi.com/foros/showthread.php?t=46664)

mauqu 06-08-2007 15:49:59

Locate
 
Estimados todos:

Tengo un problemita, estoy trabajando en un proyecto de base de datos y en el momento en el que se abre mi formulario principal quiero que me busque un dato en una tabla por lo cual en el evento formshow de mi formulario principal, luego de abrir el clientdataset le digo que me haga un locate para que busque el dato, lo encuentra pero por alguna razón no me refresca los controles asociados a mi datasource. alguna idea?

{codigo delphi}

procedure TfrmMain.FormShow(Sender: TObject);
begin
DataSource.dataset:=ClientDadaSet;
DataSource.dataset.open;
DataSource.dataset.locate('CLAVE','3',[loCaseInsensitive]);
end;

{\codigo delphi}

esta todo bien definido, el clientdataset apunta a un adoquery que tiene un sql mirando a una tabla, el dato ('3') existe en la tabla.

Espero se entienda, saludos y gracias.

eduarcol 06-08-2007 16:28:09

No entiendo porq no haces el locate en el clientdataset y cargas primero en un datasource, prueba esto:

Código Delphi [-]
procedure TfrmMain.FormShow(Sender: TObject);
begin
   miClientdataset.locate('CLAVE','3',[loCaseInsensitive]);
end;

mauqu 06-08-2007 16:52:01

probe haciendo el locate en el clientdataset y despues asignarle el clientdataset al datasource pero igual, lo encuentra pero no me muestra los datos en pantalla, es decir, en el dbgrid que esta mirando al datasource.

eduarcol 06-08-2007 16:59:56

Creo que sigo sin entender, te digo a mi entender:

Un ClientDateSet se conecta al DataSource, el DataSource al DbGrid, todo esto en tiempo de diseño, luego si tu lo que quieres es mostar un solo registro en el dbgrid el locate lo ubica pero no lo filtra son conceptos distintos, una cosa es que lo ubique y otra es que en un dbgrid solo lo muestre a el

mauqu 06-08-2007 17:10:08

Perdon, yo me explique mal.

Tengo estos datos en una tabla en una base de datos.

CLAVE,TipoProducto,NombreProducto,Precio

y estos valores en el orden de las columnas que describi antes.

1,2,Driver 5 1/4,10
2,2,FP,50
3,5,Keyboard,10
4,6,mouse,5

cuando abre la aplicación pregunta que producto quiere ver, entonces le pido que ingrese el codproducto, por ejemplo el 3.

todo esto en el show del form., y como mostre antes en el código cargo el datasource y hago un locate, para que en la grilla el registro activo sea el que seleccionó el usuario, me entiendes?, la idea es que te abra la grilla y se resalte el producto que eligió el usuario antes de mostrar el formulario principal, ahora bien, la grilla se esta cargando, pero no me esta poniendo activo el producto que selecciono el usuario. :S, (soy malaso pa explicar sorry).

jhonny 06-08-2007 17:10:31

Bueno, me parece que eduarcol tiene razón, ¿Que quieres?, ¿Filtrar o localizar?, el locate solo te localiza el registro, en cambio el Filter te mostraria solo ese registro. ¿Cual de los dos quieres usar?

jhonny 06-08-2007 17:14:16

Ahhh, bueno, pero ¿De que manera necesitas que se resalte dicho registro?, Por medio de un color?, ¿Por medio de una señal?, ¿Un dibujo?

mauqu 06-08-2007 17:17:51

si, de la forma que lo hace el dbgrid cuando seleccionas un registro, digamos, todo el registro de color azul

eduarcol 06-08-2007 17:23:00

En la propiedad Options del dbgrid, muestra

rowSelect := True;
AlwaysShowSelection := True

jhonny 06-08-2007 17:27:20

Si quieres seguir usando el Locate, puede que te sirva...

Activa la opción dgAlwaysShowSelection de la propiedad Options de la Grid.

Si no quieres seguir usando el Locate, puedes buscar en los foros "como colorear una fila, dependiendo de una condición" hay bastante información al respecto.

Nota: Te me haz adelantado y por mucho Eduardo :D


La franja horaria es GMT +2. Ahora son las 16:50:05.

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