Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > SQL
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 19-01-2011
verito_83mdq verito_83mdq is offline
Miembro
NULL
 
Registrado: nov 2010
Posts: 118
Poder: 14
verito_83mdq Va por buen camino
Consulta sobre ComboBox y Sql...

Buenas a todos!! Espero que anden bien!! El problema que tengo es el siguiente,
en un form tengo 3 ComboBox que se llenan con sentencias Sql, a medida que
se eligen los item de los ComboBox se llenan los otros. Este es el primer Combo
que se llena cuando se crea el Form,con este código solo llena el Primero ComboBox


Código SQL [-]
'sql'>
Código SQL [-]
'keywordsql'>procedure TDatosVentasForm.FormCreate(Sender: TObject); 
'keywordsql'>begin 
 
               CiudadComboBox.Enabled:=False; 
               SucursalComboBox.Enabled:=False; 
 
 
            //Empresa ComboBox 
 
           'keywordsql'>with QueryDataModule.EmpresaZQuery 'keywordsql'>do 
              'keywordsql'>begin 
                'keywordsql'>If 'keywordsql'>active 'keywordsql'>then close; 
                SQL.Clear; 
                SQL.'keywordsql'>Add('quotesql'>'Select * from empresa Order By Nombre'); 
                Open; 
                  'keywordsql'>While 'keywordsql'>not QueryDataModule.EmpresaZQuery.Eof 'keywordsql'>do 
                     'keywordsql'>begin 
                         EmpresaCombobox.Items.'keywordsql'>Add(QueryDataModule.EmpresaZQuery.FieldByName('quotesql'>'Nombre').Text); 
                         QueryDataModule.EmpresaZQuery.Next; 
                     'keywordsql'>end; 
 
 
              'keywordsql'>end;
