Fórum Erro de Invalid Data Packet #407353

05/09/2011

0

Tenho um Client DataSet em memória e agora tá dando erro de Invalid Data Packet. Não consegui evitar esse erro. O que eu posso fazer?
Pjava

Pjava

Responder

Posts

06/09/2011

Pjava

Esta é a função que está dando o erro de invalid Data Packet
function TFrm_FrameworkBase.DoPADQryByWhere(AWhereVO: TDadosQryByWhere;
  CDSRetorno: TClientDataSet; Abortar, ExibeAguarde, ExibeMensagem: boolean): boolean;
var
  LExibeMensagem: TExibeMensagem;
  LResult_VO:     TRESULT;
  LResult:        OleVariant;
  LResultSet:     OleVariant;
  LFlags:         integer;
  LMensg:         string;
begin
  LExibeMensagem := nil;
  Result     := False;
  LResultSet := Unassigned;
  LResult_VO := TRESULT.Create;
  try
    LResult_VO.Clear;
    LResult    := LResult_VO.Serialize;
    try
      if ExibeAguarde then
        LExibeMensagem := TExibeMensagem.CreateMsg('Realizando consulta no Banco de Dados');
      CDSRetorno.Close;
      try
        if (FTipoConexao = 0) then
          FSocketSistema.AppServer.PADQryByWhere(AWhereVO.Serialize,
                                                 LResultSet,
                                                 LResult);
        end
        else
        begin
          if (Assigned(FDoPADQryByWhereCDSEvent)) then
          begin
            FDoPADQryByWhereCDSEvent(AWhereVO.Serialize,
                                     LResultSet,
                                     LResult);
          end;
        end;
        LResult_VO.Serialize := LResult;
        if LResult_VO.Codigo = 0 then
        try
          CDSRetorno.Data := LResultSet;//Nesta linha está dando o erro, ao carregar o ResultSet
        except
          On E: Exception do
          begin
            LResult_VO.Codigo   := 99;
            LResult_VO.Mensagem := E.Message;
          end;
        end;
        Result := (LResult_VO.Codigo <> 99);
      except
        on E: Exception do
        begin
          LResult_VO.Codigo   := 99;
          LResult_VO.Mensagem := E.Message;
        end;
      end;
    finally
      if Assigned(LExibeMensagem) then
        LExibeMensagem.Free;
      if (LResult_VO.Codigo <> 0) and (ExibeMensagem) then
      begin
        if (LResult_VO.Codigo = 99) then
          LFlags := MB_ICONERROR
        else
          LFlags := MB_ICONWARNING;
        LMensg := LResult_VO.Mensagem;
        Application.MessageBox(PChar(LMensg),'Consulta ao Servidor',LFlags + MB_OK);
        if (Abortar) then
          Abort;
      end;
    end;
  finally
    try
      if (FResult_VO <> nil) then
      begin
        FResult_VO.Serialize := LResult_VO.Serialize;
      end;
    except
    end;
    LResult_VO.Free;
  end;
end;
Responder

Gostei + 0

06/09/2011

Pjava

Mais uma coisa. Dá essa informação quando eu coloco o mouse em cima de LResult vem como UNASSIGNED e se dou um Ctrl+F7 para pegar algum valor, como é um array em qualquer posição do array que eu coloco vem essa mensagem: Unknown type: 17
Responder

Gostei + 0

09/09/2011

Pjava

Não resolvi ainda.
Responder

Gostei + 0

11/09/2011

Marco Salles

CDSRetorno.Data := LResultSet;//Nesta linha está dando o erro, ao carregar o ResultSet

se esta dando erro nesta linha o conteudo do LResultSet nao é um Xml datapacker válido

O Xml do clientDataSet segue algumas normas especificas , é foi criado pelo pessoal do codegear (embarcadero) para uma troca de informaçoes do clientDataSet
Responder

Gostei + 0

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

Aceitar