Visualizzazione dei risultati da 1 a 6 su 6
  1. #1
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,315

    [VBA + Access] Caricamento immagini su report

    Ciao a tutti. Spero di essere in-topic.
    Sviluppando un semplicissimo report su Access ho la necessità di caricare diverse immagini. Mi spiego subito: a ciascun record da visualizzare sul report è associata una precisa immagine, il cui nome è specificato all'interno del record stesso in un apposito campo (chiamato nomefile).
    Per ottenere il risultato voluto ho, quindi, utilizzato questo metodo: ho inserito un'immagine nel report (il controllo è chiamato Immagine1). Quindi, nel codice VBA del report, all'interno della routine Corpo_Format() ho inserito questo codice:

    codice:
    Immagine1.Picture = LoadPicture("percorso_immagine" & Me!nomefile)
    Ma quando tento di visualizzare il report mi appare questo messaggio d'errore

    Errore di run-time '2220'

    Impossibile aprire il file '123456789'
    Il numero del file è a caso, dato che varia di volta in volta (probabilmente è il puntatore al file che viene utilizzato dalla LoadPicture).

    Premetto che il file esiste, è nella posizione specificata (ho provato a utilizzare sia il percorso relativo che quello assoluto) ed è una semplice Bitmap (ma anche con JPG o GIF l'errore persiste).

    Qualcuno mi sa spiegare perchè non va?

    Grazie mille.

    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

  2. #2
    Utente di HTML.it L'avatar di LMondi
    Registrato dal
    Sep 2004
    Messaggi
    1,291
    Ciao LeleFT,
    per brevità ti posto un esempio tratto da un prog. in uso e dove l'immagine bmp (si tratta di un grafico) è inserita nel piè di pagina del Report (Section5):
    codice:
    With DRRiparSp.Sections("Section5")
                    'Imposta le dimensioni dell'immagine:
                    With .Controls("ImageRipSP")
                        .Height = 5700
                        .Left = 0
                        .Top = 200
                        .Width = 13590
                        .PictureAlignment = rptPACenter
                        .SizeMode = 2
                        Set .Picture = LoadPicture(App.Path & "\DATI\Grafico\" & sNomeGraf)
                    End With
                End With
    Nome del controllo: ImageRipSP
    Nome con l'estensione dell'immagine: sNomeGraf
    Cartella primaria e sottocartella ove è salvata l'immagine: "\DATI\Grafico\"
    LM

  3. #3
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,315
    Ciao.
    Ti ringrazio per il codice (e le spiegazioni), ma il problema persiste.
    Se lascio l'istruzione Set all'interno del blocco With mi dice "Proprietà o metodo non supportato dall'oggetto", se lo tolgo mi dice che non riesce a caricare il file.
    A questo punto la mia domanda diventa: dov'è che hai inserito quel codice all'interno del modulo del report?


    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

  4. #4
    Utente di HTML.it L'avatar di LMondi
    Registrato dal
    Sep 2004
    Messaggi
    1,291
    dov'è che hai inserito quel codice all'interno del modulo del report?
    No, il codice è inserito in un modulo esterno al DataReport.
    Però non dovrebbe fare alcuna differenza.
    Del funzionamento del codice ne sono sicuro, dato che è parte di un programma.
    Accertati, piuttosto, dove il controllo è inserito e che quindi la sezione sia correttamente riportata nel codice; ad esempio With DRRiparSp.Sections("Section5") il controllo è nella sezione 5.
    LM

  5. #5
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,315
    Sono riuscito a venirne a capo.
    Spulciando la guida di VBA ho scoperto questo:

    Non è possibile utilizzare il metodo LoadPicture per impostare la proprietà Picture di un controllo Immagine. Questo metodo funziona soltanto con i controlli ActiveX. Per impostare la proprietà Picture di un controllo Immagine, assegnarla semplicemente a una stringa specificando il nome file e il percorso dell'immagine desiderata.
    In pratica è sufficiente questo:

    codice:
    Immagine1.Picture = "percorso_al_file\" & Me!nomefile
    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

  6. #6
    Utente di HTML.it L'avatar di LMondi
    Registrato dal
    Sep 2004
    Messaggi
    1,291
    Questo metodo funziona soltanto con i controlli ActiveX
    LeleFT complimenti.
    Nel mio programma funziona quella riga di codice, evidentemente perchè l'immagine è frutto di una elaborazione del controllo MSChart. Buono a sapersi ! (Daltronde non ho mai inserito una Bmp esterna nel DataReport, quindi davo per scontato ...).
    LM

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.