- Fórum
- Protheus/Microsiga/Totvs
- AdvPL (Advanced Protheus Language)
- WebServices (Integração)
- Erro em conversão de tipos
Perguntas Erro em conversão de tipos
- sidelcino
- Autor do Tópico
- Desconectado
- Membro Júnior
Menos
Mais
- Postagens: 36
- Obrigados Recebidos: 0
7 anos 10 meses atrás #31607
por sidelcino
Erro em conversão de tipos foi criado por sidelcino
Bom dia galera,
Por favor, deem uma olhada no código abaixo;
.....................................
.....................................
WSSTRUCT Cliente
WSDATA Nome AS String
WSDATA Telefone AS String OPTIONAL
ENDWSSTRUCT
WSSTRUCT Clientes
WSDATA Registros AS ARRAY OF Cliente
ENDWSSTRUCT
WSSERVICE ExemploCT
WSDATA _status AS Boolean
WSDATA _dados AS Clientes
WSMETHOD InsereClientes
WSMETHOD ListaClientes
ENDWSSERVICE
WSMETHOD InsereClientes WSRECEIVE _dados WSSEND _status WSSERVICE ExemploCT
Local nI
// Exibe os dados recebidos. Eles seriam inseridos em um tabela num banco de dados.
for nI := 1 to Len( ::_dados:Registros )
conout( "Registro " + cValToChar( nI ) )
conout( "Nome: " + ::_dados:Registros[nI]:Nome )
conout( "Telefone: " + IIf( Empty( ::_dados:Registros[nI]:Telefone ), "Nao tem", ::_dados:Registros[nI]:Telefone ) + CRLF )
next nI
// Devolve um status informando que a operação foi feita com sucesso. Esse status será devolvido na mensagem SOAP de resposta a esse método.
::_status := .T.
// Retorna que a operação foi feita com sucesso para a camada do Protheus.
Return .T.
WSMETHOD ListaClientes WSRECEIVE NULLPARAM WSSEND _dados WSSERVICE ExemploCT
Local nDay := dow( date() )
Local oNewCliente
if nDay == 1 .Or. nDay == 7
SetSoapFault( "Metodo não disponível", "Este serviço não funciona no fim de semana." )
return .F.
endif
// Os dados de retorno seriam pegos do banco de dados.
// Para esse exemplo iremos popular o retorno com dados fixos.
// Cria a instância de retorno ( WSDATA _dados AS Clientes )
::_dados := WSClassNew( "Clientes" )
// inicializa a propriedade da estrutura de retorno
// WSDATA Registros AS ARRAY OF Cliente
::_dados:Registros := {}
// Cria e alimenta uma nova instancia do cliente
oNewCliente := WSClassNew( "Cliente" )
oNewCliente:Nome := "ZZZ"
oNewCliente:Telefone := "999"
AAdd( ::_dados:Registros, oNewCliente )
// Cria e alimenta uma nova instancia do cliente
oNewCliente := WSClassNew( "Cliente" )
oNewCliente:Nome := "EEE"
oNewCliente:Telefone := "777"
AAdd( ::_dados:Registros, oNewCliente )
// Retorna que a operação foi feita com sucesso para a camada do Protheus.
Return .T.
.....................................
.....................................
Ao compilar está dando o seguinte erro:
[INFO] [08:56:32.661] ADVPL Preprocessor: Precompilation of file C:\Users\sidel\Documents\TDS\Workspace\Primeiro_Projeto\WebService\Cliente.prw ok. [Projeto: Primeiro_Projeto]
[WARN] [08:56:32.752] CLIENTE.PRW(39) warning W0015 Incompatible Types : cannot convert from 'L' to 'O' [Projeto: Primeiro_Projeto]
[08:56:36.215] Compilação finalizada (11,341 segs.)
Como posso resolver isso?
Obrigado!
Por favor, deem uma olhada no código abaixo;
.....................................
.....................................
WSSTRUCT Cliente
WSDATA Nome AS String
WSDATA Telefone AS String OPTIONAL
ENDWSSTRUCT
WSSTRUCT Clientes
WSDATA Registros AS ARRAY OF Cliente
ENDWSSTRUCT
WSSERVICE ExemploCT
WSDATA _status AS Boolean
WSDATA _dados AS Clientes
WSMETHOD InsereClientes
WSMETHOD ListaClientes
ENDWSSERVICE
WSMETHOD InsereClientes WSRECEIVE _dados WSSEND _status WSSERVICE ExemploCT
Local nI
// Exibe os dados recebidos. Eles seriam inseridos em um tabela num banco de dados.
for nI := 1 to Len( ::_dados:Registros )
conout( "Registro " + cValToChar( nI ) )
conout( "Nome: " + ::_dados:Registros[nI]:Nome )
conout( "Telefone: " + IIf( Empty( ::_dados:Registros[nI]:Telefone ), "Nao tem", ::_dados:Registros[nI]:Telefone ) + CRLF )
next nI
// Devolve um status informando que a operação foi feita com sucesso. Esse status será devolvido na mensagem SOAP de resposta a esse método.
::_status := .T.
// Retorna que a operação foi feita com sucesso para a camada do Protheus.
Return .T.
WSMETHOD ListaClientes WSRECEIVE NULLPARAM WSSEND _dados WSSERVICE ExemploCT
Local nDay := dow( date() )
Local oNewCliente
if nDay == 1 .Or. nDay == 7
SetSoapFault( "Metodo não disponível", "Este serviço não funciona no fim de semana." )
return .F.
endif
// Os dados de retorno seriam pegos do banco de dados.
// Para esse exemplo iremos popular o retorno com dados fixos.
// Cria a instância de retorno ( WSDATA _dados AS Clientes )
::_dados := WSClassNew( "Clientes" )
// inicializa a propriedade da estrutura de retorno
// WSDATA Registros AS ARRAY OF Cliente
::_dados:Registros := {}
// Cria e alimenta uma nova instancia do cliente
oNewCliente := WSClassNew( "Cliente" )
oNewCliente:Nome := "ZZZ"
oNewCliente:Telefone := "999"
AAdd( ::_dados:Registros, oNewCliente )
// Cria e alimenta uma nova instancia do cliente
oNewCliente := WSClassNew( "Cliente" )
oNewCliente:Nome := "EEE"
oNewCliente:Telefone := "777"
AAdd( ::_dados:Registros, oNewCliente )
// Retorna que a operação foi feita com sucesso para a camada do Protheus.
Return .T.
.....................................
.....................................
Ao compilar está dando o seguinte erro:
[INFO] [08:56:32.661] ADVPL Preprocessor: Precompilation of file C:\Users\sidel\Documents\TDS\Workspace\Primeiro_Projeto\WebService\Cliente.prw ok. [Projeto: Primeiro_Projeto]
[WARN] [08:56:32.752] CLIENTE.PRW(39) warning W0015 Incompatible Types : cannot convert from 'L' to 'O' [Projeto: Primeiro_Projeto]
[08:56:36.215] Compilação finalizada (11,341 segs.)
Como posso resolver isso?
Obrigado!
Por favor Acessar ou Registrar para participar da conversa.
- Fórum
- Protheus/Microsiga/Totvs
- AdvPL (Advanced Protheus Language)
- WebServices (Integração)
- Erro em conversão de tipos
Tempo para a criação da página:0.287 segundos