PERGUNTAS E RESPOSTAS
 
Bem Vindo, Visitante  Todos os Fórums
  ADVPL
Enviar para a impressoraImprimir  Enviar e-mail para um amigoEnviar Para um Amigo
Precisa estar Logado

Subject Assunto:
type mismatch on compare
Versão:
12.1.2210
Plataforma:
Microsoft
Complemento:
windows 10 pro
DB:
SQL Server
Complemento:
v18
APCPA04.PRW (anexo)
LinkedIn
Mensagem do Enviar e-mail Abrir o Perfil do usuário BEHRSP BEHRSP em 12/02/2024, 09:26 h
Local: PR  Registro: 26/04/2023  Postagens: 37
Bom dia.

Tudo bem ?

Começando em programação, estou com uma dúvida.

Peguei um fonte com problema, este fonte faz a aglutinação das Ordens de Produção.

Porém, em determinada linha, ele faz um for
E tem uma comparação de pelo que eu entendi, um numero e um objeto.
Será que é por isso que está gerando o error quando executo.
É exatamente nesta linha que para e dá o erro.

Alguém tem uma dica de como posso corrigir?
Claro que fica meio complicado sem ver o fonte inteiro, mas o fonte tem 2000 linhas.



   // Existe OP selecionada
   Local lTemOPSelec := .F.

   // verificar se existem OPs selecionadas
   for nLin := 1 to Len(grdAux)
       if (grdAux[nLin,2] == oBmpOK)
          lTemOPSelec := .T.
          EXIT
       endif
   next nLin

Este é o trecho, e onde está é na linha do IF. a linha 870

type mismatch on compare on AGLUTINAROP(APCPA04.PRW) 07/08/2023 13:11:55 line : 870


Obrigado

Foto
Mensagem do Enviar e-mail Abrir o Perfil do usuário ELTON93 ELTON93 em 13/02/2024, 22:00 h
Local: SP  Registro: 12/02/2024  Postagens: 10
Coloca o Fonte aí, Irmão.

Mensagem do Enviar e-mail Abrir o Perfil do usuário BEHRSP BEHRSP em 14/02/2024, 05:45 h
Local: PR  Registro: 26/04/2023  Postagens: 37
Bom dia.
Segue anexo.

Obrigado

Mensagem do Enviar e-mail Abrir o Perfil do usuário ROBERTOMEN ROBERTOMEN em 14/02/2024, 09:19 h
Local: PR  Registro: 04/07/2017  Postagens: 471
bom dia

Fazendo uma análise rápida em seu fonte vejo que se grdaux é uma cópia do acols então seu if deve ser assim:

if (grdAux[nLin][2] == oBmpOK)

mas para ter certeza, basta vc debugar criando um ponto de parada nesta linha e editando grdAux para ver a posição 2 dele.

sem pre vc tentar comparar uma variável ou vetor com conteúdos diferente o erro type mismatch será apresentado, por exemplo:

A = 10     // VARIÁVEL tipo N
B = ‘DEZ‘ // VARIÁVEL tipo Caracter

if A = B // vai dar erro


A = .T.        // VARIÁVEL tipo LÓGICA
B = ‘VERDADE‘ // VARIÁVEL tipo Caracter

if A = B // vai dar erro


A[1] = .T.        // vetor posição 1 tipo LÓGICo
B[2] = ‘VERDADE‘ // vetor posição 1 tipo Caracter

if A = B // vai dar erro

é isto que está acontecendo na sua rotina.



Procure sempre se atentar aos valores das variáveis ou vetores


Mensagem do Enviar e-mail Abrir o Perfil do usuário BEHRSP BEHRSP em 14/02/2024, 12:45 h
Local: PR  Registro: 26/04/2023  Postagens: 37
Show, mto obrigado vou fazer aqui posto em seguida.
Obrigado

Para postar no Fórum você precisa efetuar o seu login ou se registrar

 Mudar para Fórum

 

 

 
 
   
Pagina Principal Shopping PROTHEUS Tire suas duvidas Vagas Microsiga em todo Brasil Aprofunde seus conhecimentos Noticias Online Fale Conosco Pagina Principal