![]() |
![]() |
![]() |
![]() |
![]() |
FTP | ![]() |
![]() |
CCD | ![]() |
![]() |
Buscar | ![]() |
![]() |
Trucos | ![]() |
![]() |
Trabajo | ![]() |
![]() |
Foros | ![]() |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
![]() |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
|||
|
|||
Leer datos mientras se ingresan en un dbgrid
Hola, estoy desarrollando un sistema en el cual, en la celda de un dbgrid, se ingresa una palabra, que a medida que se va escribiendo, en un segundo dbgrid se va filtrando los registros de una tabla ado que inicien con la palabra que se esta ingresando. Lo he hecho con onkeydown sobre el primer dbgrid, capturo cada tecla presionada y voy formando una cadena que la uso para filtrar en la tabla ado. Pero quería saber si hay una forma mas sencilla o alguna función que capture lo que se ingresa en un dbgrid. Desde ya muchas gracias al que me pueda aportar algún dato.
|
#2
|
||||
|
||||
Quizá valdría la pena que explicaras un poco más la situación: por tu descripción, el filtro no parece ser una tarea adecuada para un dbgrid. Más bien poner un TEdit normal y filtrar con base a su contenido.
// Saludos |
#3
|
|||
|
|||
Perdón Roman, estuve sin internet hasta hoy. Voy a tratar de ser mas claro. En un campo del primer dbgrid, el usuario escribe las primeras palabras de una descripción de mercadería, a medida que esta escribiendo, en el segundo dbgrid, aparecen los artículos de tabla 'artículos' que inician con las letras que esta ingresando. Ejemplo, en el primero escribe 'PAL' y en el segundo solo aparecen los artículos que inicien con 'PAL'. La idea es que no presione la tecla Enter para que filtre, sino, a medida que va escribiendo letra por letra, lo haga. Pero al NO presionar Enter, el valor que se ingresa,no esta actualizado en la tabla donde apunta el primer Dbgrid. Por eso leo letra por letra usando el OnkeyDown, voy pegando las letras y con ellas filtro en la segunda tabla. Espero haber sido claro.
|
#4
|
||||
|
||||
¿Por qué usas un dbgrid para que teclee el usuario el artículo que busca?
__________________
La otra guía de estilo | Búsquedas avanzadas | Etiquetas para código | Colabora mediante Paypal |
#5
|
|||
|
|||
Casimiro, te adjunte un .pdf, para mostrarte la interfaz de usuario que utilizo.
![]() Última edición por Casimiro Notevi fecha: 03-11-2015 a las 19:14:30. |
#6
|
||||
|
||||
Sigo pensando que ingresando el texto en un edit es mejor que dos grid
|
#7
|
|||
|
|||
Agustinortu, estéticamente no me gusta que se ingrese la carga de una factura atraves de un edit. No pongo en discucion cual es la ideal, simplemente me parece mas amigable el poder navegar por cualquier fila y columna y modificar a "piacere", sin tener que ir a un edit para modificar algo. Pero solo es mi modesto punto de vista. Pero mas alla de cual es la mejor opcion, mi pregunta es si alguien puede aportarme información de como leer los datos de un dbgrid a medida que se ingresan sin tener que presionar "enter".
Última edición por aromigaret fecha: 03-11-2015 a las 21:55:51. |
#8
|
||||
|
||||
Por favor acláreme esto:
El usuario escribe en el primer dbgrid las primeras letras del nombre de un producto. Con ello se filtra el listado del segundo dbgrid. Ok. ¿Y luego? ¿Qué se hace con ese filtrado? ¿Se selecciona un elemento del segundo dbgrid y se implanta en el primero? Pero entonces ¿ese primer dbgrid es, a la vez, fuente de datos y receptor de datos? O bien, ¿el filtrado es sólo para que el capturista sepa que escribir? Pero la factura debería tener el ID del producto y no todo el nombre. Es por ello que te te pedimos que aclares y las sugerencias van más allá de una simple estética en la presentación de los datos. Desde mi perspectiva, para dar de alta un elemento de una factura, lo más práctico para el capturista sería:
// Saludos |
#9
|
|||
|
|||
Roman, el funcionamiento del primer dbgrid es así :
primer columna se ingresa cantidad a facturar al presionar "Enter" se pasa a la segunda columna donde se escriben las primeras letras de la descripción a buscar, al mismo instante en el segundo dbgrid, aparecen los artículos que inician con las letras introducidas. Luego hay varias opciones para el operador: 1- si el artículo es el primero de la lista, estando en el 1er dbgrid, presiona enter y se carga dicho artículo con su marca, precio y realiza el subtotal. 2 -si el articulo esta en otra posición, con el mouse o presionando la tecla "down", pasa al segundo dbgrid y escoge el o los artículos a cargar (ya que está habilitada la opción multiselect) y al presionar "enter" el o los artículos seleccionados se cargan en el primer dbgrid, haciendo más rápida la carga ya que solo resta poner cantidades. Hoy funciona bien capturando con el evento onkeydown, las teclas presionadas , pero en mi afán de perfeccionar el código quisiera saber si hay algún buffer o función que examinar en el dbrid para tomar lo que se carga y no una letra por letra . |
#10
|
||||
|
||||
Hola aromigaret.
Cita:
Salida: ![]() De todos modos, recuerda que si estas trabajando en red, las búsquedas incrementales pueden tornar todo lento ya que aumentan el tráfico desde y hacia el servidor. Saludos ![]()
__________________
Daniel Didriksen Guía de estilo - Uso de las etiquetas - La otra guía de estilo .... |
#11
|
|||
|
|||
Muchas gracias ecfisa, eso me servirá.
Gracias por el comentario del trafico en red, pero este sistema lo hice para que mis clientes me envíen sus pedidos atraves del mismo, sin la necesidad de recordar los códigos de la mercadería. |
![]() |
|
|
![]() |
||||
Tema | Autor | Foro | Respuestas | Último mensaje |
Actualizar form mientras se reciben datos por sockets | JMGR | Internet | 3 | 23-12-2011 21:47:27 |
¿Cómo ir filtrando los datos de un dbgrid mientras voy escribiendo en un edit? | Master23 | Varios | 7 | 30-06-2010 22:01:45 |
Progreso mientras carga datos... | jarlos | Conexión con bases de datos | 7 | 18-10-2007 16:39:45 |
Problema al leer un campo del dbgrid | lejia | Conexión con bases de datos | 3 | 10-10-2007 15:30:47 |
Saber cuando ingresan a tu PC | genius | Varios | 4 | 11-12-2006 14:47:52 |
![]() |
|