Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Internet
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

 
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 07-11-2007
LauraAS LauraAS is offline
Registrado
 
Registrado: nov 2007
Posts: 4
Poder: 0
LauraAS Va por buen camino
Red face 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;
Responder Con Cita
 



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

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


La franja horaria es GMT +2. Ahora son las 12:33:52.


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
Copyright 1996-2007 Club Delphi