![]() |
Buscar varios Registros mismo Campo.
Buenas tardes,
Necesito extraer de una tabla varios registros por el mismo campo, así dispongo de la tabla PAGARES, donde el campo Primario o principal se llama ENTRADA. En un formulario he filtrado por el Proveedor todos los pagarés que le he hecho, de esos pagarés quiero seleccionar varios los cuales no tienen relación alguna ni fecha, ni número ni vencimiento al azar, en el formulario lo he filtrado por IbQuery y quiero listarlo esos pagarés en un RavReport mediante SQL, El Código que utilizo es el siguiente:
Cuando los campos son distintos no hay problema pero cuando pertenece al mismo mismo campo me deja listarlos, he intentado varios formas pero no hay manera de todas formas serían pocos registros los que buscaría 5 ó 6. Gracias de antemano. |
Lo que puedes haces es usar la siguiente sintaxis en el where...
Dentro del paréntesis puedes colocar todos los nume los valores que desees Espero te ayude... |
He intentado esto
Pero no funciona sigue dando error: 'Operator not applicable to this operand type' |
|
Aparte de lo que ya te respondió cloayza, te recomiendo estudies un poco mas SQL https://www.w3schools.com/sql/default.asp
|
Siempre he usado esta sintaxis que por ejemplo ésta un poco más compleja:
Y siempre me ha funcionado, pero al usar ésta:
Donde tengo que seleccionar varios pagares de forma puntual sin ninguna relación dentro del mismo campo no me funciona. Lo que pasa Cloayza es que tengo que morir a las comillas por ejemplo 'select * from....' no puedo hacerlo sin comillas y tambien tengo que morir al Quotedstr no puedo hacerlo sin él seguramente como dice Movorack tengo que estudiar más o la versión de SQL es antigua no sé , pero hasta ahora según esa sintaxis he hecho infinidad de listados de distintos tipos y más complejos y han funcionado a la perfección. Muchas Gracias. |
Hola, te dije que debes estudiar un poco mas porque tu inconveniente básicamente es que estas usando el operador incorrecto.
Tienes esta sentencia:
Pero esto seleccionará los elementos de la tabla donde ENTRADA sea tanto '001' como '002'. Eso no te devolverá ningún resultado porque estás usando el operador incorrecto. En este caso, debes usar un OR (SQL AND, OR and NOT Operators https://www.w3schools.com/sql/sql_and_or.asp). Con el OR obtendrás los registros donde ENTRADA sea '001' ó '002'
Por ello, Cloayza te propone usar el IN (SQL IN Operator https://www.w3schools.com/sql/sql_in.asp) Cita:
Ahora. Ten en cuenta como armas esa sentencia SQL desde delphi. Te recomiendo usar parámetros en lugar de concatenar y si a la final tienes que concatenar, verifica que la sentencia que envías sea la correcta. En tu último ejemplo te faltan los paréntesis del IN dentro de la sentencia. Algo así puede quedar tu sentencia:
Nuevamente, mi recomendación es que estudies y practiques mas SQL. No es que no se te quiera ayudar, es que con el aprendizaje y la practica vas a cubrir esos vacíos de conocimiento que tienes. |
Funciona bien, pero sólo busca exactamente los registros que se diseño en la línea de sql, si diseñé 5 en sql busca 5 si elijo buscar 4 me dice que el que falta está "", y si elijo más de 5 solo me selecciona 5 lógicamente.
Miraré como puedo elegir si diseño en sql 5, buscar 1 ó 2 ó 3 ó 4 ó 5 sin que dé error, con los enlaces que me mandaste. La verdad pero hasta ahora iba muy bien con lo que sabía haciendo infinidad de filtros, listados con sql, la verdad es que es una pasada. Muchas Gracias, de verdad. |
Si el número de datos es variable tienes que crear esa parte de la consulta con un bucle, así la cláusula 'IN' tendrá tantos elementos como necesites. Y luego debes realizar lo mismo para la carga de los parámetros.
Pero entonces tu problema no es el que planteaste originalmente y tal vez la solución propuesta no sea la más adecuada. Explícalo de nuevo, con detalle. |
Si, sí es Kuan-yiu, es justo y exactamente la solución que me han han dado tanto Cloayza como movorack, es poder elegir en una tabla unos registros específicos que sólo tienen un campo en común pero son tantos registros que solo tengo que elegir unos cuantos de ellos, así el primer paso los filtro por el campo en común los meto en Dbgrid con un CheckBox al inicio de la fila, y de ésos elijo los que necesite, de cada uno que elijo, copio el campo llamado Entrada a un contenedor en este caso Memo y ya leo cada línea de Memo lo meto en la Variable Pagare1, Pagare2...., y ahí entra lo que faltaba donde Cloayza y Movorack me han dado la clave:
Sólo falta como tu decías Kuan-Yiu, un blucle, o if si elijo un pagaré me voy a una línea de Sql, si son dos pues elijo otra para dos pagarés y así así, normalmente no elijo más de 8 ó 10 a la vez, los meto en un report y solucionado. Muchísimas Gracias, |
La franja horaria es GMT +2. Ahora son las 15:20:50. |
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