Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Bases de datos > Firebird e Interbase
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 25-07-2005
Avatar de dmagui
dmagui dmagui is offline
Miembro
 
Registrado: may 2005
Posts: 168
Poder: 20
dmagui Va por buen camino
Exclamation DBGrid

Buenas Tardes:

Mi pregunta es la siguiente ¿existe algena manera que un DBGrid en un campo como por ejemplo que diga proveedor cuando me pare alli me despliege los nombres existentes que hay en la base de datos de proveedores y pueda seleccionar uno?

si la hay como se podria hace.
Gracias Por la ayuda
__________________
El espiritu humano no se acaba cuando es derrotado se termina cuando se rinde.
Responder Con Cita
  #2  
Antiguo 26-07-2005
Avatar de hector.roma
hector.roma hector.roma is offline
Miembro
 
Registrado: jul 2005
Ubicación: a caballo entre Galicia y Portugal
Posts: 58
Poder: 19
hector.roma Va por buen camino
Yo creo que no

Es decir, con un TDBGrid normal no conozco la forma de hacerlo, puedes buscar por los foros hilos en los que se habla de componentes avanzados que hagan eso que tu quieres...si no tambien los tienes por internet.

En cualquier caso, donde está tu espíritu aventurero... hazlo tú. No quedará muy profesional, es decir, va a quedar una chapuza pero mira el lado positivo, vas a aprender un monton.

Una posible idea:
  • No muestres los datos directamente de la tabla pásalos a una tabla intermedia donde puedas jugar con ellos sin miedos...
Así cuando te pares en el registro que tu quieras, mediante los eventos vas a saberlo, podrás lanzar un evento que te modifique la tabla intermedia, colocando como nuevos registros entre el que tu quieres modificar y el siguiente, tantas filas como valores posibles... y cuando hagas clic sobre una de esas filas te quedas con el nombre asociado, se lo metes al campo que te interesa, eliminas las filas esas y refrescas el grid. Antes dije chapuza o fricada???

Ejemplo:
Código SQL [-]
Codigo Nombre Tipo
------ ------ ----
1      Luis   Cliente
2      Pepe   Proveedor
3      Julio
4      Carlos Proveedor 
y asi cuando hagas click sobre el "Tipo" de (3, Julio), la tabla te quedará:
Código SQL [-]
Codigo Nombre Tipo
------ ------ ----
1      Luis   Cliente
2      Pepe   Proveedor
3      Julio
              Cliente
              Proveedor
              Empleado
              Otros
4      Carlos Proveedor 
y al hacer click sobre una linea que no tiene un codigo asociado recoges el valor lo cargas en tu tabla REAL y vueves a crear la tabla intermedia.

Venga a programar... y a pasarlo bien.

PD: Cuando no duermo me vuelvo algo friki
Responder Con Cita
  #3  
Antiguo 26-07-2005
Avatar de vtdeleon
vtdeleon vtdeleon is offline
Miembro
 
Registrado: abr 2004
Ubicación: RD & USA
Posts: 3.236
Poder: 24
vtdeleon Va por buen camino
Saludos

Si mal no recuerdo, las columnas de un DBGrid tiene una propiedad llamada PickList, en la qe puede (en modo dise~o o Ejecucion) aderir datos y estos seran desplegados (en modo de ejecucion) en la celda como un ComboBox.
Puedes intentar hacer un bucle que recorrar la tabla de proveedor* e ir agregando al PickList de la columnas que decidas

Suerte
(*)Una vez no tuve que hacer eso y se agregaron los datos solo, pero estas tablas estaban relacionadas Maestro-Detalles
__________________
Van Troi De León
(Not) Guía, Code vB:=Delphi-SQL, ¿Cómo?
Viajar en el tiempo no es teóricamente posible, pues si lo fuera, ya estarían aqui contándonos al respecto!
Responder Con Cita
  #4  
Antiguo 26-07-2005
Avatar de hector.roma
hector.roma hector.roma is offline
Miembro
 
Registrado: jul 2005
Ubicación: a caballo entre Galicia y Portugal
Posts: 58
Poder: 19
hector.roma Va por buen camino
Disculpas

Cita:
El desconocimiento de una ley no exime de su cumplimiento.
Aquí pasa lo mismo, que yo no conozca algo, no implica que no exista o que no se pueda hacer. Antes de convertir mis palabras en dogma de fé, seguir buscando un poco más, por lo menos hasta tener una segunda opinión...

Desde estás líneas pido disculpas a quien haya podido desmoralizar...

Un saludo, y para otra vez antes de contestar instalaré delphi y haré alguna comprobación en vez de hacerlo de memoria...

Última edición por hector.roma fecha: 26-07-2005 a las 01:39:16. Razón: Cambio tipo de letra
Responder Con Cita
  #5  
