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 23-09-2003
Giniromero Giniromero is offline
Miembro
 
Registrado: may 2003
Ubicación: Madrid
Posts: 296
Poder: 21
Giniromero Va por buen camino
consulta SQL-DbGrid y registro por defecto

Hola a todos,


Estoy desarrollando una aplicación con Delphi 6 e InterBase 7.

Las tablas de IB las manipulo con IBDataset desde Delphi. Todos los IBDataset están en un DataModule.

He creado un form, desde el cual puedo buscar un cliente en concreto, en 'Tbclientes', por apellidos, nombre, o nº de cliente, (según se seleccione en un radioGroup).

Utilizo un TEdit para tomar los criterios de búsqueda, y pasárselos al código de la propiedad selectSQL del TbClientes, que los gestiones usando "LIKE"

El filtrado me lo hace bien, según lo que le pido, me muestra sólo los registros que cumplen los parámetros de búsqueda que le inserto, dentro de un DBGrid conectado a mi TbClientes.

Si selecciono cualquiera de los registros resultado de la consulta, se selecciona automáticamente como el registro actual de la tabla, mostrándome en el mainform, toda la información relativa al cliente seleccionado.

El problema es que el registro que por defecto viene marcado en azul, de entre los resultados obtenidos, no se considera el seleccionado por defecto, y si lo quiero seleccionar, tengo primero que marcar otro registro, para luego marcar este primero.

Esto no sería gran problema, si no fuera por que cuando el resultado de la consulta es un sólo registro, no tengo la opción de marcar otro de los registros para volver a marcar el primero, y por tanto, no tengo manera de seleccionarlo.

CONCLUSIÓN

Necesito que me ayude alguien sobre como hacer para poder marcar estos registros, o mejor, como hacer para que se considere como, el registro seleccionado por defecto, el que se muestra en azul, dentro del DBGrid, sin necesidad de señalarlo.

Muchas gracias

Virginia
__________________
Sonrie al mundo, y el mundo te sonreirá :)
Responder Con Cita
  #2  
Antiguo 23-09-2003
judoboy judoboy is offline
Miembro
 
Registrado: may 2003
Ubicación: Valencia
Posts: 139
Poder: 21
judoboy Va por buen camino
Vamos a ver te comento yo hago creo que lo mismo que tu, pero el DBGrid donde muestro los resultados no lo conecto a mi tabla de clientes, si no que lo conecto al resultado de la búsqueda, y luego para seleccionar que me muestre el cliente en el formulario principal de clientes hago lo siguiente:

Código:
UModulodatos.CLIENTE.Dataset.
Locate('CODIGO_CLIENTE',DBGResultados.Fields[0].Value,[]);
 FrmResultadoBusquedaClientes.ModalResult:=MrOk;
Donde el primer campo que muestro en el DBGrid es el codigo_cliente que es a su vez la clave primaria de mi tabla cliente.

Otra cosa yo dejo varios Edits en blanco para la búsqueda, CIF,NOMBRE,CODIGO.
Y cuando ejecuto la búsqueda miro si el Edit esta vacío o no para añadir ese campo en la búsqueda es decir para filtrar más la tabla.

Espero que te sirva.

Si no te aclaras te puedo detallar el proceso con más detalle
Responder Con Cita
  #3  
Antiguo 23-09-2003
Giniromero Giniromero is offline
Miembro
 
Registrado: may 2003
Ubicación: Madrid
Posts: 296
Poder: 21
Giniromero Va por buen camino
¿Como es eso del resultado de la búsqueda?

Si es posible, ¿podrías explicarme un poco más el proceso?

Muchas gracias.

Virginia
__________________
Sonrie al mundo, y el mundo te sonreirá :)
Responder Con Cita
  #4  
Antiguo 23-09-2003
Viet Viet is offline
Miembro
 
Registrado: jul 2003
Ubicación: Argentina - Mar del Plata
Posts: 252
Poder: 21
Viet Va por buen camino
No puedes poner DataSet.First ?
__________________
Marín Ignacio Borthiry (Viet) - "El hombre arriesga su vida cada vez que elije y eso es lo que lo hace libre" ;)
Responder Con Cita
  #5  
Antiguo 23-09-2003
judoboy judoboy is offline
Miembro
 
Registrado: may 2003
Ubicación: Valencia
Posts: 139
Poder: 21
judoboy Va por buen camino
Si no quieres hacer nada más prueba con lo que te dice Viet

Te comento yo hago lo siguiente
Utilizo una Query y un componente DataSource conectado a la Query, entonces yo los datos los muestro en el DBGrid que tengo en otro formulario, y en el evento OnShow de este último formulario cargo los datos en el DBGrid con los que tiene el DataSource.
Responder Con Cita
  #6  
Antiguo 24-09-2003
Giniromero Giniromero is offline
Miembro
 
Registrado: may 2003
Ubicación: Madrid
Posts: 296
Poder: 21
Giniromero Va por buen camino
Hola a todos,

Cita:
judoboy ---
Utilizo una Query y un componente DataSource conectado a la Query, entonces yo los datos los muestro en el DBGrid que tengo en otro formulario, y en el evento OnShow de este último formulario cargo los datos en el DBGrid con los que tiene el DataSource.
Hasta aquí, perfecto, es lo que yo hago, el problema es sólo al tratar de cambiar el cliente del que quiero que me muestre mi aplicación la información. Esto es, si de la consulta sólo obtengo UN registro, no me deja marcarlo como el registro por defecto.

Usando:

code:--------------------------------------------------------------------------------
UModulodatos.CLIENTE.Dataset.
Locate('CODIGO_CLIENTE',DBGResultados.Fields[0].Value,[]);
FrmResultadoBusquedaClientes.ModalResult:=MrOk;
--------------------------------------------------------------------------------


Tal como me sugirió judoboy, me soluciona cuando tengo pocos registros, pero si estoy buscando por nº de cliente, y por ejemplo, quiero buscar al cliente 1, como hay muchos que comiencen con 1, me devuelve muchos registros la consulta, y al hacer el locate, se me eterniza la busqueda.

Saludos

Virginia
__________________
Sonrie al mundo, y el mundo te sonreirá :)
Responder Con Cita
  #7  
Antiguo 24-09-2003
judoboy judoboy is offline
Miembro
 
Registrado: may 2003
Ubicación: Valencia
Posts: 139
Poder: 21
judoboy Va por buen camino
Muchos clientes cuantos son?
Responder Con Cita
  #8  
Antiguo 24-09-2003
Giniromero Giniromero is offline
Miembro
 
Registrado: may 2003
Ubicación: Madrid
Posts: 296
Poder: 21
Giniromero Va por buen camino
Tengo en total, 10727 registros en ese tabla, exactamente no puedo decirte cuantos registros me devuelve si le pongo como parámetro de busqueda un único nº de un sólo dígito, pero son muchos los que pueden comenzar por 1.

¿por qué?, ¿se te ocurre algo?

Gracias

Virginia
__________________
Sonrie al mundo, y el mundo te sonreirá :)
Responder Con Cita
  #9  
Antiguo 24-09-2003
Giniromero Giniromero is offline
Miembro
 
Registrado: may 2003
Ubicación: Madrid
Posts: 296
Poder: 21
Giniromero Va por buen camino
hola a todos,

y a todos gracias...

creo que lo he solucionado. A continuación explico como, por si alguien lo necesita.

1) Lo primero, le pido que me filtre la tabla por el usuario en el que estamos, de modo que el nº de registros que me devuelve la consulta, es 1.

2) Después considera si la busqueda la hacemos por nº de cliente, o apellidos, (usando un radiogroup), de modo que:

A) Si quiero buscar por el nº de cliente, busca exactamente el nº que le insertemos:

where NUMALU = EditBuscar

B) Si se selecciona buscar por nombre o por apellidos, es cuando uso el like.

En cualquiera de los casos, salgo de la aplicación pulsando un botón OK, cuyo código es:

FrmDModule.TbClientes.Locate('NUMALU', (FrmDModule.TbClientes.Fields[0].Value), []);
ModalResult := mrOK;

Tal como me aconsejo judoboy.

De modo que antes de salir, me situa en el cliente que tengo seleccionado, en el dbgrid.

Lo dicho, muchas gracias a todos.

Virginia
__________________
Sonrie al mundo, y el mundo te sonreirá :)
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 15:31:16.


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