Tecla para importar ficheiro excel para Painel

Anabela Pereira
23/02/2024 16:07:16





Set Talk Off

Local lcXLBook As String, lnSQLHand As Integer, ;

lcSQLCmd As String, lnSuccess As Integer, ;

lcConnstr As String

Clear

**Define a extensão do ficheiro a ler, aqui pode colocar a opção "XLSX" de Excel2007

lcXLBook = Getfile("xls")

lcConnstr = [Driver=] + ;

[{Microsoft Excel Driver (*.xls, *.xlsx, *.xlsm, *.xlsb)};] + ;

[DBQ=] + lcXLBook

If !File( lcXLBook )

? [Ficheiro Excel não encontrado]

Return .F.

Endif

lnSQLHand = Sqlstringconnect( lcConnstr )

** Define o nome da folha onde estão os dados

lcSQLCmd = [Select * FROM "Folha1$"]

lnSuccess = SQLExec( lnSQLHand, lcSQLCmd, [xlResults] )

**Verifica se a leitura foi bem sucedida ou se falhou

? [SQL Cmd Success:], Iif( lnSuccess > 0, 'OK!', 'Falhou' )


If lnSuccess < 0

msg("Entra")

Local Array laErr[1]

Aerror( laErr )

? laErr(3)

SQLDisconnect( lnSQLHand )

Return .F.

Endif


**Posiciona-se no cursor das linhas da grelha



**Posiciona-se no cursor com os dados lidos da folha de Excel

Select xlResults

m.totrec=Reccount("xlResults")

=regua(0,m.totrec,"Registos a importar... ")

Scan

**Régua para mostrar o progresso da tarefa

=regua(1,Recno(),"Processando a registo Nº"+astr(xlResults.ref))

**Funcionalidade que permite abortar a importação dos registos

If aborta()

regua(2)

mensagem("INTERROMPIDO ....")

fecha("xlResults")

Return .F.

Endif


Select xlResults

**Introduz linhas

Select crsteste

Append Blank

**Preenche o campo "ref"

Replace crsteste.ref With Iif(Vartype(xlResults.ref)='C',Alltrim(xlResults.ref),astr(xlResults.ref))


Replace crsteste.qtt With Val(astr(xlResults.qtt))



Replace crsteste.dataobra With Nvl((xlResults.Data),'')

Replace crsteste.obrano With Val(astr(xlResults.FS))



Endscan


**Liberta a ligação ao ficheiro de Excel

SQLDisconnect( lnSQLHand )



regua(2)

**Programa terminado

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