Una vez que se selecciona la empresa viene este código, Con este código se selecciona la empresa y se fija en la tabla Sucursales todas las sucursales de la empresa ordenados por ciudad. Por Ejemplo la Empresa 'xx' tiene 3 sucursales en Roma y dos en Bari entonces yo quiero saber de las sucursales de Roma la dirección entonces viene esta otra consulta: procedure TDatosVentasForm.EmpresaComboBoxChange(Sender: TObject); begin CiudadComboBox.Enabled:=True; CiudadCombobox.Items.Clear; SucursalComboBox.Items.Clear; with QueryDataModule.EmpresaZQuery do begin If active then close; SQL.Clear; SQL.Add('Select * from empresa where Nombre= '''+ EmpresaCombobox.Text +''' '); Open; end; em:=QueryDataModule.EmpresaZQuery.FieldByName('ID_Empresa').Value; with QueryDataModule.SucursalesZQuery do begin If active then close; SQL.Clear; SQL.Add('Select Distinct ID_Ciudad from sucursal where ID_Empresa ='+em+''); Open; While not QueryDataModule.SucursalesZQuery.Eof do begin CiudadCombobox.Items.Add(QueryDataModule.SucursalesZQuery.FieldByName('ID_Ciudad').Text); QueryDataModule.SucursalesZQuery.Next; end; end; ci:=QueryDataModule.SucursalesZQuery.FieldByName('ID_Ciudad').Text end;




Esta Consulta selecciona la dirección de la sucursales de Roma de la
Empresa 'xx' entonces llena el ultimo ComboBox con las direcciones
y yo elijo la sucursal que quiero.

Código SQL [-]
SucursalComboBox.Enabled:=True; 
               SucursalComboBox.Items.Clear; 
 
 
           with QueryDataModule.SucursalesZQuery do 
              begin 
                If active then close; 
                  SQL.Clear; 
                  SQL.Add('Select *  from sucursal where ID_Empresa ='+em+' and ID_Ciudad='+ci+''); 
                  Open; 
                     While not QueryDataModule.SucursalesZQuery.Eof do 
                       begin 
                         SucursalComboBox.Items.Add(QueryDataModule.SucursalesZQuery.FieldByName('Direccion').Text); 
                         QueryDataModule.SucursalesZQuery.Next; 
                       end; 
              end;



Osea el problema esta que la variable ''+ci+' tiene que pasar varios
registros y no se como hacer esto! Se entendió??
Fue larga la explicación pude ir directamente al grano pero quería que
entiendan bien lo que quiero hacer . Espero que me puedan dar una mano,
cualquier cosa que no entiendan no me molesta explicar las veces que haga falta.
Gracias!!!!!!!!!!!!!!
Responder Con Cita
  #2  
Antiguo 19-01-2011
Avatar de Aleca
Aleca Aleca is offline
Miembro
 
Registrado: may 2003
Ubicación: Venado Tuerto, Argentina
Posts: 277
Poder: 21
Aleca Va por buen camino
no entendí porque ci tiene que pasar varios registros?
__________________
Aleca
Responder Con Cita
  #3  
Antiguo 19-01-2011
verito_83mdq verito_83mdq is offline
Miembro
NULL
 
Registrado: nov 2010
Posts: 118
Poder: 14
verito_83mdq Va por buen camino
Gracias Aleca!! La variable ci tiene que pasar las diferentes ciudad en donde se encuentra la empresa, Supongamos La empresa 'zz' tiene sucursales en Bahia Blanca, Rosario, Miramar.
En sql yo hago
Código SQL [-]
 Select Distinct ID_Ciudad from sucursal where ID_Empresa =2;
Acá sale los ID de las 3 ciudades (las ciudades las tengo en una tabla aparte) . El problema es que yo necesito guardar esos 3 Id en este caso, pero pueden ser mas o menos y después hacer otra consulta, y la variable solo me guarda el ultimo ID.
Se entendió?
Responder Con Cita
  #4  
Antiguo 19-01-2011
verito_83mdq verito_83mdq is offline
Miembro
NULL
 
Registrado: nov 2010
Posts: 118
Poder: 14
verito_83mdq Va por buen camino
Nadie me puede dar una mano?
Responder Con Cita
  #5  
Antiguo 19-01-2011
Avatar de Aleca
Aleca Aleca is offline
Miembro
 
Registrado: may 2003
Ubicación: Venado Tuerto, Argentina
Posts: 277
Poder: 21
Aleca Va por buen camino
Cita:
Empezado por verito_83mdq Ver Mensaje
Gracias Aleca!! La variable ci tiene que pasar las diferentes ciudad en donde se encuentra la empresa, Supongamos La empresa 'zz' tiene sucursales en Bahia Blanca, Rosario, Miramar.

En sql yo hagoCódigo SQL [-] Select Distinct ID_Ciudad from sucursal where ID_Empresa =2;


Acá sale los ID de las 3 ciudades (las ciudades las tengo en una tabla aparte) . El problema es que yo necesito guardar esos 3 Id en este caso, pero pueden ser mas o menos y después hacer otra consulta, y la variable solo me guarda el ultimo ID.
Se entendió?
las diferentes ciudades las podes guardar en un TStringList o un Array asi armas la consulta recorriendo la lista.
Código Delphi [-]
  for i := 0 to Lista.Count -1 do
    if i = Lista.Count - 1
      SQL.Add('ID_CIUDAD = ' + Lista[i]
    else
     SQL.Add('ID_CIUDAD = ' + Lista[i] + ' or '
algo asi seria, lo estoy haciendo de memoria y sin probarlo.
__________________
Aleca
Responder Con Cita
  #6  
Antiguo 19-01-2011
urixiv urixiv is offline
Miembro
 
Registrado: sep 2006
Posts: 23
Poder: 0
urixiv Va por buen camino
No sé si te he entendido bien... pero el caso es que quieres hacer una select en la que un campo lo quieres filtrar por más de un valor?
Si es eso yo te aconsejo que en vez de hacer un "=" hagas un "in".
es decir
Código SQL [-]
ciudad in (valor1, valor2, valor3)
Los valores entiendo que los tienes o los puedes sacar haciendo una consulta y montando tu mismo el string...
espero haberte podido ayudar!
Si no es eso, lo siento!
Responder Con Cita
  #7  
Antiguo 19-01-2011
verito_83mdq verito_83mdq is offline
Miembro
NULL
 
Registrado: nov 2010
Posts: 118
Poder: 14
verito_83mdq Va por buen camino
Me parece que entre lo que aporto urixiv y Aleca algo va a salir,.
Primero tendría que solucionar el tema de que en una variable guarde varios registros y lo que dijo Aleca me parece buena esa idea, una vez que tenga solucionado eso la consulta la tendría que hacer como dijo urixiv.
Vamos a ver que sale de esto!! Gracias chicos.! Cualquier cosa los vuelvo a molestar!
Responder Con Cita
  #8  
Antiguo 20-01-2011
ppalmamichi ppalmamichi is offline
Miembro
 
Registrado: abr 2005
Posts: 24
Poder: 0
ppalmamichi Va por buen camino
mejor utiliza DbLookUpComboBox asi haces:
- una consulta para mostrar las ciudades
- una consulta para mostrar sucursales y al mismo tiempo ten un DBEdit para que muestre la direccion de la sucursal que elijas en este DbLookUpComboBox.

con esto es mas simple.

espero me haya explicado.
__________________
e un mondo dificile
Responder Con Cita
  #9  
Antiguo 20-01-2011
verito_83mdq verito_83mdq is offline
Miembro
NULL
 
Registrado: nov 2010
Posts: 118
Poder: 14
verito_83mdq Va por buen camino
Hola ppalmamichi!!! Espere que estés bien, antes que nada gracias por aportar esa idea.
Ahora bien el comboBoxlooup no lo use porque quiero trabajarlo con instrucciones Sql, sin poner la tabla en modo insert.
Hasta donde yo se el comboBoxlooup hay que conectarlo a un datasource y este a la tabla, vos me querés decir que puedo conectarlos a un query?? Nunca probé.. como seria eso?
Responder Con Cita
  #10  
Antiguo 20-01-2011
ppalmamichi ppalmamichi is offline
Miembro
 
Registrado: abr 2005
Posts: 24
Poder: 0
ppalmamichi Va por buen camino
enlazas tu Query con un datasource al DBLookUpComboBox y configuras las siguientes propiedades de este:

ListSource: Datasource
keyfield: el campo pk
lisfield: el campo que quieres que se muestre en el combo.

y un DBEdit tambien enlazado al datasource mostrando el campo direccion. para que cuando seleccionen la ciudad en el combo, el dbedit muestre la direccion.

saludos.
__________________
e un mondo dificile
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

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Hacer una consulta utilizando un Combobox aanil SQL 6 26-05-2010 20:31:37
Pregunta sobre combobox radge OOP 3 27-06-2008 15:34:35
Una Ayudita consulta like y combobox enecumene Conexión con bases de datos 13 06-10-2007 17:37:08
ayudo sobre el combobox ramphi Varios 4 12-05-2006 23:05:13


La franja horaria es GMT +2. Ahora son las 11:06:14.


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