![]() |
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 |
Hola Caral:
No tengo el delphi a mano pero de memoria sería algo tal como supongo que haces: No estoy muy seguro.... |
|
Hola
ArdiIIa: no me camino, no se porque?, no soy muy diestro en estas cosas.:D Roman: Que decir.:D , nada que no te alla dicho antes.:D Eres un Maestro. Muchas Gracias a los dos por ayudarme, ya esta listo y funcionando. Gracias pero muchas gracias. Saludos |
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: 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.? Esto de arriba no camina, ya que se esta filtrando: Me ayudais por favor. Saludos |
Hola Caral
Así de bote pronto lo que yo haría es lo siguiente
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 |
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. |
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:
Si está definido como integer, el sql debe quedar así:
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 |
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. 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.:D Gracias por la ayuda que me dais. Saludos |
Hola,
Lo que creo que queda claro después del comentario de Lepe, es que no tiene mucho caso tratar de usar el mismo operador para todos los tipos de campo. ¿Por qué no mejor actuar con base al tipo de datos del campo?
Lo útimo es necesario para todos los datos tipo BLOB o más raros. // Saludos |
Hola
Roman: me parece fenomenal. Como lo aplico, no tengo ni idea? Me quedo grande.:) Saludos |
Hola Caral
Si no estoy tan mal, lo que hace roman es evitar el uso del try...except con el case y me parece una excelente idea. En todo caso, yo haría lo siguiente.
Se me hace raro que no puedas usar el signo = y uses el >=, pero eso puede suceder en campos de punto flotante o de moneda, por eso lo puse en el case de ftFloat y ftCurrency. Bueno, eso creo. Salud OS. |
Gracias egostar
Estoy tratando de hacerlo, de esta manera no hay forma, no se por que.? Les agradezco todas sus intervenciones, me ayudan mucho. Gracias PD: Algun dia aprendere.:D Saludos |
No me gustaría que este tema se quedara así :(.
¿Por qué no te sale? Si en el combo1 tenemos los nombres de campos:
Saludos |
Hola Lepe
La respuesta a esto: Cita:
Me gusta la forma en la que ayuda Roman, te da una pauta y luego te deja para que pienses, asi se aprende mas, bueno en este caso como que soy duro de mollera. Saludos |
Hola Caral,
Estuve revisando el código e hice algunas pruebas, después de probar las opciones, este código me funcionó perfectamente.
Utilice dos TQuery un TComboBox, Un TEdit y un BitButton. Nota: En la propiedad filter no puedes usar el Like ni comillas. Salud OS. |
Hola Maestros
No hay manera, me genera errores, lo tengo asi: Os muestro el codigo completo para que lo veais mejor: El combobox1, muestra las tablas.(bien) El combobox2, muestra los campos.(bien) El edit1 (en el evento onchange) hace el filtro.(Mal). A ver si se os ocurre algo. Gracias Saludos |
Hola Caral
Veo dos cosas, 1. El idx yo lo pondría en el evento onchange del combobox de los campos. 2. en el Edit1.Change veo que hay una inconsistencia que te da error cuando inicializas a '';
Salud OS. |
Hola egostar
No hay manera, segui tus explicaciones, colocando el idx en el combobox2 y me sale este error: Cita:
Saludos |
Hola,
Algunas cosas que he observado:
// Saludos |
La franja horaria es GMT +2. Ahora son las 07:56:30. |
Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi