Estoy desarrollando un pequeño sistema utilizando el concepto de WebServices y durante el desarrollo del mismo me he encontrado con algunos tipos de datos que desconocía, en este hilo voy a escribir sobre la clase TXSDateTime, la cual actua como un "wrapper" del tipo TDateTime que la WC3 define para esquemas XML.
En mi WebService declaré la siguiente clase la cual voy a utilizar para pasar parámetros a una consulta SQL.
delphi
trFechas = class(TRemotable) private FInicial: TDateTime; FFinal: TDateTime; published property Inicial: TDateTime read FInicial write FInicial; property Final: TDateTime read FFinal write FFinal; end;
Pues bien, al intentar enviar esta clase a través de la aplicación cliente, me mostró un hermoso error de tipos no compatibles ya que esta clase fué importada por el WSDL Importer de esta manera:
delphi
// ************************************************************************ // // Namespace : urn:wsEmpleadosIntf // ************************************************************************ // trFechas = class(TRemotable) private FInicial: TXSDateTime; FFinal: TXSDateTime; public destructor Destroy; override; published property Inicial: TXSDateTime read FInicial write FInicial; property Final: TXSDateTime read FFinal write FFinal; end;
Pues bien, lo que tuve que hacer para resolver este pequeño detalle fué declarar una variable del tipo TXSDateTime y ejecutar el siguiente código.
delphi
uses XSBuiltIns; //Se debe agregar esta Unidad var Fechas: trFechas; dTXS : TXSDateTime; begin Fechas := trFechas.Create; dTXS := TXSDateTime.Create; dTXS.AsDateTime := DateTimePicker1.Date; Fechas.Inicial := dTXS; dTXS.AsDateTime := DateTimePicker2.Date; Fechas.Final := dTXS; XMLString := GetIwsEmpleados.GetAsistencia(Fechas); Fechas.Free; dTXS.Free; end;
Pues bien, si alguna vez se topan con esta Clase ya saben como abordarla.

Salud OS