Form con immagine prelevata da altra tabella

di il
6 risposte

Form con immagine prelevata da altra tabella

Buongiorno,

- Su una form Access "MASCHERA1" ho inserito un controllo 'cornice oggetto non associato' denominato "PICT".
- Le immagini che dovono popolare il controllo di trovano su una tabella "TABELLA2" (ID - ctr; desc - testo; pict - allegato) opportunamente caricata.
- In una Sub VBA, con un algoritmo, determino l 'ID dell'immagine che voglio visualizzare e la assegno ad una variable (dim MYVALUE as integer)
- Ho quindi provato a popolare il controllo MASCHERA1.PICT usando il metodo DLOOKUP ("PICT";"TABELLA2", "ID = "&MYVALUE), ma sono evidentemente in errore perché ottengo l'errore di run-time 438.
La domanda è: quale metodo devo utilizzare per visualizzare le immagini di TABELLA2?

Molte grazie in anticipo per ogni correzione e suggerimento.

Massimo

6 Risposte

  • Re: Form con immagine prelevata da altra tabella

    Mostra il codice che hai usato... detta così è troppo fumosa la cosa...!
  • Re: Form con immagine prelevata da altra tabella

    Ecco... le definizioni ed il codice usato... che non è molto.....
    Grazie 1000.
    ____________________________________________________________________________________
    DATI

    TABELLA 2 ' la tabella che contiene le 4 immagini che mi occorrono
    Nome Campo Tipo dati
    ID Contatore
    DESC Testo
    PICT Allegato


    Sulla Form"Maschera1 ": controllo denominato PICT - cornice oggetto non associato


    IL CODICE

    Private Sub Comando18_Click()
    '
    Dim MYVALUE as integer
    MYVALUE = Int ((4*Rnd)+1) ' genero un numero casuale da 1 a 4 da usare per
    'determinare l'immagine da mostrare

    Forms!MASCHERA1!PICT = DLookup("PICT", "TABELLA2", "id = "&MYVALUE) ' l'struzione che va in errore 438
    '
    End Sub
  • Re: Form con immagine prelevata da altra tabella

    Quale proprietà stai usando del controllo Immagine dal momento che non la espliciti...?

    Secondo me... innanzitutto non devi usare un controllo ole non associato ma dovresti usare un controllo immagine ed assegnare alla proprietà PictureData il risultato del Dlookup... essendo una Bmp... se l'immagine è inglobata in un campo Ole.
  • Re: Form con immagine prelevata da altra tabella

    Grazie per il suggerimento.
    Ho eseguito.
    Ho creato un controllo Immagine e gli ho assegnato il risultato della DLookup, utilizzando la proprietà PictureData come da lei suggerito.
    Ho verificato che il campo PICT (tipo dati = allegato) della tabella che mi fa da libreria immagini (TABELLA2) faccia riferimento a immagini .bmp

    Quindi:
    Dim MYVALUE as integer
    MYVALUE = Int ((4*Rnd)+1) ' genero un numero casuale da 1 a 4 da usare per 'determinare l'immagine da mostrare
    Forms!MASCHERA1!PICT.PictureData = DLookup("PICT", "TABELLA2", "id = "&MYVALUE)

    Ora si genera l'errore 2192 "La bitmap specificata non è nel formato dib"
    Le ricerche che ho fatto in rete non mi hanno dato particolare conforto ( installazione incompleta di access... virus...mah!)

    Le sarò grato per qualunque ulteriore suggerimento oltre a quello fornito.
  • Re: Form con immagine prelevata da altra tabella

    Non ho avuto tempo per cercare come feci io a risolvere... vado a memoria, ma comprendo che è poco utile... e prima ti espongo una soluzione veloce....!

    Invece di usare il controllo 'cornice oggetto non associato' devi usare un Oggetto OLE ASSOCIATO o 'cornice oggetto associato' e, nella proprietà Origine Controllo metti la tua DlookUp.

    Questo il codice che ho usato io per il test che ti ho esposto e funziona bene.
    = DLookup("Img16";"ztbSysICO";"IdICO=2")
    Per usare il Controllo Immagine da Campo OLE, serve leggere il Campo, ed esportarlo in Binario aggiungendo l'Header... avevo anche il codice già fatto... ma è talmente vecchio che non lo riesco a recuperare...
  • Re: Form con immagine prelevata da altra tabella

    Grazie per la sollecita risposta. Adatterò il suggerimento alla mia situazione e le farò sapere.
    Buona giornata.
Devi accedere o registrarti per scrivere nel forum
6 risposte