Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Username: Password: oppure
Altri Linguaggi - FileDialog in Access
Forum - Altri Linguaggi - FileDialog in Access

Avatar
alip1 (Normal User)
Pro


Messaggi: 139
Iscritto: 12/08/2019

Segnala al moderatore
Postato alle 17:22
Venerdì, 22/05/2020
Buon di scusatemi se non ho postato nel forum corretto.

Ho un piccolo problema VBA in Access.  Ho realizzato questa routine per consentire ad un utente dell'app di poter scegliere un file immagine (bmp, o jpg, o ico..) ed ho utilizzato FileDialog:

Codice sorgente - presumibilmente VB.NET

  1. Public Function FotoOpen(DirStart As String, SubDir As String) As String
  2.     ' Questa procedura apre il file dialog per la selezione della foto
  3.  
  4.     Dim PathDir As String
  5.     PathDir = DirStart
  6.  
  7.    If SubDir <> "" Then
  8.       PathDir = PathDir & "\" & SubDir & "\"
  9.    End If
  10.  
  11.    '  Dim fDialog As Office.FileDialog
  12.    Dim Fp As Office.FileDialog
  13.    Set Fp = Application.FileDialog(msoFileDialogFilePicker)
  14.  
  15.    With Fp
  16.       .Title = "Selezionare file immagine"
  17.       .ButtonName = "Conferma"
  18.       .InitialView = msoFileDialogViewPreview
  19.       .Filters.Clear
  20.       .Filters.Add "Tutti i Files (*.*)", "*.*"
  21.       .Filters.Add "Images Files (*.jpg)", "*.jpg" '
  22.       .Filters.Add "Images Files (*.bmp)", "*.BMP"
  23.       .Filters.Add "Images Files (*.png)", "*.png"
  24.       .Filters.Add "Images Files (*.ico)", "*.ico"
  25.       .FilterIndex = 2
  26.       .AllowMultiSelect = False
  27.       .InitialView = msoFileDialogViewPreview
  28.       .InitialFileName = PathDir
  29.  
  30.       If .Show = -1 Then
  31.         FotoOpen = CStr(.SelectedItems.Item(1))
  32.       Else
  33.          Beep
  34.        '  MsgBox "La selezione è stata annullata", vbInformation, "Informazione"
  35.       End If
  36.  
  37.     End With
  38.   Set Fp = Nothing
  39.  End Function



Ora il Dialog non tiene conto della DirIniziale settata, ma apre sempre nella Dir Documents dell'utente..
Come mai? Dov'é l'errore?
Grazie a tutti

PM Quote
Avatar
Carlo (Member)
Guru


Messaggi: 1344
Iscritto: 29/01/2018

Segnala al moderatore
Postato alle 17:52
Venerdì, 22/05/2020
With Fp
      .Title = "Selezionare file immagine"
      .ButtonName = "Conferma"
      .InitialView = msoFileDialogViewPreview
      .Filters.Clear
      .Filters.Add "Tutti i Files (*.*)", "*.*"
      .Filters.Add "Images Files (*.jpg)", "*.jpg" '
      .Filters.Add "Images Files (*.bmp)", "*.BMP"
      .Filters.Add "Images Files (*.png)", "*.png"
      .Filters.Add "Images Files (*.ico)", "*.ico"
      .FilterIndex = 2
      .AllowMultiSelect = False
      .InitialView = msoFileDialogViewPreview
      .InitialFileName = PathDir

non vedo: .InitialDirectory
credo che esista anche in VBA
se non ci fosse, controlla se il file esiste prima di darlo in pasto a .InitialFileName

Ultima modifica effettuata da Carlo il 22/05/2020 alle 18:08


in programmazione tutto è permesso
PM Quote
Avatar
alip1 (Normal User)
Pro


Messaggi: 139
Iscritto: 12/08/2019

Segnala al moderatore
Postato alle 18:16
Venerdì, 22/05/2020
Testo quotato

Postato originariamente da Carlo:

With Fp
      .Title = "Selezionare file immagine"
      .ButtonName = "Conferma"
      .InitialView = msoFileDialogViewPreview
      .Filters.Clear
      .Filters.Add "Tutti i Files (*.*)", "*.*"
      .Filters.Add "Images Files (*.jpg)", "*.jpg" '
      .Filters.Add "Images Files (*.bmp)", "*.BMP"
      .Filters.Add "Images Files (*.png)", "*.png"
      .Filters.Add "Images Files (*.ico)", "*.ico"
      .FilterIndex = 2
      .AllowMultiSelect = False
      .InitialView = msoFileDialogViewPreview
      .InitialFileName = PathDir

