![]() |
Una Query me da error al pasarle una SQL larga
Hola
Explico lo que me ocurre, saco un listado de Clientes, con sus facturas, uso firebird, utilizo una una IBQuery al que engancho un provider y un TClienteDataSet. Lo que hago es que antes de abrir el client dataSet, le añado a la Query, en su SQL una cadena con los clientes que necesito, que pueden ser 100, 200, etc..., el caso es que cuando hay muchos clientes, me da error al abrir el clientDataSet. Explico con un ejemplo más visual(los nombres de los componentes me los invento, para que se entienda mejor) La Query , QueryCliente , tiene esta SQL : Select misCampos from TablaClientes (donde digo mis campos, pues obviamente estan CodigoCliente,Nombre,Telefono,Direccion,etc...
Como digo funciona hasta un número de clientes, luego da error, como si no se puediera hacer la SQL tan larga, he intentando poner la SQL en varias lineas, algo así: Where (Cliente in (1,31,3131,12,33, 12,313,313,3131)); pero da igual, sigue dando error al pasarle una cadena de una cierta longitud. Es inevitable, que pase esto ? o hay alguna solución, esa es mi pregunta. Un saludo |
Hola David
Que error es el que te da en forma precisa... te da algun mensaje... no te saldria mejor que en vez de poner el codigo, pongas algun campo en la tabla y realizas el filtro por los que cumplen dicha condicion Salu2:p:D |
La cláusula IN en Firebird 1.5 tiene un límite de 1.500 elementos, puesto que dices da error en 100 o 200, creo es la forma de añadirlo al query.
No entiendo por qué accedes al SQL con índices (entre corchetes), no deberías pensar que tienes espacio en memoria asignado para trabajar con él. Dicho de otra forma, usa los métodos Add que tiene la propiedad sql. Supongo que dicha restricción del where, lo haces en tiempo de ejecución, así que no tendrás problemas con los strings. Atención al "Add": También podrías partir la cadena, incluso para hacerla más legible:
Saludos |
| La franja horaria es GMT +2. Ahora son las 22:19:13. |
Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi