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")
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( )
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
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)
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)
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!
--
Adriano José Boller
______________________________________________
Consultor e Representante Oficial da
PcSoft no Brasil
+55 (41) 9949 1800
adrianoboller@gmail.com
skype: adrianoboller
http://wxinformatica.com.br/