- Fórum
- Protheus/Microsiga/Totvs
- AdvPL (Advanced Protheus Language)
- Dúvidas Gerais
- Fazer upload de arquivo em cadastro customizado do protheus
×
Linguagem de Programação ADVPL
Perguntas Fazer upload de arquivo em cadastro customizado do protheus
- cintra_daniel
- Autor do Tópico
- Desconectado
- Membro Especialista
Menos
Mais
- Postagens: 95
- Obrigados Recebidos: 0
11 anos 9 meses atrás #10495
por cintra_daniel
Pessoal boa tarde!
Não sei se ja existe algum tópico para tratar deste assunto...
Mas é o seguinte, estou desenvolvendo um controle de documentos onde será necessário o usuário guardar uma cópia digitalizada do documento. Ou seja criei um axCadastro a partir de uma tabela que eu criei e além dos dados que o usuário irá preencher ele terá uma opção de "add file" igual essa que tem pra quando vc vai inserir anexos...
Gostaria de saber se alguém ja teve alguma experiencia com isso... se tem alguma rotina pronta pra isso como é...porque ja procurei muito pela internet e não achei nada.
Desde já agradeço
Daniel
Não sei se ja existe algum tópico para tratar deste assunto...
Mas é o seguinte, estou desenvolvendo um controle de documentos onde será necessário o usuário guardar uma cópia digitalizada do documento. Ou seja criei um axCadastro a partir de uma tabela que eu criei e além dos dados que o usuário irá preencher ele terá uma opção de "add file" igual essa que tem pra quando vc vai inserir anexos...
Gostaria de saber se alguém ja teve alguma experiencia com isso... se tem alguma rotina pronta pra isso como é...porque ja procurei muito pela internet e não achei nada.
Desde já agradeço
Daniel
Por favor Acessar ou Registrar para participar da conversa.
- lalberto
- Desconectado
- Administrador
Menos
Mais
- Postagens: 3676
- Obrigados Recebidos: 6
11 anos 9 meses atrás #10496
por lalberto
Luiz Alberto Vieira Alves
Proprietário
55 (12) 9 8256-5905 (Vivo)
www.3lsystems.com.br
www.masteradvpl.com.br
Respondido por lalberto no tópico Fazer upload de arquivo em cadastro customizado do protheus
Daniel boa tarde, eu tenho um esquema desses pronto no módulo de help desk, na verdade o arquivo não vai ser adicionado à tabela customizada, o que vc deverá fazer é:
Criar uma pasta dentro do servidor a partir da pasta System
exemplo:
\system\Anexos
Assim que o usuário selecionar o arquivo a ser transportado a sua rotina irá efetuar a cópia do arquivo para o servidor dentro desta pasta anexos.
Lembrando que a rotina também irá renomear o arquivo e de preferência adicionar um código para associar ao registro que vc esta inserindo, pois, poderá ocorrer de usuários diferentes enviarem arquivos com o mesmo nome.
Vc deverá criar dois arquivos na sua tabela customizada, um mostrando o nome original do documento e para gravar o caminho do arquivo localizado no servidor.
Segue exemplos:
Aqui vc Abre um dialog para o usuário selecionar o arquivo necessário:
Private Caminho := "D:\Protheus10SPED\NF Eletronicas\"
cFile:= cGetFile( "Arquivo NFe (*.xml) | *.xml", "Selecione o Arquivo de Nota Fiscal XML",,Caminho,.T., )
Aqui Estou copiando o Arquivo selecionado para o servidor e na linha abaixo renomeando o arquivo:
CPYT2S(cFile,GetSrvProfString("Startpath", "")+'Anexos\',.T.)
FRename(cFile,'0001'+cFile)
Espero ter ajudado.
Criar uma pasta dentro do servidor a partir da pasta System
exemplo:
\system\Anexos
Assim que o usuário selecionar o arquivo a ser transportado a sua rotina irá efetuar a cópia do arquivo para o servidor dentro desta pasta anexos.
Lembrando que a rotina também irá renomear o arquivo e de preferência adicionar um código para associar ao registro que vc esta inserindo, pois, poderá ocorrer de usuários diferentes enviarem arquivos com o mesmo nome.
Vc deverá criar dois arquivos na sua tabela customizada, um mostrando o nome original do documento e para gravar o caminho do arquivo localizado no servidor.
Segue exemplos:
Aqui vc Abre um dialog para o usuário selecionar o arquivo necessário:
Private Caminho := "D:\Protheus10SPED\NF Eletronicas\"
cFile:= cGetFile( "Arquivo NFe (*.xml) | *.xml", "Selecione o Arquivo de Nota Fiscal XML",,Caminho,.T., )
Aqui Estou copiando o Arquivo selecionado para o servidor e na linha abaixo renomeando o arquivo:
CPYT2S(cFile,GetSrvProfString("Startpath", "")+'Anexos\',.T.)
FRename(cFile,'0001'+cFile)
Espero ter ajudado.
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.
- lalberto
- Desconectado
- Administrador
Menos
Mais
- Postagens: 3676
- Obrigados Recebidos: 6
11 anos 9 meses atrás #10497
por lalberto
Luiz Alberto Vieira Alves
Proprietário
55 (12) 9 8256-5905 (Vivo)
www.3lsystems.com.br
www.masteradvpl.com.br
Respondido por lalberto no tópico Fazer upload de arquivo em cadastro customizado do protheus
No get do campo que deseja selecionar o arquivo, vc pode colocar no campo X3_F3 a palavra DIR, quando o usuário clicar na lupa ele vai abrir uma janela para selecionar arquivo e vai retornar o nome do mesmo.
@ 065, 040 MsGet cAnexCham1 Size 150, 010 F3 'DIR' Picture "@S60"
Mas pelo axcadastro já adianto que vc não vai conseguir fazer esses tratamentos do arquivo, vai ser necessário vc criar uma tela customizada mesmo.
@ 065, 040 MsGet cAnexCham1 Size 150, 010 F3 'DIR' Picture "@S60"
Mas pelo axcadastro já adianto que vc não vai conseguir fazer esses tratamentos do arquivo, vai ser necessário vc criar uma tela customizada mesmo.
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.
- cintra_daniel
- Autor do Tópico
- Desconectado
- Membro Especialista
Menos
Mais
- Postagens: 95
- Obrigados Recebidos: 0
11 anos 9 meses atrás #10498
por cintra_daniel
Respondido por cintra_daniel no tópico Fazer upload de arquivo em cadastro customizado do protheus
Luiz você é sinistro mesmo cara, dificil ter alguma coisa que você não sabe! hahaha
daqui a pouco vou ter que te pagar um conteiner de cerveja... rs
Vou tentar aqui e te dou um retorno!
Obrigado
daqui a pouco vou ter que te pagar um conteiner de cerveja... rs
Vou tentar aqui e te dou um retorno!
Obrigado
Por favor Acessar ou Registrar para participar da conversa.
- cintra_daniel
- Autor do Tópico
- Desconectado
- Membro Especialista
Menos
Mais
- Postagens: 95
- Obrigados Recebidos: 0
11 anos 9 meses atrás #10506
por cintra_daniel
Respondido por cintra_daniel no tópico Fazer upload de arquivo em cadastro customizado do protheus
Luiz, tem como vocÊ ser só um pouquinho mais específico...
Tipo ta blz, vou colocar isso->
Private Caminho := "D:\Protheus10SPED\NF Eletronicas\"
cFile:= cGetFile( "Arquivo NFe (*.xml) | *.xml", "Selecione o Arquivo de Nota Fiscal XML",,Caminho,.T., )
CPYT2S(cFile,GetSrvProfString("Startpath", "")+'Anexos\',.T.)
FRename(cFile,'0001'+cFile)
Dentro da função do meu botão que salva as informações pra ele fazer o trabalho... mas me ajuda a entender isso ai, onde que ele ta referenciando o que o usuário selecionou no MSGET?
Outra coisa, serão arquivos .jpg ou .pdf , porque serão documentos digitalizados... isso eu coloco no lugar dessa parte -> "Arquivo NFe (*.xml) | *.xml" , certo?
código do meu MSGET ->
@ 110, 055 MSGET oGetAD VAR cGetAD WHEN .t. SIZE 074, 010 F3 'DIR' OF oGroup1 PIXEL
O F3 funcionou certinho...
pra ficar mais facil ainda de vocÊ me ajudar, to mandando em anexo o fonte da minha tela... nem sei se precisa, mas pode ser util..
Tipo ta blz, vou colocar isso->
Private Caminho := "D:\Protheus10SPED\NF Eletronicas\"
cFile:= cGetFile( "Arquivo NFe (*.xml) | *.xml", "Selecione o Arquivo de Nota Fiscal XML",,Caminho,.T., )
CPYT2S(cFile,GetSrvProfString("Startpath", "")+'Anexos\',.T.)
FRename(cFile,'0001'+cFile)
Dentro da função do meu botão que salva as informações pra ele fazer o trabalho... mas me ajuda a entender isso ai, onde que ele ta referenciando o que o usuário selecionou no MSGET?
Outra coisa, serão arquivos .jpg ou .pdf , porque serão documentos digitalizados... isso eu coloco no lugar dessa parte -> "Arquivo NFe (*.xml) | *.xml" , certo?
código do meu MSGET ->
@ 110, 055 MSGET oGetAD VAR cGetAD WHEN .t. SIZE 074, 010 F3 'DIR' OF oGroup1 PIXEL
O F3 funcionou certinho...
pra ficar mais facil ainda de vocÊ me ajudar, to mandando em anexo o fonte da minha tela... nem sei se precisa, mas pode ser util..
Por favor Acessar ou Registrar para participar da conversa.
- lalberto
- Desconectado
- Administrador
Menos
Mais
- Postagens: 3676
- Obrigados Recebidos: 6
11 anos 9 meses atrás #10508
por lalberto
Luiz Alberto Vieira Alves
Proprietário
55 (12) 9 8256-5905 (Vivo)
www.3lsystems.com.br
www.masteradvpl.com.br
Respondido por lalberto no tópico Fazer upload de arquivo em cadastro customizado do protheus
Daniel boa tarde, bom vamos lá:
Na verdade te passei duas possibilidades de puxar arquivos através de uma janela, uma é o exemplo abaixo.
cFile:= cGetFile( "Arquivo NFe (*.xml) | *.xml", "Selecione o Arquivo de Nota Fiscal XML",,Caminho,.T., )
e o outro exemplo é direto no get com a opção do F3 DIR
@ 110, 055 MSGET oGetAD VAR cGetAD WHEN .t. SIZE 074, 010 F3 'DIR' OF oGroup1 PIXEL
no primeiro exemplo aonde está "Arquivo NFe (*.xml) | *.xml" vc pode colocar
"Fotos dos Funcionarios |????????.JPG| Fotos dos Funcionarios |????????.JPEG| Fotos dos Funcionarios |????????.BMP|"
neste caso ele vai filtrar .JPG, .JPEG e .BMP
Agora no caso de vc utilizar o segundo exemplo F3 não tem possibilidade de filtros de extensões de arquivos.
Agora vamos fazer assim, ao invés de usar F3 DIR, vc vai colocar
@ 110, 055 MSGET oGetAD VAR cGetAD VALID U_ARQ(@cGetAd) .And. !Empty(cGetAd) WHEN .t. SIZE 074, 010 OF oGroup1 PIXEL
Assim que o usuário der um enter no campo Arquivo Digital, o sistema vai executar a função U_ARQ passando a variavel cGetAd como referência, assim que selecionar um arquivo valido ele vai preencher o conteudo desta variavel com o nome do arquivo.
No momento de gravar vc vai ter que utilizar a função:
CPYT2S(cFile,GetSrvProfString("Startpath", "")+'Anexos\',.T.)
FRename(cFile,'0001'+cFile)
Copiando e renomeando o arquivo no servidor, e dentro da sua tabela vc
vai gravar o caminho deste arquivo em um campo oculto.
User Function Arq(cGetAd)
Private cCaminho := "D:\Protheus10SPED\NF Eletronicas\"
cGetAd:= cGetFile( "Fotos dos Funcionarios |????????.JPG| Fotos dos Funcionarios |????????.JPEG| Fotos dos Funcionarios |????????.BMP| Fotos dos Funcionarios |????????.PDF|" , "Selecione o Arquivo de Nota Fiscal XML",,cCaminho,.T., )
If !File(cGetAd)
Alert("Arquivo Não Encontrado !!!")
Return .f.
Endif
Return .t.
Na verdade te passei duas possibilidades de puxar arquivos através de uma janela, uma é o exemplo abaixo.
cFile:= cGetFile( "Arquivo NFe (*.xml) | *.xml", "Selecione o Arquivo de Nota Fiscal XML",,Caminho,.T., )
e o outro exemplo é direto no get com a opção do F3 DIR
@ 110, 055 MSGET oGetAD VAR cGetAD WHEN .t. SIZE 074, 010 F3 'DIR' OF oGroup1 PIXEL
no primeiro exemplo aonde está "Arquivo NFe (*.xml) | *.xml" vc pode colocar
"Fotos dos Funcionarios |????????.JPG| Fotos dos Funcionarios |????????.JPEG| Fotos dos Funcionarios |????????.BMP|"
neste caso ele vai filtrar .JPG, .JPEG e .BMP
Agora no caso de vc utilizar o segundo exemplo F3 não tem possibilidade de filtros de extensões de arquivos.
Agora vamos fazer assim, ao invés de usar F3 DIR, vc vai colocar
@ 110, 055 MSGET oGetAD VAR cGetAD VALID U_ARQ(@cGetAd) .And. !Empty(cGetAd) WHEN .t. SIZE 074, 010 OF oGroup1 PIXEL
Assim que o usuário der um enter no campo Arquivo Digital, o sistema vai executar a função U_ARQ passando a variavel cGetAd como referência, assim que selecionar um arquivo valido ele vai preencher o conteudo desta variavel com o nome do arquivo.
No momento de gravar vc vai ter que utilizar a função:
CPYT2S(cFile,GetSrvProfString("Startpath", "")+'Anexos\',.T.)
FRename(cFile,'0001'+cFile)
Copiando e renomeando o arquivo no servidor, e dentro da sua tabela vc
vai gravar o caminho deste arquivo em um campo oculto.
User Function Arq(cGetAd)
Private cCaminho := "D:\Protheus10SPED\NF Eletronicas\"
cGetAd:= cGetFile( "Fotos dos Funcionarios |????????.JPG| Fotos dos Funcionarios |????????.JPEG| Fotos dos Funcionarios |????????.BMP| Fotos dos Funcionarios |????????.PDF|" , "Selecione o Arquivo de Nota Fiscal XML",,cCaminho,.T., )
If !File(cGetAd)
Alert("Arquivo Não Encontrado !!!")
Return .f.
Endif
Return .t.
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.
- Fórum
- Protheus/Microsiga/Totvs
- AdvPL (Advanced Protheus Language)
- Dúvidas Gerais
- Fazer upload de arquivo em cadastro customizado do protheus
Tempo para a criação da página:0.101 segundos