× Linguagem de Programação ADVPL

Perguntas IMPORTAÇÃO DE DADOS DE BANCOS DIFERENTES

Mais
11 anos 2 semanas atrás #19140 por danielcamilo
Nobres amigos ;

Estou com um problema serio o fonte abaixo pega dados do labore e tras estes dados pro protheus e esta inserindo perfeitamente. porem como podem ver no if eu dou um dbssek para verificar se o dado existe e caso exista ele vai dar um update. Só que o dbseek ta retornando .F.. Mesmo existindo o dado, por exemplo a SA1 tava vazia e inseriu todos os dados da tabela do corpore logo nao poderia inserir mais nenhum dado e isso ocorre. Precisando mesmo de ajuda nisso não sou experiente em programação advpl e deve ser alguma coisa que estou esquecendo. Segue abaixo o codigo



local cquery:=""
local cBVprod:="MSSQL/protheus" //conexao no topconnect
local cBVrm:="MSSQL/RM"//conexao no topconnect
local cIPBD :="192.168.21.4"//ipdoservidor
local _nTcConn
local _nTcCon2


TCCONTYPE("TCPIP")

_nTcConn := TCLink(cBVprod,cIPBD)
_nTcCon2 := TCLink(cBVrm,cIPBD)
if ( _nTcConn<0 .OR. _nTcCon2<0)
Alert("Erro de Conexao!")
return
endif
//replace(replace(replace(telefone,'-',''),'(',''),'.','')
TCSETCONN(_nTcCon2)

cQuery:= "SELECT '0'+CONVERT(varchar, CODCOLIGADA)as A1_FILIAL ,'0'+CONVERT(varchar, CODCOLIGADA)as A1_LOJA, PESSOAFISOUJUR as A1_PESSOA,NOME AS A1_NOME,NOMEFANTASIA AS A1_NREDUZ ,RUA+','+NUMERO AS A1_END ,CODETD AS A1_EST,CODMUNICIPIO AS A1_COD_MUN,CIDADE AS A1_MUN,BAIRRO AS A1_BAIRRO,CEP AS A1_CEP ,left(replace(replace(replace(telefone,'-',''),'(',''),')','') ,3) as A1_DDD,right(replace(replace(replace(telefone,'-',''),'(',''),')','') ,8) as A1_TEL,TELEX AS A1_TELEX,FAX AS A1_FAX,RUAPGTO + ',' + NUMEROPGTO AS A1_ENDCOB ,'105' AS A1_PAIS,RUA + ',' + NUMERO AS A1_ENDREC,RUAENTREGA+','+NUMEROENTREGA AS A1_ENDENT ,replace(replace(replace(CGCCFO,'-',''),'/',''),'.','') AS A1_CGC,CONTATO AS A1_CONTATO,INSCRESTADUAL AS A1_INSCR ,LIMITECREDITO AS A1_LC ,BAIRROPGTO AS A1_BAIRROC ,CEPPGTO AS A1_CEPC,CIDADEPGTO AS A1_MUNC ,CODETDPGTO AS A1_ESTC,CEPENTREGA AS A1_CEPE,BAIRROENTREGA AS A1_BAIRROE ,CIDADEENTREGA AS A1_MUNE ,CODETDENTREGA AS A1_ESTE,EMAIL AS A1_EMAIL ,COMPLEMENTO AS A1_COMPLEM,CODCFO AS A1_CODIRM from FCFO where CODCOLIGADA='1' ORDER BY CODCFO"
dbUseArea(.T.,"TOPCONN", TcGenQry(,,cQuery),"SA1RM",.F.,.T.)
dbgotop()
While SA1RM->(!EOF())

TCSETCONN(_nTcConn)
importaprot()

SA1RM->(dbSkip())
End

alert("acabou")
SA1RM->(DbCloseArea())
RETURN

static function importaprot()
private vcgc,vfilial:=''

dbSelectArea("SA1")
dbSetOrder(9) // A1_FILIAL, A1_CGC
dbgotop()
IF dbseek(SA1RM->A1_FILIAL+SA1RM->A1_CODIRM) // Avalia o retorno da pesquisa realizada
RECLOCK("SA1", .F.)
update nos dados da tabela
else
RECLOCK("SA1", .T.)

SA1->A1_FILIAL:=SA1RM->A1_FILIAL
SA1->A1_CODIRM := SA1RM->A1_CODIRM
inseri os demais dados da tabela
MSUNLOCK() // Destrava o registro
endif
return

Por favor Acessar ou Registrar para participar da conversa.

Mais
11 anos 2 semanas atrás #19150 por RonaldoLopes
Boa tarde, verifique se os dados passados para o DbSeek possuem as mesmas informações(inclusive o tamanho dos campos) de seu indice.

Por favor Acessar ou Registrar para participar da conversa.

Mais
11 anos 1 semana atrás #19475 por danielcamilo
desculpa a demora em responder mas era isso mesmo o campo a1_filial era de tamanho 4 ae atrapalhava dbseek vlws

Por favor Acessar ou Registrar para participar da conversa.

Tempo para a criação da página:0.101 segundos
Joomla templates by a4joomla