Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Conexión con bases de datos
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Conexión con bases de datos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 26-02-2005
Ricsato Ricsato is offline
Miembro
 
Registrado: oct 2003
Ubicación: Mexicali, Mexico
Posts: 72
Poder: 21
Ricsato Va por buen camino
como me ubico en la posicion de un registro buscado en un tsdbgrid

Hola, me gustaria que alguien me pudiera ayudar respecto a como mostrar la informacion en un renglon de un tsdbgrid.

tengo un query (QDetalle) y un datasource (DSDetalle) donde tengo la informacion que muestra mi componente tsdbgrid, en mi primer columna, tengo mi codigo de producto que seria mi llave primaria, entonces cuando tecleo un codigo de producto que ya existe hago la siguiente instruccion:

If QDetalle.locate('Pro_Codigo', vlpcodigo, [locaseinsensitive]) then
....

con esta instruccion el apuntador del grid se va a hacia donde esta el registro que introduje y ahi se posiciona, pero el problema es cuando son muchos registros que no se ven en una sola pantalla, este apuntador se va hasta el inicio (por ejemplo) y en mi pantalla yo sigo viendo mi ultimo registro en donde estaba tecleando el codigo y no puedo ver hasta donde se fue el apuntador, hasta que lo busque con el boton avance de pagina.

La pregunta es, como puedo hacerle para que cuando se vaya el apuntador del grid a posicionarse a la ubicacion de un codigo que este repetido, pueda tambien moverse mi pantalla y mostrarme los datos de ese renglon, sin tener que ir yo a buscar hasta donde se fue mi apuntador?

De antemano, gracias por sus opiniones.

Saludos desde Mexicali, B.C., Mexico.
Ricardo.
Responder Con Cita
  #2  
Antiguo 26-02-2005
Avatar de Lepe
[Lepe] Lepe is offline
Miembro Premium
 
Registrado: may 2003
Posts: 7.424
Poder: 29
Lepe Va por buen camino
El tsGrid no lo conozco, pero mira si tiene una proiedad o método llamado:

- MakeVisible, MakeSelectionVisible
- TopRow

Suerte.
Responder Con Cita
  #3  
Antiguo 27-02-2005
Ricsato Ricsato is offline
Miembro
 
Registrado: oct 2003
Ubicación: Mexicali, Mexico
Posts: 72
Poder: 21
Ricsato Va por buen camino
Hola, fijate que este componente no tiene ninguna propiedad o metodo make, si trae la propiedad TopRow, pero no funciono a lo que ando buscando.
gracias.
Responder Con Cita
  #4  
Antiguo 27-02-2005
Sick boy Sick boy is offline
Miembro
 
Registrado: may 2003
Ubicación: Cantabria
Posts: 245
Poder: 22
Sick boy Va por buen camino
Cita:
Hola, fijate que este componente no tiene ninguna propiedad o metodo make, si trae la propiedad TopRow, pero no funciono a lo que ando buscando.
Ummm, yo tampoco conozco ese grid, pero si tiene una propiedad TopRow, y no hace lo que se espera, para que sirve ese TopRow???

Yo creo que toprow si funciona, pero quizas no le estas pasando el valor correcto. Tienes que pasarle el valor (Longint) de la primera fila que quieres mostrar.

Mira la ayuda acerca de TopRow, creo que te sera util.
Y comprueba tambien la ayuda de la propiedad RecNo de los TDataset.

Y debajo de esto:
Cita:
If QDetalle.locate('Pro_Codigo', vlpcodigo, [locaseinsensitive]) then
Prueba a poner esto:
Código:
tsdbgrid.toprow:= QDetalle.dataset.recno;
Responder Con Cita
  #5  
Antiguo 28-02-2005
Ricsato Ricsato is offline
Miembro
 
Registrado: oct 2003
Ubicación: Mexicali, Mexico
Posts: 72
Poder: 21
Ricsato Va por buen camino
Hola!

Hola, hice lo que me indicaste, poniendo esto:
tsdbgrid.toprow:= QDetalle.dataset.recno;

pero me marca error en el datset, dice que es deconocido, lo cambie a esto:
tsdbgrid.toprow:= QDetalle.DataSource.DataSet.RecNo;
pero me marca un desbordamiento de memoria y que ese modulo no esta en memoria.

Encontre esta instruccion:
dbgDetalle.MoveBy(-50);
donde el numero del parentesis indica las posiciones a regresarse en el tsdbgrid, y funciona con ese numero fijo!!, ahora el problema es como saber en que posicion esta mi apuntador, con la siguiente instruccion:

Qdetalle.RecNo;

se supone que me regresa un entero con el numero de la posicion de mi registro, pero no me explico por que siempre me regresa un -1, alguien sabe por que? o si existe otra forma de como saber en que posicion se encuentra mi apuntador en la tabla?

lo que estoy haciendo es esto:

If QDetalle.locate('Pro_Codigo', vlpcodigo, [locaseinsensitive]) then
dbgDetalle.MoveBy(Qdetalle.RecNo);

pero como me regresa un -1 el Qdetalle.Recno, solo me avanza una posicion hacia atras y mi apuntador se encuentra en otra parte.

ejecuto aparte Qdetalle.RecNo; para ver que numero muestra, y siempre me trae un -1, siendo que tengo 187 registros.

Gracias por su ayuda.
Saludos.
Responder Con Cita
  #6  
Antiguo 01-03-2005
Sick boy Sick boy is offline
Miembro
 
Registrado: may 2003
Ubicación: Cantabria
Posts: 245
Poder: 22
Sick boy Va por buen camino
Hola,

Sigo sin saber que grid utilizas , ni tampoco se que es dbgdetalle ??

Cita:
Hola, hice lo que me indicaste, poniendo esto:
tsdbgrid.toprow:= QDetalle.dataset.recno;

pero me marca error en el datset, dice que es deconocido, lo cambie a esto:
tsdbgrid.toprow:= QDetalle.DataSource.DataSet.RecNo;
pero me marca un desbordamiento de memoria y que ese modulo no esta en memoria.
Sigo pensando que toprow es lo mas apropiado, has probado a poner ???tsdbgrid.toprow:=15 (u otro valor)

Tendras un datasource que enlaza el query con el grid, verdad??
Pues utiliza:
datasource.dataset.recno;
en lugar de
query.recno;

Yo nunca uso locate, asi que no se porque no cambia el recno de tu query, quizas alguien más pueda ayudarte en eso.

Saludos
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro


La franja horaria es GMT +2. Ahora son las 07:22:24.


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
Copyright 1996-2007 Club Delphi