× Linguagem de Programação ADVPL

Perguntas Error Log

Mais
11 anos 8 meses atrás #11004 por de019
Error Log foi criado por de019
Boa tarde pessoal

Estou com um pequeno problema... estou tentando importar uns arquivos em .csv atreves de um fonte que criei para o protheus e quando vou importar ele da o seguinte error log:

THREAD ERROR (AndréLuis, ANDRE-PC) 25/02/2013 15:57:10
DB error (Insert): -37 File: SN1010 - Error : 2601 (23000) - [Microsoft][ODBC SQL Server Driver][SQL Server]Cannot insert duplicate key row in object 'dbo.SN1010' with unique index 'SN1010_UNQ'.( SQL Statement : INSERT INTO dbo.SN1010(N1_FILIAL,N1_CBASE,N1_ITEM,N1_AQUISIC,N1_DESCRIC,N1_CHAPA,N1_GRUPO,N1_NSERIE,N1_STATUS,N1_PATRIM,N1_NFISCAL,N1_VLAQUIS,R_E_C_N_O_) VALUES ( '01','0000001403','1 ','20090119','APARELHO DE FAX PANASONIC KXFP 932 ',' ',' ',' ','0','N','753 ',499.0000000000,1588) ) ( From tISAMFile::Write )



Alguem tem alguma ideia do que fazer... estou perdido.

Obrigado!

Por favor Acessar ou Registrar para participar da conversa.

Mais
11 anos 8 meses atrás #11005 por lalberto
Respondido por lalberto no tópico Error Log
Andre boa tarde, aparentemente o item que deseja importar já existe na tabela SN1, o ideal é sua rotina efetuar um dbseek a cada item a ser importado pra verificar se existe ou não já na tabela, ai vc evita este tipo de erro ok.

Abraços.

Luiz Alberto Vieira Alves
Proprietário
55 (12) 9 8256-5905 (Vivo)
www.3lsystems.com.br
www.masteradvpl.com.br

Por favor Acessar ou Registrar para participar da conversa.

Mais
11 anos 8 meses atrás #11021 por de019
Respondido por de019 no tópico Error Log
Luiz da uma olhada no meu fonte... onde devo colocar os dbseek!?

#INCLUDE "Protheus.ch"

/*
ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ
±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±
±±ÉÍÍÍÍÍÍÍÍÍÍÑÍÍÍÍÍÍÍÍÍÍËÍÍÍÍÍÍÍÑÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍËÍÍÍÍÍÍÑÍÍÍÍÍÍÍÍÍÍÍÍÍ»±±
±±ºPrograma ³ AUTATF ºAutor ³André Luis de O. º Data ³ 09/02/13 º±±
±±ÌÍÍÍÍÍÍÍÍÍÍØÍÍÍÍÍÍÍÍÍÍÊÍÍÍÍÍÍÍÏÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÊÍÍÍÍÍÍÏÍÍÍÍÍÍÍÍÍÍÍÍ͹±±
±±ºDesc. ³Importacao de ativos fixos e saldos acumulados de deprecia- º±±
±±º ³cao º±±
±±ÈÍÍÍÍÍÍÍÍÍÍÏÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ±±
±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±
ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
*/

User Function AUTATF()

Local cFileImp := cGetFile()

If Empty(cFileImp)
MsgAlert("Atenção, informe um arquivo antes de importar os ativos fixos.")
Return(Nil)
EndIf

Processa({|| ImpAtivo(cFileImp) })

Return(Nil)

Static Function ImpAtivo(cFileImp)
Local cLinha := ""
Local cLog := ""
Local lErro := .F.
Local aLinha := {}
Local nLinha := 0
Local nUltPos:= 1
Local i

//Carrega o arquivo
FT_FUse(cFileImp)
ProcRegua(FT_FLastRec())
FT_FGoTop()
While !FT_FEof()
IncProc()

nLinha++
lErro := .F.
cLinha := FT_FReadLn()
aLinha := {}

For i := 1 To Len(cLinha)
If SubStr(cLinha,i,1) == ";" .Or. i == Len(cLinha)
AAdd(aLinha,SubStr(cLinha,nUltPos,i-nUltPos))
nUltPos := i + 1
EndIf
Next i

