Envio Array Web Service

13/01/2017

0

oa tarde.

Estou tentando montar um array de informações para envio de dados ao servidor webservice(progress), porém toda vez que tento atribuir o dado no campo do array tenho erro de access violation. Abaixo informações:

Minha Classe de consulta de pedidos:
Código:
AlcastWebConsultaPedidos = class(TRemotable)
private
FdsParamConsultaPedidos: dsParamConsultaPedidos;
public
constructor Create; override;
destructor Destroy; override;
published
property dsParamConsultaPedidos: dsParamConsultaPedidos Index (IS_REF) read FdsParamConsultaPedidos write FdsParamConsultaPedidos;
end;


Com parametro de entrada um dsParamConsultaPedidos, abaixo definição..

Código:
dsParamConsultaPedidos = array of ttParamConsultaPedidos;


Código:
ttParamConsultaPedidos = class(TRemotable)
private
Fdt_implant_ini: TXSDate;
Fdt_implant_fim: TXSDate;
Fcod_estabel_ini: string;
Fcod_estabel_fim: string;
public
destructor Destroy; override;
published
property dt_implant_ini: TXSDate Index (IS_NLBL) read Fdt_implant_ini write Fdt_implant_ini;
property dt_implant_fim: TXSDate Index (IS_NLBL) read Fdt_implant_fim write Fdt_implant_fim;
property cod_estabel_ini: string Index (IS_NLBL) read Fcod_estabel_ini write Fcod_estabel_ini;
property cod_estabel_fim: string Index (IS_NLBL) read Fcod_estabel_fim write Fcod_estabel_fim;
end;


Agora o código do onClick do Button.
Código:
procedure TForm1.btnBuscarClick(Sender: TObject);
var
Proc: AlcastWebConsultaPedidos;
dsParamConsulta: dsParamConsultaPedidos;
dsPedido: dsPedVenda;
dt: ttParamConsultaPedidos;
i: Integer;
begin
try
Proc := AlcastWebConsultaPedidos.Create;
[b]Proc.dsParamConsultaPedidos[0].dt_implant_ini.AsDate := strtodatetime(formatdatetime('d/m/y', DateEdit1.Date));[/b]
Proc.dsParamConsultaPedidos[0].dt_implant_fim.AsDate := strtodatetime(formatdatetime('d/m/y', DateEdit1.Date));
Proc.dsParamConsultaPedidos[0].cod_estabel_ini := edit1.text;
Proc.dsParamConsultaPedidos[0].cod_estabel_fim := edit2.text;

dsPedido := GetAlcastWebVendasObj.AlcastWebConsultaPedidos(Proc).dsPedVenda;
except
on E : Exception do
ShowMessage(E.ClassName+' error raised, with message : '+E.Message);
end;

//==============================//

for I := 0 to length(dsPedido.ttPedVenda) do
begin
{ShowMessage(ds[i].it_codigo +' '+ ds[i].desc_item + ' ' + datetostr(ds[i].data_implant.AsDate)
+ ' ' + ds[i].data_hora_implant.ToString);}

grdPedido.Cells[0,i] := dsPedido.ttPedVenda[i].nr_pedido.ToString();
grdPedido.Cells[1,i] := dsPedido.ttPedVenda[i].nr_pedcli;
grdPedido.Cells[2,i] := dsPedido.ttPedVenda[i].nome_abrev;
grdPedido.Cells[3,i] := datetostr(dsPedido.ttPedVenda[i].dt_implant.AsDate);

if i = length(dsPedido.ttPedVenda) then
Exit;

end;
end;


Ao entrar na linha em negrito, mostra erro de access violation e me joga para a procedure abaixo:
Código:
procedure TXSDate.SetAsDate(const Value: TDateTime);
var
ADate: TXSBaseDate;
begin
[b] ADate := GetBaseDate(FDateValue); //Trava aqui[/b]
try
ADate.AsDate := Value;
FDateValue := ADate.NativeToXS;
finally
ADate.Free;
end;
end;


Já não sei mais o que fazer para resolver..

Obrigado!
Fernando Farah

Fernando Farah

Responder

Assista grátis a nossa aula inaugural

Assitir aula

Saiba por que programar é uma questão de
sobrevivência e como aprender sem riscos

Assistir agora

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar