FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
|||
|
|||
Capacidad WideString
Hola, he implementado un WebService en Delphi7 que a través de una interface permite realizar una serie de operaciones o funciones que devuelven un texto xml (en una variable wide string) construido a partir de consultas a la BD MSSqlServer2000 utilizando ADOStoredProc.
Pero hay una función que me falla debido a que el data set devuelto es muy superior a la capacidad para albergarlo en un widestring y como está dentro del buche while not eof del StoredProc pues se me queda "colgado" el programa cliente. Pero las demás funcionan perfectamente porque el dataset devuelto es mucho menor en tamaño. He de devolver un texto, puesto que es una interface de un webservice que ha de devolver un xml, y que yo sepa el máximo en Delphi es el WideString. ¿Cómo se puede solventar este problema? Digo yo que ha de haber algún modo de convertir a texto consultas enormes como en caso de listar las poblaciones de una provincia o de un pais. El código es más o menos como sigue: TQryTablas = class(TInvokableClass, IQryTablas) public fGetPoblaciones(codProvincia: string): WideString; end; ... function TQryTablas.fGetPoblaciones(codProvincia: string): WideString; var xmlOut: WideString; codError: integer; WebModule1: TWebModule1; begin result:='<?xml version="1.0" encoding="ISO_8859-1"?>'; result:=result+'<fGetPoblacionesResponse>'; result:=result+'<errores>'; try WebModule1:=TWebModule1.Create(nil); codError:=WebModule1.cargarPoblaciones(codProvincia,xmlOut); if codError=-1 then begin result:=result+'<error>'; result:=result+'<coderr>002</coderr>'; result:=result+'<descerr>'+K_002+'</descerr>'; result:=result+'</error>'; end else if codError<>0 then begin result:=result+'<error>'; result:=result+'<coderr>001</coderr>'; result:=result+'<descerr>'+K_001+'</descerr>'; result:=result+'</error>'; end; result:=result+'</errores>'; result:=result+xmlOut; result:=result+'</fGetPoblacionesResponse>'; finally WebModule1.Free; end; end; ............... function TWebModule1.CargarPoblaciones(codProvincia: string; var xml: WideString): integer; begin xml:='<poblaciones>'; with SPQryPoblacion do begin Parameters.ParamByName('@cod_provincia').Value:=codProvincia; Parameters.ParamByName('@cod_error').Value:=0; Active:=True; result:=Parameters.ParamByName('@cod_error').Value; if result=0 then begin First; while not EOF do begin xml:=xml+'<poblacion>'; xml:=xml+'<codigo>'+FieldByName ('COD_POBLACION').AsString+'</codigo>'; xml:=xml+'<codprovincia>'+FieldByName('COD_PROVINCIA').AsString+'</codprovincia>'; xml:=xml+'<nombre>'+FieldByName('NOMBRE_POBLACION').AsString+'</nombre>'; xml:=xml+'<codpostal>'+FieldByName('COD_POSTAL').AsString+'</codpostal>'; xml:=xml+'</poblacion>'; Next; end; end; end; xml:=xml+'</poblaciones>'; end; |
|
|
Temas Similares | ||||
Tema | Autor | Foro | Respuestas | Último mensaje |
Capacidad de una tabla en SQL | pablofbc | SQL | 1 | 14-06-2006 03:53:16 |
Parser XML desde una variable WideString | cahern4 | Internet | 0 | 07-05-2005 00:04:49 |
Capacidad de Paradox | irvingcm | Tablas planas | 3 | 13-04-2005 00:41:59 |
Capacidad QReport | marila | Impresión | 4 | 05-05-2004 16:22:06 |
Capacidad del QReport | marila | Impresión | 2 | 22-04-2004 16:02:47 |
|