non vedo: .InitialDirectory
credo che esista anche in VBA
se non ci fosse, controlla se il file esiste prima di darlo in pasto a .InitialFileName



ma prende solo .InitialFileName = PathDir
e PathDir come vedi dal codice contiene una Dir non un filename... che non saprei. Proprio perché non solo quale vuole mettere glielo vado a far cercare... in verità dovrebbe andare ad aprirsi sulla cartella che gli passo! Almeno così dice la documentazione....

Ultima modifica effettuata da alip1 il 22/05/2020 alle 18:19
PM Quote
Avatar
Carlo (Member)
Guru


Messaggi: 1344
Iscritto: 29/01/2018

Segnala al moderatore
Postato alle 20:42
Venerdì, 22/05/2020
vedo che fai anche dei controlli

If SubDir <> "" Then
      PathDir = PathDir & "\" & SubDir & "\"
End If

Per controllare se stai passando un percorso che esiste controlla il contenuto della variabile PathDir in runtime.
E' molto facile sbagliare.

Ultima modifica effettuata da Carlo il 22/05/2020 alle 20:48


in programmazione tutto è permesso
PM Quote
Avatar
alip1 (Normal User)
Pro


Messaggi: 139
Iscritto: 12/08/2019

Segnala al moderatore
Postato alle 18:36
Martedì, 26/05/2020
Testo quotato

Postato originariamente da Carlo:

vedo che fai anche dei controlli

If SubDir <> "" Then
      PathDir = PathDir & "\" & SubDir & "\"
End If

Per controllare se stai passando un percorso che esiste controlla il contenuto della variabile PathDir in runtime.
E' molto facile sbagliare.




Facendo il debug.print ottengo questi valori:

Codice sorgente - presumibilmente Plain Text

  1. PathDir H:\Sviluppo\SVILUPPO_VBA\TEMP4YOU\bmp\
  2.          .InitialFileName C:\Users\Antonio Lipone\OneDrive\Documenti\



da cui si vede che il PathDir è corretto. Ma si rileva pure che l'assegnazione:
Codice sorgente - presumibilmente Plain Text

  1. .InitialFileName=PathDir



non va a buon fine... ..InitialFileName mantiene il suo valore originale... sebbene la documentazione dica altro...:heehee:
mi sembra un pò un mistero! Che ne pensi?

PM Quote
Avatar
Carlo (Member)
Guru


Messaggi: 1344
Iscritto: 29/01/2018

Segnala al moderatore
Postato alle 22:35
Martedì, 26/05/2020
Testo quotato

Postato originariamente da alip1:
mi sembra un pò un mistero! Che ne pensi?



Non ti so aiutare, non ho mai usato VBA, però il comando: .InitialFileName dovrebbe funzionare.
Fai una controprova, da runtime apri filedialog, naviga fino a trovare il file nella cartella H:\Sviluppo\SVILUPPO_VBA\TEMP4YOU\bmp\
una volta selezionato il file in questione e dato l'ok, confronta il percorso restituito da Fp.SelectedItems, con il tuo.



in programmazione tutto è permesso
PM Quote
Avatar
alip1 (Normal User)
Pro


Messaggi: 139
Iscritto: 12/08/2019

Segnala al moderatore
Postato alle 12:08
Mercoledì, 27/05/2020
Testo quotato

Postato originariamente da Carlo:

Testo quotato

Postato originariamente da alip1:
mi sembra un pò un mistero! Che ne pensi?



Non ti so aiutare, non ho mai usato VBA, però il comando: .InitialFileName dovrebbe funzionare.
Fai una controprova, da runtime apri filedialog, naviga fino a trovare il file nella cartella H:\Sviluppo\SVILUPPO_VBA\TEMP4YOU\bmp\
una volta selezionato il file in questione e dato l'ok, confronta il percorso restituito da Fp.SelectedItems, con il tuo.




Grazie Carlo il problema era più semplice . Mi hanno cambiato la subDir da BMP a IMG per cui non la trovava.. ed .InitialFileName rimaneva settato su qyuello di default... Risolto
Grazie per la tua disponibilità. Buon lavoro:pat::pat::pat::pat:

PM Quote