Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

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

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 22-03-2007
Avatar de Caral
[Caral] Caral is offline
Miembro Premium
 
Registrado: ago 2006
Posts: 7.659
Poder: 25
Caral Va por buen camino
Combobox, tabla, campos, items

Hola a Todos y gracias de antemano.
Vereis, estoy haciendo un programita que sirve de filto de la base de datos (access).
Tengo un combobox y un dbgrid para escoger la base de datos un combobox adicional, escoge el campo y un edit define el dato.
Que pretendo hacer:
1. Al entrar en el programa que el primer combobox carge las tablas (los Nombres) de cada Tabla.
2- Al cambiar el primer combobox se cargen en el segundo combobox los campos (nombres) de la tabla escogida.
3- Al llenar el edit, se muestre el filtro en el dbgrid.
Se como llenar un combobox con los campos de una tabla, pero no se como llenarlo con los nombres de esos campos.
Maestros si me podeis ayudar, lo agradeceria mucho.
Saludos
Responder Con Cita
  #2  
Antiguo 22-03-2007
Avatar de ArdiIIa
[ArdiIIa] ArdiIIa is offline
Miembro Premium
 
Registrado: nov 2003
Ubicación: Valencia city
Posts: 1.481
Poder: 22
ArdiIIa Va por buen camino
Hola Caral:
No tengo el delphi a mano pero de memoria sería algo tal como supongo que haces:
Código Delphi [-]
For I := 0 To Tabla.FieldsCount-1 Do
Combobox.Items.Add( Tabla.Fields[i].FieldName);
No estoy muy seguro....
__________________
Un poco de tu generosidad puede salvar la vida a un niño. ASÍ DE SENCILLO

Última edición por ArdiIIa fecha: 22-03-2007 a las 21:23:12.
Responder Con Cita
  #3  
Antiguo 22-03-2007
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
¿Usas ADO, no?

Llenar el combo cboTablas con las tablas:

Código Delphi [-]
ADOConnection.GetTableNames(cboTablas.Items);

Llenar el combo cboCampos con los campos de la tabla del combo anterior:

Código Delphi [-]
ADOConnection.GetFieldNames(cboTablas.Text, cboCampos.Items);

// Saludos
Responder Con Cita
  #4  
Antiguo 22-03-2007
Avatar de Caral
[Caral] Caral is offline
Miembro Premium
 
Registrado: ago 2006
Posts: 7.659
Poder: 25
Caral Va por buen camino
Hola
ArdiIIa: no me camino, no se porque?, no soy muy diestro en estas cosas.
Roman: Que decir. , nada que no te alla dicho antes. Eres un Maestro.
Muchas Gracias a los dos por ayudarme, ya esta listo y funcionando.
Gracias pero muchas gracias.
Saludos
Responder Con Cita
  #5  
Antiguo 22-03-2007
Avatar de Caral
[Caral] Caral is offline
Miembro Premium
 
Registrado: ago 2006
Posts: 7.659
Poder: 25
Caral Va por buen camino
Hola de nuevo.
Bueno todo va bien pero tengo una duda adicional.
Lo que estoy haciendo:
1-Cargo la tablas en el primer combobox1 (perfecto)
2-Cargo los campos en el segundo combobox2 (perfecto)
3-Introduzco un dato en el Edit para filtrar con este codigo:
Código Delphi [-]
  ADOQuery1.Open;
  ADOQuery1.Filter := ComboBox2.Text+ ' Like '''+Edit1.Text+ '*''';
  ADOQuery1.Filtered := True;
Funciona muy bien pero cuando el campo es text (String), si el campo es numerico se fastidio el invento.
Pregunta:
1-Como hago para que identifique el campo antes de filtrar?
2-Como hago para que se quede en blanco el edit1 despues de hacer la consulta.?
Código Delphi [-]
Edit1.Clear;
Esto de arriba no camina, ya que se esta filtrando:

Me ayudais por favor.
Saludos
Responder Con Cita
  #6  
Antiguo 23-03-2007
[egostar] egostar is offline
Registrado
 
Registrado: feb 2006
Posts: 6.557
Poder: 25
egostar Va camino a la fama
Hola Caral

Así de bote pronto lo que yo haría es lo siguiente

Código Delphi [-]
try
   Filtro := strtoint(edit1.text);
   ADOQuery1.Filter := ComboBox2.Text+ ' = '+Filtro;
except 
   ADOQuery1.Filter := ComboBox2.Text+ ' Like '''+Edit1.Text+ '*''';
end;

ADOQuery1.Filter := True;
ADOQuery1.Open;

No entiendo como abres primero la tabla y luego la filtras, yo imaginaría que primero se asigna el filtro y luego se abre la tabla.

Saludos
__________________
"La forma de empezar es dejar de hablar y empezar a hacerlo." - Walt Disney

Última edición por egostar fecha: 23-03-2007 a las 03:02:03.
Responder Con Cita
  #7  
Antiguo 23-03-2007
[egostar] egostar is offline
Registrado
 
Registrado: feb 2006
Posts: 6.557
Poder: 25
egostar Va camino a la fama
Estimado Caral

De regreso a casa en el trafico de esta mi bella ciudad y escuchando a Alvin Lee, venia haciendo recuento de las actividades de este dia y vino a mi mente tu pregunta.

Tengo una duda.

Porque estas usando un filltro en un Query, yo he usado filtros pero en TTables no en TQuery, los datos en un Query son filtrados directamente en su sentencia SQL.

Saludos desde casa.
__________________
"La forma de empezar es dejar de hablar y empezar a hacerlo." - Walt Disney

Última edición por egostar fecha: 23-03-2007 a las 06:08:37.
Responder Con Cita
  #8  
Antiguo 23-03-2007
Avatar de Lepe
[Lepe] Lepe is offline
Miembro Premium
 
Registrado: may 2003
Posts: 7.424
Poder: 29
Lepe Va por buen camino
Sin detenerme en lo comentado por los demás foristas (que estoy totalmente de acuerdo), el problema que te dá son precisamente las comillas simples que añades.

Mira la diferencia, si es un campo definido como String:
Código SQL [-]
 select * from table where codigo = '33'

Si está definido como integer, el sql debe quedar así:
Código SQL [-]
 select * from table where codigo = 33

Exactamente igual que usando filter.

Si es numérico, no tendría sentido usar el operador "Like", ya que irá a un registro que no le sirve al usuario para nada, por ejemplo busca el 33 y encuentra el 3 .

Saludos
__________________
Si usted entendió mi comentario, contácteme y gustosamente,
se lo volveré a explicar hasta que no lo entienda, Gracias.
Responder Con Cita
  #9  
Antiguo 23-03-2007
Avatar de Caral
[Caral] Caral is offline
Miembro Premium
 
Registrado: ago 2006
Posts: 7.659
Poder: 25
Caral Va por buen camino
Hola
egostar: Efectivamente se puede hacer el filtro por sentencia sql, posiblemente mas efectivamente pero en este caso me quedo un poco mas comodo hacerlo asi.
Gracias por tu explicacion, ya tenia mas o menos el camino, lo que pasa es que me empeño en no usar el try except, porque en diseño genera un error y particularmente no me gusta, asi es como lo tengo, pero no lo voy a dejar.
Código Delphi [-]
var
   Filtro : String;
begin
   If (Edit1.Text <> '') then
   begin
   AdoQuery1.Filtered := false;
   Filtro := ComboBox2.Text+ ' Like '''+Edit1.Text+ '*''';
   ADOQuery1.Filter := Filtro;
   //showmessage(Filtro);
   try
      ADOQuery1.Filtered := True;
   except
      try
         Filtro := ComboBox2.Text+ ' Like '+Edit1.Text;
         ADOQuery1.Filter := Filtro;
         ADOQuery1.Filtered := True;
      except
         Filtro := ComboBox2.Text+ ' >= '+Edit1.Text;
         ADOQuery1.Filter := Filtro;
         //showmessage(Filtro);
         ADOQuery1.Filtered := True;
      end;
   end
    end
   else ADOQuery1.Filtered := False;
Lepe: Gracias por la explicacion, efectivamente por ese camino estoy, entiendo bien lo de String e integer, en este filtro en especial lo que pretendo es el cambio continuo por eso en este caso el signo = no me camina, estoy tratando con >= que funciona mas adecuadamente aun asi sigo pensando y recibiendo sugerencias.
Una opcion que se me ha ocurrido es hacer el cambio en un combobox, asi definiria el tipo de campo, integer, float, string y simplemente me daria el resultado , no se que tal os parece, habra otra opcion?.Seguro que si.
Gracias por la ayuda que me dais.
Saludos
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
Llenar un combobox con los campos de una tabla enecumene Conexión con bases de datos 6 07-03-2007 21:42:28
Deshabilitar items de un ComboBox vejerf Varios 0 06-02-2007 19:50:33
Codigo en los Items de un Combobox juanjoassenza OOP 3 20-07-2006 10:19:03
eliminar items combobox emiliu Varios 5 20-12-2005 08:12:13
Lista de items combobox Carlos Arevalo OOP 1 16-08-2003 07:10:48


La franja horaria es GMT +2. Ahora son las 20:37:33.


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