quarta-feira, 8 de junho de 2016

WX - Objetivo: Anexar qualquer tipo de arquivo (TXT, PDF, Word, Excel e outros tipos de documentos) no banco de dados



forum.pcsoft.fr/pt-BR/pcsoft.br.windev/1279-objetivo-anexar-qualquer-tipo-arquivo-txt-pdf-word/read.awp




Publicado em junho, 08 2016 - 2:23 AM

Prezados,

Autor do Post: Evandro Rodrigues de Andrade

Objetivo: Anexar qualquer tipo de arquivo (TXT, PDF, Word, Excel e outros tipos de documentos) no banco de dados.

Observação: O documento ou arquivo é salvo no banco e não no diretório.



Como vai funcionar:

1º - Selecionar o arquivo em um botão

2º - Depois de selecionado gravar o arquivo na tabela do banco de dados e exibir uma mensagem: "Arquivo adicionado com sucesso."

3º - Listar em seguida todos os arquivos anexados no banco de dados

4º - Um botão abrir ou baixar ou exportar o documento selecionado da tabela.



Sendo assim segue os códigos:

1º - Procedure para mostrar anexos na tabela:

Procedure MostrarAnexos( )

TableDeleteAll(TABLE_arquivos_em_anexo)

FOR EACH arquivos

nIDArquivo is 8-byte int = arquivos.id_arquivo

sInformacaoArquivoBinario is string = HInfoMemo(arquivos,arquivo_anexo)

sNomeArquivo is string = fExtractPath(ExtractString(sInformacaoArquivoBinario,2,TAB), fFileName + fExtension)

dtData is DateTime = fDateTime(ExtractString(sInformacaoArquivoBinario,2,TAB))

sExtensaoArquivo is string = Replace((fExtractPath(ExtractString(sInformacaoArquivoBinario,2,TAB), fExtension)),".","")

//sTamanho is string = fSize(ExtractString(sInformacaoArquivoBinario,2,TAB))

sTamanho is string = ExtractString(sInformacaoArquivoBinario,3,TAB)

TableAdd(TABLE_arquivos_em_anexo,nIDArquivo+TAB+sNomeArquivo+TAB+dtData+TAB+sExtensaoArquivo+TAB+sTamanho)

END

TableSort(TABLE_arquivos_em_anexo,"-TABLE_arquivos_em_anexo.COL_Id_do_anexo")




2º - Botão para adicionar anexos no banco:

// Abre o selecionador de arquivo

sArquivo is string

sArquivo = fSelect("", "", "Selecione um arquivo...", "Todos (.)" + TAB + "*.*", "*.*")

IF sArquivo ~= “ THEN

RETURN

END

// Anexa um arquivo para o registro

HLinkMemo(arquivos,arquivo_anexo,sArquivo,hAcceptOpenedFile)

// Adiciona o registro

HAdd(arquivos)

MostrarAnexos( )




3º - Botão para abrir o anexo selecionado na tabela:

//abrir o anexo selecionado na tabela

HSeekFirst(arquivos,id_arquivo,TABLE_arquivos_em_anexo.COL_Id_do_anexo)

sInformacaoArquivoBinario is string

IF HFound() = True THEN

// Retorna as características de memorandos binários e texto

sInformacaoArquivoBinario = HInfoMemo(arquivos,arquivo_anexo)

sArquivo is string = fExtractPath(ExtractString(sInformacaoArquivoBinario,2,TAB), fFileName + fExtension)

sArquivoTemporario is string = fTempPath() + sArquivo

// Extrai o arquivo para um diretório temporario

HExtractMemo(arquivos.arquivo_anexo,sArquivoTemporario)

// Recuperar o nome do diretório temporário e executa ou abre o arquivo em seguida

ShellExecute(sArquivoTemporario)

ELSE

Error("Arquivo não encontrado ou o arquivo pode ser aberto ou executado.")

END




4º - Botão para exportar o arquivo:

//Exportar

HSeekFirst(arquivos,id_arquivo,TABLE_arquivos_em_anexo.COL_Id_do_anexo)

sInformacaoArquivoBinario is string

sArquivo is string

sExtensaoArquivo is string

sDiretorio is string

// Retorna as características de memorandos binários e texto

sInformacaoArquivoBinario = HInfoMemo(arquivos,arquivo_anexo)

sArquivo = fExtractPath(ExtractString(sInformacaoArquivoBinario,2,TAB), fFileName + fExtension)

sExtensaoArquivo = fExtractPath(ExtractString(sInformacaoArquivoBinario,2,TAB), fExtension)

//sDiretorio = fSelect("", sArquivo, "Salvar como...", sExtensaoArquivo, sExtensaoArquivo, fselCreate + fselExist)

sDiretorio = fSelect("", sArquivo, "Salvar como...", "Todos os arquivos (*"+sExtensaoArquivo+")" + TAB + "*"+sExtensaoArquivo+"*", "", fselCreate + fselExist)+sExtensaoArquivo
HExtractMemo(arquivos,arquivo_anexo,sDiretorio)




5º - Código para filtrar na tabela:

//filtrar na tabela:
TableEnableFilter(TABLE_arquivos_em_anexo.COL_Nome,filterContains,MySelf)


O código foi feito conforme os links que você Adriano me passou

Agradecimentos especiais: Prof.º Adriano Boller, Prof.º Amarildo Matos e Prof.º Julio Cesar Pedroso

Autor do Post: Evandro Rodrigues de Andrade

- Meu muito obrigado a todos!

:merci:

--
Adriano José Boller
______________________________________________
Consultor e Representante Oficial da
PcSoft no Brasil
+55 (41) 9949 1800
adrianoboller@gmail.com
skype: adrianoboller
http://wxinformatica.com.br/








Nenhum comentário:

Postar um comentário

Teste

Teste
teste