//Validacoes em geral
If Len(aLinha) <> 29
cLog += "Linha: " + StrZero(nLinha,4) + " - Erro: LINHA NAO POSSUI AS 29 COLUNAS PREVISTAS NO LAYOUT"+Chr(13)+Chr(10)
lErro:= .T.
EndIf

If Empty(aLinha[2]) .Or. !(aLinha[2] $ "A|C|D|I|N|P")
cLog += "Linha: " + StrZero(nLinha,4) + " - Erro: COLUNA CLASSIFICACAO NAO INFORMADA OU CONTEUDO INVALIDO"+Chr(13)+Chr(10)
lErro:= .T.
EndIf

dbSelectArea("SN1")
SN1->(dbSetOrder(1))

If Empty(aLinha[3]) .Or. SN1->(dbSeek(xFilial("SN1")+aLinha[3] ))
cLog += "Linha: " + StrZero(nLinha,4) + " - Erro: COLUNA CODIGO DO BEM NAO INFORMADA OU CODIGO INFORMADO JA EXISTE NO SISTEMA"+Chr(13)+Chr(10)
lErro:= .T.
EndIf

If Empty(aLinha[4])
cLog += "Linha: " + StrZero(nLinha,4) + " - Erro: COLUNA ITEM NAO INFORMADA"+Chr(13)+Chr(10)
lErro:= .T.
EndIf

If Empty(aLinha[5]) .Or. (Empty(CToD(aLinha[5])) .And. Empty(SToD(aLinha[5])))
cLog += "Linha: " + StrZero(nLinha,4) + " - Erro: COLUNA DATA AQUISICAO NAO INFORMADA OU CONTEUDO NAO É UMA DATA VALIDA."+Chr(13)+Chr(10)
lErro:= .T.
EndIf

If Empty(aLinha[6])
cLog += "Linha: " + StrZero(nLinha,4) + " - Erro: COLUNA DESCRICAO NAO INFORMADA"+Chr(13)+Chr(10)
lErro:= .T.
EndIf

//If Empty(aLinha[6])
// cLog += "Linha: " + StrZero(nLinha,4) + " - Erro: COLUNA DESCRICAO NAO INFORMADA"+Chr(13)+Chr(10)
// lErro:= .T.
//EndIf

If Empty(aLinha[11]) .Or. !(aLinha[11] $ "0|1|2|3|4")
cLog += "Linha: " + StrZero(nLinha,4) + " - Erro: COLUNA STATUS NAO INFORMADA OU O CONTEUDO NAO É VALIDO."+Chr(13)+Chr(10)
lErro:= .T.
EndIf

If Empty(aLinha[12])
cLog += "Linha: " + StrZero(nLinha,4) + " - Erro: COLUNA TIPO ATIVO NAO INFORMADA"+Chr(13)+Chr(10)
lErro:= .T.
EndIf

If Empty(aLinha[13])
cLog += "Linha: " + StrZero(nLinha,4) + " - Erro: COLUNA HISTORICO NAO INFORMADA"+Chr(13)+Chr(10)
lErro:= .T.
EndIf

If Empty(aLinha[14])
cLog += "Linha: " + StrZero(nLinha,4) + " - Erro: COLUNA CONTA CONTABIL DO BEM NAO INFORMADA"+Chr(13)+Chr(10)
lErro:= .T.
EndIf

If Empty(aLinha[16])
cLog += "Linha: " + StrZero(nLinha,4) + " - Erro: COLUNA CONTA CONTABIL DE DEBITO DA DEPRECIACAO DO BEM NAO INFORMADA"+Chr(13)+Chr(10)
lErro:= .T.
EndIf

If Empty(aLinha[18])
cLog += "Linha: " + StrZero(nLinha,4) + " - Erro: COLUNA CONTA CONTABIL DE CREDITO DA DEPRECIACAO DO BEM NAO INFORMADA"+Chr(13)+Chr(10)
lErro:= .T.
EndIf

//If Empty(aLinha[19]) .Or. (Empty(CToD(aLinha[19])) .And. Empty(SToD(aLinha[19])))
// cLog += "Linha: " + StrZero(nLinha,4) + " - Erro: COLUNA DATA INICIO DEPRECIACAO NAO INFORMADA OU CONTEUDO NAO É UMA DATA VALIDA."+Chr(13)+Chr(10)
// lErro:= .T.
//EndIf

If Empty(aLinha[20]) .Or. Val(aLinha[20]) <= 0
cLog += "Linha: " + StrZero(nLinha,4) + " - Erro: COLUNA VALOR ORIGINAL DO BEM NAO INFORMADA OU CONTEUDO NAO É UM NUMERO VALIDO"+Chr(13)+Chr(10)
lErro:= .T.
EndIf

If lErro
FT_FSkip()
Loop
EndIf

//Faz a importacao do ativo e mapa de depreciacao
//Gera o grupo caso o mesmo esteja informado e atualiza a tabela de ativo
If !Empty(aLinha[1])
dbSelectArea("SNG")
SNG->(dbSetOrder(1))
If !SNG->(dbSeek(xFilial("SNG")+AllTrim(aLinha[1])))
SNG->(RecLock("SNG",.T.))
SNG->NG_FILIAL := xFilial("SNG")
SNG->NG_GRUPO := AllTrim(aLinha[1])
SNG->NG_DESCRIC := AllTrim(aLinha[25])
SNG->(MsUnlock())
EndIf
/* dbSelectArea("SN1")
SN1->(RecLock("SN1",.F.))
SN1->N1_GRUPO := SNG->NG_GRUPO
SN1->(MsUnlock())
*/
EndIf

dbSelectArea("SN1")
SN1->(RecLock("SN1",.T.))
SN1->N1_FILIAL := xFilial("SN1")
/*dbSelectArea("SNG")
SNG->(dbSetOrder(1))
If SNG->(dbSeek(xFilial("SNG")+AllTrim(aLinha[1]) ))
SN1->N1_GRUPO := SNG->NG_GRUPO
else*/
SN1->N1_GRUPO := AllTrim(aLinha[1])
// endIF
SN1->N1_PATRIM := aLinha[2]
SN1->N1_CBASE := STRZERO(VAL(aLinha[3]),10)
SN1->N1_ITEM := aLinha[4]
If !Empty(aLinha[5])
SN1->N1_AQUISIC := CToD(aLinha[5])
else
SN1->N1_AQUISIC := CTOD("01/01/2000")
endif
SN1->N1_DESCRIC := Upper(aLinha[6])
SN1->N1_QUANTD := Val(aLinha[7])
SN1->N1_CHAPA := Upper(aLinha[8])
SN1->N1_NSERIE := Upper(aLinha[9])
SN1->N1_NFISCAL := Upper(aLinha[10])
SN1->N1_STATUS := aLinha[11]
SN1->N1_VLAQUIS := Val(aLinha[20])
If !Empty(aLinha[26])
SN1->N1_BAIXA :=CToD(aLinha[26])
else
SN1->N1_BAIXA := CTOD(" / / ")
ENDIF
SN1->(MsUnlock())

dbSelectArea("SN3")
SN3->(RecLock("SN3",.T.))
SN3->N3_FILIAL := xFilial("SN3")
SN3->N3_CBASE := STRZERO(VAL(aLinha[3]),10)
SN3->N3_ITEM := aLinha[4]
SN3->N3_TIPO := aLinha[12]
SN3->N3_TPSALDO := "1"
If !Empty(aLinha[26])
SN3->N3_BAIXA := "1"
else
SN3->N3_BAIXA := "0"
ENDIF
If !Empty(aLinha[5])
SN3->N3_AQUISIC := CToD(aLinha[5])
else
SN3->N3_AQUISIC := CTOD("01/01/2000")
endif
SN3->N3_HISTOR := Upper(aLinha[13])
SN3->N3_CCONTAB := aLinha[14]
SN3->N3_CUSTBEM := aLinha[15]
SN3->N3_CDEPREC := aLinha[16]
SN3->N3_CCUSTO := aLinha[17]
SN3->N3_CCDEPR := aLinha[18]
If !Empty(aLinha[19])
SN3->N3_DINDEPR := CToD(aLinha[19])
else
SN3->N3_DINDEPR := CTOD("01/01/2000")
endif
SN3->N3_VORIG1 := Val(aLinha[20])
SN3->N3_TXDEPR1 := Val(aLinha[21])
SN3->N3_VRDBAL1 := Val(aLinha[22])
SN3->N3_VRDMES1 := Val(aLinha[23])
SN3->N3_VRDACM1 := Val(aLinha[24])
SN3->(MsUnlock())