Antiguo 26-07-2005
afxe afxe is offline
Miembro
 
Registrado: jul 2004
Ubicación: Malaga-España
Posts: 273
Poder: 20
afxe Va por buen camino
Te sirve un lookup field ???

Hola.No sé si es lo que estás buscando, pero prueba a crear un campo del tipo lookup en el editor de campos persistentes del dataset asociado al DBGrid. En el momento en que metas ese campo como una columna del Grid y entres en modo edición se creará automáticamente un dblookupcombobox.

Saludos.
Responder Con Cita
  #6  
Antiguo 26-07-2005
Avatar de marcoszorrilla
marcoszorrilla marcoszorrilla is offline
Capo
 
Registrado: may 2003
Ubicación: Cantabria - España
Posts: 11.221
Poder: 10
marcoszorrilla Va por buen camino
Otra solución puede ser incrustar un DbLookUpCombobox en la Rejilla y si te parece dificil esta opción, a parte de las mentadas por mis compañeros de Foro, puedes hacer que al hacer doble clic sobre una linea de la rejilla se abra un formulario de diálogo con los proveedores (modal) para que se ejija uno.

Un Saludo.
__________________
Guía de Estilo de los Foros
Cita:
- Ça c'est la caisse. Le mouton que tu veux est dedans.
Responder Con Cita
  #7  
Antiguo 26-07-2005
Avatar de dmagui
dmagui dmagui is offline
Miembro
 
Registrado: may 2005
Posts: 168
Poder: 20
dmagui Va por buen camino
Cita:
Empezado por vtdeleon
Saludos

Puedes intentar hacer un bucle que recorrar la tabla de proveedor* e ir agregando al PickList de la columnas que decidas
Como se puede hacer esto?? tienes por hay si no es mucha molestia un hilo en donde yo me pueda guiar para hacer mi bucle??
__________________
El espiritu humano no se acaba cuando es derrotado se termina cuando se rinde.
Responder Con Cita
  #8  
Antiguo 26-07-2005
Avatar de dmagui
dmagui dmagui is offline
Miembro
 
Registrado: may 2005
Posts: 168
Poder: 20
dmagui Va por buen camino
Cita:
incrustar un DbLookUpCombobox en la Rejilla
Y como se puede hacer esto??? cuando se este dibujando la rejilla dibujar en esa columna un dblookup o como???

Besos chupos y abrazos para todos gracias por la ayuda
__________________
El espiritu humano no se acaba cuando es derrotado se termina cuando se rinde.
Responder Con Cita
  #9  
Antiguo 26-07-2005
Avatar de vtdeleon
vtdeleon vtdeleon is offline
Miembro
 
Registrado: abr 2004
Ubicación: RD & USA
Posts: 3.236
Poder: 24
vtdeleon Va por buen camino
Saludos

De memoria:
Código Delphi [-]
procedure Cualquiera;
begin
  With TbProveedor do begin
    Open;
//  First;
    While not Eof do begin
      DbGrid.Column[0].PickList.Append(FieldByName('campo').AsString;
      Next;
    End;
  End;
end;
Aunque creo que lo dicho por
Cita:
Empezado por vtdeleon
*)Una vez no tuve que hacer eso y se agregaron los datos solo, pero estas tablas estaban relacionadas Maestro-Detalles
Puedes hacerlo con
Cita:
Empezado por afxe
prueba a crear un campo del tipo lookup en el editor de campos persistentes del dataset asociado al DBGrid. En el momento en que metas ese campo como una columna del Grid y entres en modo edición se creará automáticamente un dblookupcombobox.
Suerte
__________________
Van Troi De León
(Not) Guía, Code vB:=Delphi-SQL, ¿Cómo?
Viajar en el tiempo no es teóricamente posible, pues si lo fuera, ya estarían aqui contándonos al respecto!
Responder Con Cita
  #10  
Antiguo 26-07-2005
Avatar de dmagui
dmagui dmagui is offline
Miembro
 
Registrado: may 2005
Posts: 168
Poder: 20
dmagui Va por buen camino
Hola gracias con respecto a este codigo:

