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 Buscar Temas de Hoy Marcar Foros Como Leídos

Conexión con bases de datos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 17-06-2016
donpedro donpedro is offline
Miembro
 
Registrado: nov 2009
Posts: 102
Poder: 0
donpedro cantidad desconocida en este momento
Combinar Dos Dblookupcombobox

Hola a todos y muchas bendiciones

Estoy realizando un modulo de Inscripción de Estudiantes en Delphi 2009 con MySql, mi duda es la siguiente:

La tabla inscripción contiene tres campos que se alimentan de tres tablas diferentes, estas tablas son:



Ahora aqui le presento el modulo de inscripción donde contiene 3 DbLookUpCombobox (SERVICIO / TANDA, GRADO, SECCIÓN) que se van a llenar de esas tres tablas



Explico, UN SERVICIO puede tener varios GRADOS y UN GRADO puede tener VARIAS SECCIONES

Lo que quiero hacer es que cuando yo seleccione UN SERVICIO me muestre en el otro dblookupcombobox los grados que están asignados al servicio seleccionado.

De la misma forma cuando seleccione UN GRADO me muestre en el otro dblookupcombobox las SECCIONES que le han sido asignadas a ese GRADO.

espero haberme explicado, y espero sus respuestas, agradeciendo de antemano, cualquier ayuda brindada.
Responder Con Cita
  #2  
Antiguo 17-06-2016
rocksoft rocksoft is offline
Miembro
NULL
 
Registrado: may 2016
Posts: 71
Poder: 8
rocksoft Va por buen camino
Buenas,

puedes usar en Dblookupcombobox el metodo onchange, o del datasource ondatachange.

create 3 Tquery

Q_Servicio
creas los parametros SQL Select * from Servicio (al modificar aqui algo disparas el onchange para el sql de Q_Grado)


Q_Grado le asignas el Masterdatasource de tu tabla Q_Servicio, masterfield el Servicios_ID (al modificar aqui algo disparas el onchange para el sql de Q_Seccion)
creas los parametros SQL: Select * from grado where servicio_id = :servicio_id

Q_Seccion y lo mismo de como en grado pero con la seccion.

en teoria deberia de funcionar
Responder Con Cita
  #3  
Antiguo 17-06-2016
donpedro donpedro is offline
Miembro
 
Registrado: nov 2009
Posts: 102
Poder: 0
donpedro cantidad desconocida en este momento
Hola Rocksoft
lei tu comentario y le he buscado la vuelta, pero no entiendo que debo hacer,
Responder Con Cita
  #4  
Antiguo 18-06-2016
Avatar de AgustinOrtu
[AgustinOrtu] AgustinOrtu is offline
Miembro Premium
NULL
 
Registrado: ago 2013
Ubicación: Argentina
Posts: 1.858
Poder: 15
AgustinOrtu Es un diamante en brutoAgustinOrtu Es un diamante en brutoAgustinOrtu Es un diamante en brutoAgustinOrtu Es un diamante en bruto
Lo que apunta rocksoft me parece correcto

Podes usar cualquiera de los dos eventos que el te comenta (TDBLookupComboBox.OnChange, o bien TDataSource.OnDataChange)

Estos eventos se disparan cuando cambia el registro seleccionado

Luego es cuestion de traer de la otra tabla, por ejemplo GRADOS, todos los Grados que cumplan que GRADOS.Servicios_Id = SERVICIOS.Servidios_Id

Eso lo haces usando una consulta o query SQL

Asi que lo que debes hacer es, crear un componente query, realizar la consulta y asignar ese DataSet al TDBLookupComboBox que estas usando para seleccionar Grados
Responder Con Cita
  #5  
Antiguo 18-06-2016
donpedro donpedro is offline
Miembro
 
Registrado: nov 2009
Posts: 102
Poder: 0
donpedro cantidad desconocida en este momento
AgustinOrtu hola, excusa mi ignorancia, a cual datasource en el evento ondatachange debo colocarle el codigo, al datasource de servicios o grados????
Responder Con Cita
  #6  
Antiguo 18-06-2016
Avatar de AgustinOrtu
[AgustinOrtu] AgustinOrtu is offline
Miembro Premium
NULL
 
Registrado: ago 2013
Ubicación: Argentina
Posts: 1.858
Poder: 15
AgustinOrtu Es un diamante en brutoAgustinOrtu Es un diamante en brutoAgustinOrtu Es un diamante en brutoAgustinOrtu Es un diamante en bruto
De acuerdo a lo que comentaste mas arriba, a ambos:

El TDataSource de Servicios va a disparar el evento cuando selecciones un Servicio: en ese momento cargas la tabla de Grados

Osea que en el TDataSource de Servicios, en el evento OnDataChange deberias poner el codigo para llenar la tabla de Grados

Cuando seleccionen un Grado, se va a disparar el evento para que llenes la tabla de Secciones

Osea que en el TDataSource de Grados, en el evento OnDataChange deberias poner el codigo para llenar la tabla de Secciones
Responder Con Cita
  #7  
Antiguo 18-06-2016
donpedro donpedro is offline
Miembro
 
Registrado: nov 2009
Posts: 102
Poder: 0
donpedro cantidad desconocida en este momento
AgustinOrtu, hola

no me ha funcionado, no se si lo hice mal............si podrias hacer un ejempo, lo agradeceria mucho,, o si no tendre que trucear el programa
quizas agregando un edit que me capture el id de servicios, y luego hacer la comparacion con ese edit.
Responder Con Cita
  #8  
Antiguo 18-06-2016
Avatar de AgustinOrtu
[AgustinOrtu] AgustinOrtu is offline
Miembro Premium
NULL
 
Registrado: ago 2013
Ubicación: Argentina
Posts: 1.858
Poder: 15
AgustinOrtu Es un diamante en brutoAgustinOrtu Es un diamante en brutoAgustinOrtu Es un diamante en brutoAgustinOrtu Es un diamante en bruto
Muestra el código y si da error cual y donde ocurre
Responder Con Cita
  #9  
Antiguo 18-06-2016
donpedro donpedro is offline
Miembro
 
Registrado: nov 2009
Posts: 102
Poder: 0
donpedro cantidad desconocida en este momento
HOla, mira lo que tuve que hacer.........

en el evento Onclick del Dblookupcombobox correspondietne a SERVICIOS coloque el siguiente codigo

Código Delphi [-]
edit1.Text:=inttostr(fmodulo.T_Servicios.FieldByName('servicios_id').AsInteger);

with fmodulo do
begin
q_generico.close;
q_generico.SQL.Clear;
q_generico.SQL.Add('select * from grados where servicios_id='+edit1.Text +'');
q_generico.Open;



end;

Le paso al edit1 el id de servicios que selecciono, luego con la consulta comparo el id de servicio de la tabla GRADOS con el numero que esta en el edit1. y asi me funciona..............un poco truqueao...que creen
Responder Con Cita
  #10  
Antiguo 18-06-2016
Avatar de AgustinOrtu
[AgustinOrtu] AgustinOrtu is offline
Miembro Premium
NULL
 
Registrado: ago 2013
Ubicación: Argentina
Posts: 1.858
Poder: 15
AgustinOrtu Es un diamante en brutoAgustinOrtu Es un diamante en brutoAgustinOrtu Es un diamante en brutoAgustinOrtu Es un diamante en bruto
Y como habias hecho antes que te daba error/no funcionaba? Eres el segundo hoy que le recomiendo que use parametros en sus comandos SQL

Creo que me voy a hacer una placa como la de Casimiro de los Tags
Responder Con Cita
  #11  
Antiguo 20-06-2016
rocksoft rocksoft is offline
Miembro
NULL
 
Registrado: may 2016
Posts: 71
Poder: 8
rocksoft Va por buen camino
Buenas,

Código Delphi [-]
edit1.Text:=inttostr(fmodulo.T_Servicios.FieldByName('servicios_id').AsInteger);

aparte de lo que te menciona AgustinOrtu, dos cositas si ya que haces lo de arriba en asignar un valor a un edit, lo que no es elegante ni tiene mucho sentido, mejor lo haces de esta manera:
Código Delphi [-]
var s:string
..
s:=fmodulo.T_Servicios.FieldByName('servicios_id').AsString

lo segundo no uses el evento onclick, cada vez que pinches el Dblookupcombobox se dispara el codigo del query, usa como mencionando en el primer post:
Cita:
puedes usar en Dblookupcombobox el metodo onchange, o del datasource ondatachange.
Responder Con Cita
  #12  
Antiguo 20-06-2016
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.021
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Cita:
Empezado por AgustinOrtu Ver Mensaje
Creo que me voy a hacer una placa como la de Casimiro de los Tags
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

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

Temas Similares
Tema Autor Foro Respuestas Último mensaje
como pasar datos de un DBLookupComboBox a otro DBLookupComboBox francodelphi Conexión con bases de datos 3 30-11-2011 22:02:34
Tratar de combinar dblookupcombobox con radiogroup aleja Conexión con bases de datos 2 13-06-2008 15:33:38
Combinar 2 imagenes en una seoane Trucos 0 14-06-2006 14:19:15
Combinar tablas jrcosta75 Conexión con bases de datos 1 19-02-2004 22:44:48


La franja horaria es GMT +2. Ahora son las 19:52: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