cLog += "Linha: " + StrZero(nLinha,4) + " - Sucesso: REGISTRO IMPORTADO COM SUCESSO"+Chr(13)+Chr(10)

FT_FSkip()
EndDo

nHdl := FCreate("D:\temp\LOG_IMP_ATIVO.LOG")
If nHdl <= 0
MsgAlert("Atencao, nao foi possivel criar o arquivo de LOG na unidade C:\. Verifique as permissões de acesso.")
Return(Nil)
Else
FWrite(nHdl,"LOG DA IMPORTACAO DO ATIVO FIXO"+Chr(13)+Chr(10)+"Arquivo Importado: " + cFileImp+ Chr(13)+Chr(10))
FWrite(nHdl,Replicate("-",220)+Chr(13)+Chr(10))
FWrite(nHdl,cLog)
FClose(nHdl)

MsgAlert("Importação concluida. Verifique o arquivo de LOG em C:\LOG_IMP_ATIVO.LOG")
EndIf

Return(Nil)

Por favor Acessar ou Registrar para participar da conversa.

Mais
11 anos 8 meses atrás #11022 por de019
Respondido por de019 no tópico Error Log
faço todos iguais a esse : If Empty(aLinha[3]) .Or. SN1->(dbSeek(xFilial("SN1")+aLinha[3] )) ???

Por favor Acessar ou Registrar para participar da conversa.

Mais
11 anos 8 meses atrás #11023 por lalberto
Respondido por lalberto no tópico Error Log
Do Mesmo Jeito que vc está tratando para a tabela SNG

If !Empty(aLinha[1])
dbSelectArea("SNG")
SNG->(dbSetOrder(1))
If !SNG->(dbSeek(xFilial("SNG")+AllTrim(aLinha[1])))

If !Empty(aLinha[1])
dbSelectArea("SN1")
SN1->(dbSetOrder(1))
If !SN1->(dbSeek(xFilial("SN1")+AllTrim(aLinha[1])))

Luiz Alberto Vieira Alves
Proprietário
55 (12) 9 8256-5905 (Vivo)
www.3lsystems.com.br
www.masteradvpl.com.br

Por favor Acessar ou Registrar para participar da conversa.

Mais
11 anos 8 meses atrás - 11 anos 8 meses atrás #11062 por de019
Respondido por de019 no tópico Error Log
Então Luiz, eu fiz o dbseek, mas mesmo assim ainda ta dando erro, vou postar um pedaço do fonte para vc ver.
dbSelectArea("SN1")
SN1->(dbSetOrder(1))
SN1->(dbSeek(xFilial("SN1")))
SN1->(RecLock("SN1",.T.))
SN1->N1_FILIAL := xFilial("SN1")
SN1->N1_GRUPO := AllTrim(aLinha[1])
SN1->N1_PATRIM := aLinha[2]
SN1->N1_CBASE := STRZERO(VAL(aLinha[3]),10)
SN1->N1_ITEM := aLinha[4]
If !Empty(aLinha[5])
dbSelectArea("SN1")
SN1->(dbSetOrder(1))
If !SN1->(dbSeek(xFilial("SN1")+AllTrim(aLinha[5])))
SN1->N1_AQUISIC := CToD(aLinha[5])
else
SN1->N1_AQUISIC := CTOD("01/01/2000")
endif
SN1->N1_DESCRIC := Upper(aLinha[6])
SN1->N1_QUANTD := Val(aLinha[7])
SN1->N1_CHAPA := Upper(aLinha[8])
SN1->N1_NSERIE := Upper(aLinha[9])
SN1->N1_NFISCAL := Upper(aLinha[10])
SN1->N1_STATUS := aLinha[11]
SN1->N1_VLAQUIS := Val(aLinha[20])
endif
If !Empty(aLinha[26])
dbSelectArea("SN1")
SN1->(dbSetOrder(1))
If !SN1->(dbSeek(xFilial("SN1")+AllTrim(aLinha[26])))
SN1->N1_BAIXA :=CToD(aLinha[26])
else
SN1->N1_BAIXA := CTOD(" / / ")
ENDIF
SN1->(MsUnlock())
endif
Ultima edição: 11 anos 8 meses atrás por de019.

Por favor Acessar ou Registrar para participar da conversa.

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