Jump to content
r_patamar

Importação de ficheiro Excel para PHC

Recommended Posts

r_patamar

Boa tarde estou a tentar atravéz de uma tecla de utilizador importar neste caso um dossier inter Orçamento para o PHC o problema é que o utilizador nesses dossiers volta e mei tem a coluna dos Items com letras o que provoca a não importação do dados já localizei o erro e penso que substitui bem os dados na linha de código mas passou a dar o seguinte erro

Código: 107

Linha: 141

Mensagem 1: Operator/operand type mismatch.

e a linha em causa é a seguinte: Locate For Val(Substr(IMPORTA.a,1,2))<>''

o que estou a fazer mal

obrigado

Share this post


Link to post
Share on other sites
r_patamar

o código todo é este que aqui ponho se alguém me poder dar uma ajuda

If n_ndos=15 Or n_ndos=37

gcTable = GetFile('XLS', 'Ficheiro', 'Seleccionar', 0, 'Qual o Ficheiro a Importar ?')

If Len(AllTrim(gcTable))>200

Mensagem("O caminho do ficheiro não pode ter mais de 200 caracteres...","DIRECTA")

Return

EndIf

mpos=0

continua=1

For x=Len(gctable)-4 To 1 Step -1

If SubStr(gctable,x,1)=" " Or SubStr(gctable,x,1)="-" Or SubStr(gctable,x,1)="+" Or SubStr(gctable,x,1)="." Or (Val(SubStr(gctable,x,1)) >1 And Val(SubStr(gctable,x,1)) <=9) Or SubStr(gctable,x,1)="0"

Mensagem("Os ficheiros em Excel para serem importados, não podem conter números,espaços,'-','+' ou '.' !!!","DIRECTA")

continua=0

Exit

EndIf

&& If SubStr(gctable,x,1)="\"

&& Exit

&& EndIf

Next

If continua=1

Do Case

  Case 'Untitled' $ gcTable

      Create (gcTable)

  Case Empty(gcTable)

      Return

  OtherWise

If Pergunta("Deseja especificar qual a folha a importar","","Por defeito irá ser importada a primeira folha!!!")

folha=GetNome("Qual a folha do ficheiro a importar?","LISTA","O ficheiro EXCEl, não poderá estar aberto!")

If !Empty(folha)

Import From &gctable Type XL5 Sheet &folha

Else

Return

EndIf

Else

Import From &gctable Type XLS

EndIf

area=Select()

mpos=0

For x=Len(gctable) To 1 Step -1

If SubStr(gctable,x,1)<>"\"

mpos=mpos+1

Else

Exit

EndIf

Next

ficheiro=AllTrim(SubStr(gctable,Len(gctable)-mpos+1,mpos-4))

If Used(ficheiro)

Use In (area)

EndIf

Use (ficheiro) ALIAS IMPORTA In 0

Select importa

importapv=0

If FCount("IMPORTA")<4

Mensagem("O ficheiro Excel é INVÁLIDO! Só pode importar ficheiros devidamente estruturados!!!","DIRECTA")

Use In IMPORTA

Return

EndIf

*********************************************************************************************************************

If Pergunta("Deseja Mesmo Importar o ficheiro escolhido")

Select IMPORTA

Go Top

&& Verifica se tem coluna VAZIA!

Locate For Upper(IMPORTA.c)='QU' Or Upper(IMPORTA.c)='QT' Or Upper(IMPORTA.c)='UN'

If !Found()

Go Top

Scan

Replace IMPORTA.b With AllTrim(IMPORTA.;)+AllTrim(IMPORTA.C)

Replace IMPORTA.c With AllTrim(IMPORTA.d)

Replace IMPORTA.d With AllTrim(IMPORTA.e)

If importapv=1

Replace IMPORTA.e With AllTrim(IMPORTA.f)

EndIf

EndScan

EndIf

If AllTrim(Upper(Field(1)))='B'

If File("caderno.dbf")

Delete File caderno.dbf

EndIf

Create Table caderno (a C(20),b C(254),c C(6),d C(6),e C(9),f C(9))

Use In caderno

Use caderno In 0 Alias IMPORTAtmp

Select IMPORTA

Go Top

Scan

Select IMPORTAtmp

Append Blank

Replace IMPORTAtmp.a With IMPORTA.b

Replace IMPORTAtmp.b With IMPORTA.c

Replace IMPORTAtmp.c With IMPORTA.d

