Problema longitud stringlist.text
Hola amigos,
tengo un problema que me ronda ya 2 días y hace unos minutos encontré cual era la raíz del problema. Os pongo en situación: - Tengo una aplicación que realiza un proceso - Al terminar el proceso, debe mandar un correo a los usuarios con los resultados del proceso - Ese correo se guarda en una base de datos para que después un motor (servicio de windows que desarrolló hace una semana) lea esa tabla y envie el correo. Hasta aquí bien. - La tabla contiene los campos para mandar un correo: de, para, cc, cco, asunto y body entre otros. - Body es un CLOB en oracle. Ahí no hay problema, comprobado. - El valor del body se inserta en la tabla mediante un SP a través de una función genérica (para todos los SP que tengamos) que tambien va bien. - Pero ese body ahora mismo se manda a través de un StringList. - El programa genera el body en un memo y lo copia en el StringList para mandarlo al SP y que se guarda en la BD. Se manda al SP del siguiente modo: Mensaje.Text //mensaje es el StringList. Si el body es pequeño (500 carácteres o 50 lineas cifras aproximadas) no hay ningún problema. Pero tengo un caso particular en que el proceso dio muchos resultado y resulta que el stringlist contine unas 1700 lineas. Que no debería haber problemas para el CLOB (deben caber unos 2Gb). Cuando ese caso se da, y tengo más de 50 lineas, si debuggeo veo en mensaje.count = 50 o las que sean (1700 en el caso en concreto), y cuando asigno el mensaje.text al SP para mandar todo el contenido al CLOB me corta. Es decir, hago un debug y visualizo el valor de mensaje.text y no tiene más de 50 lineas. Podeis hacer la prueba a ver si ocurre lo mismo. He probado ha pasar todo el StringList a un TStringStream, pero a la hora de asignarlo al SP no se si hay otra manera que no sea usando DataString, ya que ocurre lo mismo. Que posible solución veis a mi problema. Uso Delphi 6 (por si es un bug de la versión) Saludos y gracias anticipadas. |
dudo que sea el TStringList y te voy a decir por que:
Yo almaceno en una instancia de este objeto el XML que me genera un proceso, Este Xml me ha llegado a ocupar hasta 15,000 líneas y cuando lo paso al Sp no me corta la información. Yo uso Delphi 7 y SqlServer El código que uso es el siguiente:
|
Muchas gracias poliburro por responder.
He hecho una prueba, con un fichero de más de 20.000 lineas lo he cargado en un StringList y luego lo recorro para meterlo en un Memo y no he tenido ningún problema. Ahora deduzco que el problema pueda ser entonces del Variant. Y me explico, la función genérica que usamos para ejecutar los SP los parámetros que se le pasan a la susodicha es un array de variants donde separados por comas se pasan los parámetros del SP. Entonces es problable que pueda venir por ahí el problema, y es que el variant tenga un límite y corte el blob que yo le estoy pasando. Si es así, no me quedará otra que modificar la función genérica y hacerla exclusivamente para mi SP pasándole por separado el campo Blob como parámetros, algo así:
¿Hay alguna sugerencia al respecto o algún tipo de dato que pueda usar en la función en lugar del TBlobStream? Cualquier sugerencia será bienvenida. Saludos y gracias |
La franja horaria es GMT +2. Ahora son las 05:12:10. |
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