Tenho um BD em uma rede 4 pcs. Com front end em cada terminal e o back end em um servidor/Terminal. Estou vinculando imagens de cliente salvando nome do arquivo e visualizando por meio do caminho =[Application].[CurrentProject].[Path] & "\Imagens\" & [arquivo]. Mas não estou conseguindo elaborar um caminho que envie e buscar a imagem na pasta no servidor.
4 participantes
Vincular Foto como caminho para o servidor em rede
Josiel Avelino dos Santos- Novato
- Respeito às regras :
Sexo :
Localização :
Mensagens : 18
Registrado : 20/09/2015
- Mensagem nº1
Vincular Foto como caminho para o servidor em rede
=>Nois- Super Avançado
- Respeito às regras :
Sexo :
Localização :
Mensagens : 980
Registrado : 09/11/2012
ola
quando voce indica CurrentProject.Path quando quer dizer que que as imagens ou arquivo ficam em uma pasta local no seu computador, voce devera indicar o nº de ip da sua rede, dominio ou mesmo diretorio compartilhado
coloque algo assim:
"\\ip_de_sua_rede" & "\Sua_pasta\Imagens\" & [arquivo]
se estiver mapeado no seu computador o drive "G" por exemplo:
"G:" & "\Sua_pasta\Imagens\" & [arquivo]
quando voce indica CurrentProject.Path quando quer dizer que que as imagens ou arquivo ficam em uma pasta local no seu computador, voce devera indicar o nº de ip da sua rede, dominio ou mesmo diretorio compartilhado
coloque algo assim:
"\\ip_de_sua_rede" & "\Sua_pasta\Imagens\" & [arquivo]
se estiver mapeado no seu computador o drive "G" por exemplo:
"G:" & "\Sua_pasta\Imagens\" & [arquivo]
.................................................................................
Att. Nois
Se tudo não der certo... tente de novo
Josiel Avelino dos Santos- Novato
- Respeito às regras :
Sexo :
Localização :
Mensagens : 18
Registrado : 20/09/2015
Ainda não consegui já tentei das duas formas
=>Nois- Super Avançado
- Respeito às regras :
Sexo :
Localização :
Mensagens : 980
Registrado : 09/11/2012
poste uma parte do seu bd de exemplo para analise
informe o caminho que deve aparecer na foto.
no aguardo.
informe o caminho que deve aparecer na foto.
no aguardo.
.................................................................................
Att. Nois
Se tudo não der certo... tente de novo
CassioFabre- Super Avançado
- Respeito às regras :
Sexo :
Localização :
Mensagens : 731
Registrado : 18/01/2013
- Mensagem nº5
Vincular Foto como caminho para o servidor em rede
Boa tarde,
Com a licença do amigo =>Nois
Josiel, faça o seguinte: em um módulo coloque as seguintes funções:
na função pastaBackEnd estão as pastas da raiz do mesmo lugar onde está o seu backend. No meu caso, na raiz estão as pastas: backEnd, backup, image, xml, etc... O segundo item ( "" ) está vazio pois este representará a propria pasta do backend.
Por exemplo: suponhamos que seu backend esteja na rede no seguinte endereço \\192.168.5.208\programa\programa.accdb e dentro dessa pasta tenham outras como por exemplo imagens, arquivos, relatorios, etc. Caso você queira acessar a pasta "relatorios" pelo windows explorer, ficaria com o endereço \\192.168.5.208\programa\relatorios. Então caso voce tenha pastas diferentes das minhas, voce deve substituir o Enum pelas pastas que você tem aí e colocar estes valores no select case da função pastaBackEnd. Seguindo o exemplo que citei acima, supondo que tenha só essas três pastas, no seu caso ficaria assim:
Vale ressaltar que a ordem do Enum e do select case da função pastaBackEnd tem que ser exatamente a mesma e no select case tem que estar o nome da pasta rigorosamente como ela é.
Para usar a função é simples: quando você for salvar a imagem (por exemplo) a string "caminho" ficaria:
O trecho acima equivale exatamente ao caminho \\192.168.5.208\programa\imagens. Isto vale para todos os outros tipos de arquivo e pastas que voce colocar.
Abraço.
Com a licença do amigo =>Nois
Josiel, faça o seguinte: em um módulo coloque as seguintes funções:
- Código:
#If VBA7 Then
Public Declare PtrSafe Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
Public Declare PtrSafe Function GetFocus Lib "user32" () As LongPtr
#Else
Public Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
Public Declare Function GetFocus Lib "user32" () As Long
#End If
Public Enum mPasta
mBackEnd
mBd
mBackup
mImage
mXml
mEmail
mRelatorio
mAjuda
End Enum
Public Function funcCaminhoBackEnd() As String
Dim strConBE As String
Dim strTabelaLinkBE As String
Dim tblBE As DAO.TableDef
Dim kBE
On Error GoTo trataerro
Dim strDataFilePathBE As String
Dim StrTextBE As String ' Used for Debugging
Dim strDataFileNameBE As String
Dim CharCountBE As Integer
Dim CharCount1BE As Integer
For Each tblBE In CurrentDb.TableDefs
If Len(tblBE.Connect & "") > 0 Then strTabelaLinkBE = tblBE.Name
Next
' Get data path is determined by path to table a linked table in DataBase
strDataFilePathBE = CurrentDb.TableDefs(strTabelaLinkBE).Connect
CharCountBE = Len(strDataFilePathBE)
CharCount1BE = InStr(strDataFilePathBE, ":")
'Strip off leading charactors from path Password DataBase ect
strDataFilePathBE = right(strDataFilePathBE, (CharCountBE - (CharCount1BE - 2)))
'Strip off file name for database
CharCountBE = InStrRev(strDataFilePathBE, "\")
strDataFilePathBE = Left(strDataFilePathBE, CharCountBE)
' Used for Debugging Print Data File Path
' Returns: C:\Users\Michael\Documents\Access\PropMgr
' StrText = "Data File: " & strDataFilePath
' MsgBox StrText
' Put srtDataFilePath in text box on Main Menu
funcCaminhoBackEnd = strDataFilePathBE
sair:
Exit Function
trataerro:
MsgBox "Erro: " & Err.Number & vbCrLf & Err.Description, vbCritical, "Aviso", Err.HelpFile, Err.HelpContext
Resume sair:
End Function
Public Function pastaBackEnd(Optional pasta As mPasta = mBd)
On Error Resume Next
Dim strLocal As String
Select Case pasta
Case 0: strLocal = "backEnd"
Case 1: strLocal = ""
Case 2: strLocal = "backup"
Case 3: strLocal = "image"
Case 4: strLocal = "xml"
Case 5: strLocal = "email"
Case 6: strLocal = "relatorio"
Case 7: strLocal = "ajuda"
End Select
pastaBackEnd = funcCaminhoBackEnd & strLocal
End Function
na função pastaBackEnd estão as pastas da raiz do mesmo lugar onde está o seu backend. No meu caso, na raiz estão as pastas: backEnd, backup, image, xml, etc... O segundo item ( "" ) está vazio pois este representará a propria pasta do backend.
Por exemplo: suponhamos que seu backend esteja na rede no seguinte endereço \\192.168.5.208\programa\programa.accdb e dentro dessa pasta tenham outras como por exemplo imagens, arquivos, relatorios, etc. Caso você queira acessar a pasta "relatorios" pelo windows explorer, ficaria com o endereço \\192.168.5.208\programa\relatorios. Então caso voce tenha pastas diferentes das minhas, voce deve substituir o Enum pelas pastas que você tem aí e colocar estes valores no select case da função pastaBackEnd. Seguindo o exemplo que citei acima, supondo que tenha só essas três pastas, no seu caso ficaria assim:
- Código:
#If VBA7 Then
Public Declare PtrSafe Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
Public Declare PtrSafe Function GetFocus Lib "user32" () As LongPtr
#Else
Public Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
Public Declare Function GetFocus Lib "user32" () As Long
#End If
Public Enum mPasta
mImagens
mBd
mArquivos
mRelatorios
End Enum
Public Function pastaBackEnd(Optional pasta As mPasta = mBd)
On Error Resume Next
Dim strLocal As String
Select Case pasta
Case 0: strLocal = "imagens"
Case 1: strLocal = ""
Case 2: strLocal = "arquivos"
Case 3: strLocal = "relatorios"
End Select
pastaBackEnd = funcCaminhoBackEnd & strLocal
End Function
Vale ressaltar que a ordem do Enum e do select case da função pastaBackEnd tem que ser exatamente a mesma e no select case tem que estar o nome da pasta rigorosamente como ela é.
Para usar a função é simples: quando você for salvar a imagem (por exemplo) a string "caminho" ficaria:
- Código:
caminho = pastaBackEnd(mImagens) & "\nome_do_arquivo.jpg"
O trecho acima equivale exatamente ao caminho \\192.168.5.208\programa\imagens. Isto vale para todos os outros tipos de arquivo e pastas que voce colocar.
Abraço.
Última edição por CassioFabre em 4/11/2016, 09:08, editado 1 vez(es)
=>Nois- Super Avançado
- Respeito às regras :
Sexo :
Localização :
Mensagens : 980
Registrado : 09/11/2012
mais simples ficaria assim
coloque ao carregar do formulário
coloque ao carregar do formulário
- Código:
Dim strpastainicial as string
strpastainicial = "\\Informe_o_ip_aqui\" 'Deve Ser adcionado o caminho de rede aqui
me.sua_imagem.Picture = strpastainicial & "sua_pasta_imagens\sua_imagem.png"
.................................................................................
Att. Nois
Se tudo não der certo... tente de novo
=>Nois- Super Avançado
- Respeito às regras :
Sexo :
Localização :
Mensagens : 980
Registrado : 09/11/2012
Olá, algum avanço?
.................................................................................
Att. Nois
Se tudo não der certo... tente de novo
Josiel Avelino dos Santos- Novato
- Respeito às regras :
Sexo :
Localização :
Mensagens : 18
Registrado : 20/09/2015
Desculpe a demora gostei das duas aplicações. Já apliquei a mais simples funcionou perfeitamente. Irei testar a mais complexa.
Muito obrigado e mais uma vez desculpe pela demora.
Muito obrigado e mais uma vez desculpe pela demora.
Noobezinho- Moderador
- Respeito às regras :
Sexo :
Localização :
Mensagens : 4140
Registrado : 29/06/2012
Na realidade o caminho UNC(rede) mais simples é:
"\\NomedoServidor\Pasta\subpastaSeHouver\imagem.jpg 'ou qual for a extensão dela.
Só mais uma ajudinha!
[ ]'s
"\\NomedoServidor\Pasta\subpastaSeHouver\imagem.jpg 'ou qual for a extensão dela.
Só mais uma ajudinha!
[ ]'s
.................................................................................
A pergunta que não quer calar:
Por quê quando alguém vem pedir ajuda e conforme o caso pedimos
para enviar parte do projeto, não temos mais continuidade do tópico?
Crê que temos bolas de cristal ou está com medo que "roubemos" a
idéia/projeto dele?
Se é tão bom assim...
Ajude a ser ajudado:
Seja objetivo na dúvida, dê os detalhes do que precisa, sem rodeios.
Quando anexar teu projeto, diga onde está o problema, ganhamos mais tempo
sem precisar procurar o mesmo.
CassioFabre- Super Avançado
- Respeito às regras :
Sexo :
Localização :
Mensagens : 731
Registrado : 18/01/2013
- Mensagem nº10
Vincular Foto como caminho para o servidor em rede
Bom dia,
Vale ressaltar que o método que eu passei é, sim, mais complexo, porém ele funciona em qualquer servidor/ip/endereço sem fazer qualquer alteração no código. Vejo o método "192.168.5.1" como sendo um tanto quanto restrito. Caso queira distribuir seu back end em outra rede (ou mesmo o servidor sofrer uma alteração de endereço), terá que fazer algumas (ou várias) alterações no seu código. É basicamente a mesma diferença entre chamar o endereço do front end de C:\programa\programa.accdb e CurrentProject.Path & "\programa.accdb". Aí fica a critério do programador.
Abraço.
Vale ressaltar que o método que eu passei é, sim, mais complexo, porém ele funciona em qualquer servidor/ip/endereço sem fazer qualquer alteração no código. Vejo o método "192.168.5.1" como sendo um tanto quanto restrito. Caso queira distribuir seu back end em outra rede (ou mesmo o servidor sofrer uma alteração de endereço), terá que fazer algumas (ou várias) alterações no seu código. É basicamente a mesma diferença entre chamar o endereço do front end de C:\programa\programa.accdb e CurrentProject.Path & "\programa.accdb". Aí fica a critério do programador.
Abraço.