Replace IMPORTAtmp.d With IMPORTA.e

If importapv=1

Replace IMPORTAtmp.e With IMPORTA.f

EndIf

Select IMPORTA

EndScan

Use In IMPORTA

Use In IMPORTAtmp

Use caderno In 0 Alias IMPORTA

Select IMPORTA

EndIf

If SBO.Adding Or SBO.Editing

Select BI

Delete All

Else

Select BO

SBO.DoIntroduzir

Select BI

Delete

EndIf

Select IMPORTA

Go Top

Replace All IMPORTA.a With AllTrim(StrTran(IMPORTA.a,',','.'))

Replace All IMPORTA.c With AllTrim(IMPORTA.c)

Replace All IMPORTA.d With ALLTRIM(IMPORTA.d)

If importapv=1

Replace All IMPORTA.e With AllTrim(IMPORTA.e)

EndIf

Go Top

Locate For Upper(IMPORTA.c)='QU' Or Upper(IMPORTA.c)='QT'

If !Found()

Go Top

Scan

Xtmp=IMPORTA.c

Replace IMPORTA.c With IMPORTA.d

Replace IMPORTA.d With Xtmp

EndScan

EndIf

Go Top

mimporta=1

Locate For Val(Substr(IMPORTA.a,1,2))<>''

If !Found()

mimporta=0

EndIf

mlitem=AllTrim(IMPORTA.a)

mdgeral=""

mqtt=""

munidade=""

mepv=""

Do While !EOF() And mimporta=1

Wait Window " Estou a Lançar as Linhas do Concurso. Aguarde P.F. " NoWait

If (!Empty(IMPORTA.a) And (AllTrim(IMPORTA.a)<>AllTrim(mlitem) Or Len(Rtrim(IMPORTA.a))<>Len(Rtrim(mlitem)))) Or (Empty(IMPORTA.a) And !Empty(IMPORTA.c))

Select BI

Do BoIne2In

Replace BI.litem With mlitem

Replace BI.dgeral With mdgeral         

If Val(Substr(IMPORTA.a,1,2))>0 Or Empty(IMPORTA.a)

Replace BI.qtt With Val(mqtt)

Replace BI.unidade With munidade

If importapv=1

Replace BI.edebito With Val(mepv)

Replace BI.debito With Val(mepv)*200.482

EndIf

EndIf

mlitem=AllTrim(IMPORTA.a)

mdgeral=AllTrim(IMPORTA.:D

mqtt=IMPORTA.c

munidade=IMPORTA.d

If importapv=1

mepv=IMPORTA.e

EndIf

Else

If !Empty(IMPORTA.a)

mlitem=AllTrim(IMPORTA.a)

mdgeral=mdgeral+AllTrim(IMPORTA.B)+Chr(13)+Chr(10) && 06.07

mqtt=IMPORTA.c

munidade=IMPORTA.d

If importapv=1

mepv=IMPORTA.e

EndIf

Else

If !Empty(IMPORTA.B)

If !Empty(IMPORTA.c) Or !Empty(IMPORTA.d)

&& mlitem=AllTrim(IMPORTA.a) 06.07

mdgeral=mdgeral+AllTrim(IMPORTA.B)+Chr(13)+Chr(10)

If !Empty(IMPORTA.C)

mqtt=IMPORTA.c

If importapv=1

mepv=IMPORTA.e

EndIf

EndIf

If !Empty(IMPORTA.d)

munidade=IMPORTA.d

EndIf

Else

mdgeral=mdgeral+AllTrim(IMPORTA.B)+Chr(13)+Chr(10)

EndIf

EndIf

EndIf

EndIf

Select BI

Do u_bottdeb

Select IMPORTA

Skip

EndDo

If !Empty(mlitem) And !Empty(mdgeral)

Select BI

Do BoIne2In

Replace BI.litem With mlitem

Replace BI.dgeral With mdgeral         

Replace BI.qtt With Val(mqtt)

Replace BI.unidade With munidade

If importapv=1

Replace BI.edebito With Val(mepv)

Replace BI.debito With Val(mepv)*200.482

Do u_bottdeb

EndIf

EndIf

EndIf

Select BI

Go Top

Delete All For !Empty(BI.litem) And Val(BI.litem)=0

Go Top

Do boactval With sbo.euro

Use In IMPORTA

*******************************************************************************************

EndCase

EndIf

EndIf

SBO.Refrescar

Return

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.