Código:
procedure Cualquiera;
   begin 
	  With TbProveedor do begin 
		 Open;// First; 
		   While not Eof do 
			  begin 
				 DbGrid.Column[0].PickList.Append(FieldByNam('campo').AsString; 
			Next;
		 End; 
	 End;
end;
Código:
With TbProveedor do begin
En esta parte va el nombre de la tabla cierto??pero el problema es que aqui me dice que no esta definido Proveedor que es mi tablahay que agregarle algo?? gracias por su ayuda
__________________
El espiritu humano no se acaba cuando es derrotado se termina cuando se rinde.

Última edición por dmagui fecha: 26-07-2005 a las 16:07:16.
Responder Con Cita
  #11  
Antiguo 26-07-2005
Avatar de el_barto
el_barto el_barto is offline
Miembro
 
Registrado: may 2005
Ubicación: Bogota Colombia
Posts: 533
Poder: 20
el_barto Va por buen camino
No mira hazlo asi en tu procedure:

Código Delphi [-]
 
 With IBTable1 do begin
    Open;
//  First;
    While not Eof do begin
        DbGrid1.Columns[0].PickList.Add(IBTable1.FieldByName('campo').Asstring); 
      Next;
    End;
  End;

lo que si no tengo NPI es de como hacerlo segun como indica macoszorrila, es decir agregando un dblookupcombobox y te agradeceria marcos si puedes abrir nuestras mentes con esta interesante solucion
__________________
Una forma de alcanzar tus metas es ayudando a otros a alcanzar las suyas
Responder Con Cita
  #12  
Antiguo 26-07-2005
Avatar de dmagui
dmagui dmagui is offline
Miembro
 
Registrado: may 2005
Posts: 168
Poder: 20
dmagui Va por buen camino
hayyyy gracias pero hay un problema con esta solucion y es que hay que hacer como 4 click para que despliegue la lista esto se puede corregir????
__________________
El espiritu humano no se acaba cuando es derrotado se termina cuando se rinde.
Responder Con Cita
  #13  
Antiguo 26-07-2005
Avatar de vtdeleon
vtdeleon vtdeleon is offline
Miembro
 
Registrado: abr 2004
Ubicación: RD & USA
Posts: 3.236
Poder: 24
vtdeleon Va por buen camino
Saludos
Cita:
Empezado por el_barto
lo que si no tengo NPI es de como hacerlo segun como indica macoszorrila, es decir agregando un dblookupcombobox y te agradeceria marcos si puedes abrir nuestras mentes con esta interesante solucion
Chequea este hilo, no es con un DBLookUpCombobox pero es con un Check, y creo que tiene la misma "ciencia":P
http://www.clubdelphi.com/foros/show...bgrid+checkbox
http://www.clubdelphi.com/foros/show...bgrid+checkbox
http://www.clubdelphi.com/foros/show...bgrid+checkbox
__________________
Van Troi De León
(Not) Guía, Code vB:=Delphi-SQL, ¿Cómo?
Viajar en el tiempo no es teóricamente posible, pues si lo fuera, ya estarían aqui contándonos al respecto!
Responder Con Cita
  #14  
Antiguo 26-07-2005
Avatar de el_barto
el_barto el_barto is offline
Miembro
 
Registrado: may 2005
Ubicación: Bogota Colombia
Posts: 533
Poder: 20
el_barto Va por buen camino
pero como dice marcos es que hacer esto para el caso con el que estoy haciendo pruebas:

tabla1 es de PERMISOS con campos cod_per, user_name, prodcre
tabla2 es de USUARIOS con campos cod_user, user_name, user_pass

lo que quiero es escoger el user_name mediante una lista desplegable cuando este en el la tabla PERMISOS

cuando hago dobleclick en el IBTable1 me despliega un editor hago click derecho y escojo add fields despues hago click derecho y escojo newfield

Despues de esto me muestra un cuadro de dialogo y me aparecen los siguientes campos:

Nombre : coloco un nombre cualquiera
Component : se coloca solito
Type: le coloco string de 20
FieldType: Escoji el Lookup
KeyField: puse la llave primaria de la tabla1
Resultfield: el campo que deseo mostrar en el combo
lookup keys: llave primaria de la tabla2

eso es lo que entendi, pero me saca un error que dice:
DataField not permitted on open Dataset

y hay si no tengo ni idea como corregirlo.
__________________
Una forma de alcanzar tus metas es ayudando a otros a alcanzar las suyas
Responder Con Cita
  #15  
Antiguo 26-07-2005
Avatar de el_barto
el_barto el_barto is offline
Miembro
 
Registrado: may 2005
Ubicación: Bogota Colombia
Posts: 533
Poder: 20
el_barto Va por buen camino
Lightbulb

Cita:
Empezado por dmagui
hayyyy gracias pero hay un problema con esta solucion y es que hay que hacer como 4 click para que despliegue la lista esto se puede corregir????
Hola de nuevo pequeña dmagui

mira si te sirve te lo puedo reducir de 4 a 2 click solo tienes que poner en true la propiedad del dbgrid dgalwayshoweditor, me gustaria decirte como hacer para que de una vez te apareciera la lista deplegable y lo unico que tuvieras que hacer es seleccionar pero me queda dificil por que no se y a decir verdad creo que es imposible
__________________
Una forma de alcanzar tus metas es ayudando a otros a alcanzar las suyas
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:56:31.


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