Newsgroup: it.comp.appl.access
Titolo: collegare immagini di una directory ai nomi inseriti in tabella

ho una directory con circa 6200 file, ho una tabella che contiene tutti i
nomi di questi file, c'è un modo per associare automaticamente le immagini
ai valori in tabella?
rispondetemi all'indirizzo: 
nick...@tiscalinet.it
grazie per l'attenzione...

 ha scritto nel messaggio
news:fjKq8.114232$%g7.36...@twister2.libero.it...

Se per nomi dei file intendi il path completo dei file (C:\NomeCartella ...
\NomeFile), a fronte dell'evento "Su corrente" della maschera imposta la
proprietà Picture di un controllo Immagine con il contenuto del controllo
associato al campo in questione.
--
Roberto
---------------------------------------------
il Sito Comune di it.comp.appl.access:
http://www.sitocomune.com
---------------------------------------------

ancora non ci riesco, nella scheda eventi delle proprietą non mi appare la
voce "su corrente", (sto usando access XP),
e anche se imposto ORIGINE CONTROLLO sul campo che contiene il percorso non
succede niente...
ke devo fare???

 ke devo fare???
Per prima cosa ti consiglio di studiare un po' Access (in una buona guida
all'uso e/o sull'help in linea), almeno quel tanto che ti permetta di
acquisire quella proprietą di linguaggio necessaria a farti capire e a
comprendere i suggerimenti che invierai e riceverai in questo NG.
Dopo di che ti suggerisco di fare un salto nel Sito Comune (link qui sotto)
e leggerti nella Sezione General le seguemti tre FAQ:
1) "Come implementare correttamente un archivio di immagini." di Stefano
Bettini
2) "Implementare un archivio di immagini." di Silvio Savoldi
3) "Archiviazione immagini" di Franco Cappellaro
Nella prima FAQ troverai un po' di teoria, nelle altre due troverai due
esempi di gestione di un archivio immagini realizzato con Access usando la
tecnica che ti ho suggerito.


bene!
finalmente sono riuscito a collegare le immagini utilizzando i tuoi consigli
e quelli del sito comune,
in pratica su EVENTO CORRENTE ho creato la seguente routine:
me.ControlloImmagine.picture=me.Percorso_file
 ma č sorto un piccolo incomodo.
premetto che la tabella č costituita dai seguenti campi:
codice, descrizione, prezzo, imballi, categoria, percorso_file.
il codice č praticamente la chiave primaria e rappresenta il nome del file
senza estensione.
Il problema č questo:
se inserisco nuovi articoli devo perforza inserire il percorso del nuovo
file manualmente e questo non mi torna comodo.
come posso utilizzare la precedente routine in modo che possa sftuttare il
campo nome ed eliminare il campo percorso_file (che tra l'altro rende il
file un pň piů pesante)?
C'č un modo per creare maschere che svolgono diverse funzioni, ma che
abbiano sempre la stessa interfaccia?
Ti ringrazio in anticipo per la pazienza dimostrata e mi scuso se sono stato
un po contorto nello spiegarmi!!

 un po contorto nello spiegarmi!!
Se ho capito bene, nel caso in cui tu abbia un file immagine JPEG chiamato
Pippo ed allocato nella cartella Pluto del disco C, in questo momento nella
tua tabella il campo Codice ha il valore Pippo ed il campo Percorso_file ha
il valore C:\Pluto\Pippo.jpg .
Se tutti i file immagine sono JPEG e sono allocati nella cartella Pluto del
disco C, puoi eliminare dalla tabella il campo Percorso_file e a fronte
dell'evento "Su corrente" della maschera generare il seguente codice VBA:
Me!ControlloImmagine.Picture = "C:\Pluto\" & Me!Codice & ".jpg"
Lo stesso codice VBA è bene che lo generi anche a fronte dell'evento "Dopo
aggiornamento" del controllo Codice, in modo che la visualizzazione
dell'immagine avverrà anche in fase di inserimento di un nuovo record.
Spero che questo è quello che ti serviva.


caro Roberto, devo dire che mi hai lasciato senza parole, mi hai risolto
(con tanta pazienza) un bel problemone!!
non mi resta che ringraziarti e seguire il tuo consiglio di studiarmi per
bene access su manuale?
a proposito, quale mi consigli? non vorrei sbagliare nell'acquisto e visto
che mi sembri molto esperto non posso che chiedere consiglio a te!!
grazie ancora e al mio prossimo dubbio!!

 ha scritto nel messaggio
news:6NYr8.133622$%g7.42...@twister2.libero.it...

Fai un salto sul Sito Comune (link qui sotto) e dai uno sguardo alla Sezione
Libri; tra le varie recensioni ce ne è una in cui segnalo la Guida all'uso
di Microsoft Access 97; visto che è della collana Microsoft Press della
Mondadori penso che ora sia in commercio anche l'edizione per Access XP.
Se lo trovi, quel libro penso che faccia proprio al caso tuo.
Comunque, come puoi vedere dalle altre recensioni, ce ne sono anche altri
buoni.
Comunque non ti dimenticare di usare anche l'help in linea di Access: è
insostituibile e credo che sia il migliore dei manuali, inoltre, quando usi
Access, è sempre a portata di mano.


Lo so che sono rompiballe, ma vorrei effettuare una piccola modifica alla
routine che mi hai spiegato per ultimo, cioè:
come devo fare per eliminare C: e fare in modo che la routine valga per
qualsiasi unità?
mi spiego meglio...
ho la necessità di distribuire il programma su CD oltre che ad utilizzarlo
su C:, quindi vorrei che il programma cerchi la root principale a
prescindere dall'unità, ho provato e togliere C: dalla routine ma non
funziona..
che devo fare?
ciao
Nicola

 ha scritto nel messaggio
news:2egs8.513$SR5....@twister1.libero.it...

Una soluzione potrebbe essere quella di inserire i file immagine nella
stessa cartella che contiene il database; così facendo il percorso del
dtatabse corrente è uguale a quello di detti file, per cui puoi modificare
il codice VBA: nel seguente modo:
Me!ControlloImmagine.Picture = Left(CurrentDb.Name, _
Len(CurrentDb.Name) - Len(Dir(CurrentDb.Name))) _
& Me!Codice & ".jpg"


>Me!ControlloImmagine.Picture = "C:\Pluto\" & Me!Codice & ".jpg"
Ciao
Roberto, 
scusami se mi sono inserito in questa discussione, ma č un
problema che ho anch'io.
ho seguito il consiglio riportato e funge
benissimo. Ci sono perň casi in cui non ho l'immagine, ma il sistema cosě
lo va sempre a cercare..
Potresti darmi una piccola correzione?
grazie
Massimiliano
--------------------------------
Inviato via 
http://usenet.iol.it
 

 Massimiliano
Puoi effettuare la verifica dell'esistenza del file tramite la funzione Dir
(vedi help).
Prova a fare cosě:
If Dir("C:\Pluto\" & Me!Codice & ".jpg") = "" Then
    MsgBox "Il file " & Me!Codice & ".jpg non esiste nel percorso C:\Pluto\"
Else
    Me!ControlloImmagine.Picture = "C:\Pluto\" & Me!Codice & ".jpg"
End If
Dovrebbe funzionare.


non ci crederai ma la domanda di massimiliano sarebbe stata la mia prossima
domanda, quindi te ne faccio un'altra:
se dovessi eliminare dal magazzino un codice con una queri di eliminazione,
verrebbe eliminata solo la voce in tabella, come si può fare per eliminare
anke il file?
grazie a te per la pazienza e a massimiliano per avermi risparmiato una
domanda.. (cmq ho già prenotato il manuale che mi hai consigliato e spero mi
sia davvero di grande aiuto).
Nicola


wrote:

vedi kill
Saluti.
Emanuele.


Come ti ha suggerito Emanuele con l'istruzione Kill; la sintassi la trovi
sull'help: se hai problemi rifatti vivo.


ho notato una cosa, cioè che la routine che mi hai suggerito non funziona se
creo una maschera che deve contenere + foto, come posso modificarla?
secondo problema:
premessa: ti prego di non ridere della mia ignoranza.
ho la mia tabella con circa 6200 articoli, questi sono suddivisi per
categoria (esempio: scuola/zaini; scuola/vari; casalingo/utensili;
casalingo/tovaglie; ecc. ecc..) per un totale di circa 50 categorie.
il problema è questo:
se volessi fare delle ricerche per categoria e mostrare tutte le foto di
quest'ultima, dovrei creare in pratica 50 query, di conseguenza dovrei
creare altrettante maschere, e a questo punto il file diventerebbe
pesantissimo e difficile da usare.
come potrei gestire le 50 query usando un'unica maschera? magari
associandola ad un pulsante?
spero di essere stato chiaro.
grazie in anticipo...


O no! Per risolvere questo tipo di problemi esistono le query parametriche,
così sarà sufficiente creare un'unica query e quindi un'unica maschera di
visualizzazione che abbia come origine record la query parametrica.
Per cominciare a farti una cultura in merito, leggi sull'help "Creare una
query con parametri in cui viene richiesto di specificare dei criteri ogni
volta che viene eseguita". Se trovi problemi rifatti vivo e dicci che
problemi trovi a realizzare una query parametrica.


ti spiego il programma:
č la gestione di un magazzino e i campi usati li conosci perchč te li ho gia
detti.
qusto programma devono utilizzarlo anche dei rappresentanti.Questi vanno dai
clienti e mostrano le foto degli articoli e la visualizzazione viene
effettuata per categoria. fin'ora quasto lavoro l'hanno svolto con il
programma ACDSee e le foto erano sistemate per CARTELLE che assumevano i
nomi delle categorie. con ACDSee perň tra un click e un clack c'č la
sicurezza che queste cartelle vengano spostate o cancellate e poi č un
problema ritrovarle (per loro che hanno poca pratica).
tutto qui.
per quanto mi riguarda perň le query parametriche le so usare abbastanza
bene, il problema č che non ci devono essere parametri da inserire
manualmente, deve funzionare tutto in automatico, cioč: le categorie sono
giŕ stabilite, chi andrŕ ad utilizzare il programma dovrŕ scegliere tramite
dei pulsanti ognuno di questi deve essere associato ad una query. cliccando
sul pulsante si deve aprire una maschera che conterrŕ solo gli articoli
associati alla categoria scelta. La mia soluzione (per quello che so io) č
quella + contorta, cioč creare tante query e maschere quante sono le
categorie (50 circa). vorrei sapere se posso evitare di creare 50 e passa
maschere visto che esteticamente saranno tutte uguali e crearne una che
attraverso un codiceVB o altro mi associ le 50 query ad un'unica maschera
evitando di complicare il DB.


Non conosco il programma ACDSee di cui parli, per cui il nominarlo non è che
mi chiarisce ciò che vuoi fare.
Quindi tu mi stai dicendo che vorresti creare 50 query (una per ogni
categoria di prodotto), quindi mettere in una maschera 50 pulsanti di
comando (uno per ogni categoria di prodotto),  ognuno dei quali apre una
maschera diversa ed ogni maschera ha come origine record una delle 50 query
di cui sopra. Non ti nascondo che a me sembra una pazzia organizzare le cose
così.
Secondo me la cosa giusta da fare è crearsi una tabella che contenga 50
record, ognuno contenente il nome di una delle 50 categorie.
Quindi creati una maschera che contiene una casella di riepilogo che abbia
come origine riga la tabella di cui sopra; nella tua unica query di
selezione parametrica fai riferimento, nei parametri relativi al campo della
categoria, a questa casella di riepilogo; a fronte dell'evento "Su clic"
della casella di riepilogo apri l'unica maschera di visualizzazione, che ha
come origine record l'unica query di selezione. A questo punto il tuo
rappresentante, anziché cliccare con il mouse su uno dei 50 pulsanti,
cliccherà con il mouse sul nome della categoria da visualizzare, contenuta
nella casella di riepilogo: non mi sembra una procedura meno facile.
Naturalmente i file immagine saranno contenuti in un'unica cartella: ma di
questo abbiamo già discusso nei messaggi precedenti.ù
Per quanto riguarda il fatto di realizzare una maschera che contenga
contemporaneamente più controlli immagine è comunque possibile; ti crei una
maschera, con visualizzazione a Maschera singola, che non abbia origine
record e ci piazzi ad esempio 20 controlli immagine; a fronte dell'evento
"Su caricamento" della maschera, tramite un ciclo, carichi i nomi dei
prodotti contenuti nei primi 20 record della query nelle proprietà Picture
dei 20 controlli immagine; inserisci nella maschera anche un pulsante di
comando pigiando il quale caricherai i nomi dei prodotti relativi ai
successivi 20 record contenuti nella query.
In alternativa, puoi mettere un solo controllo immagine in una maschera con
visualizzazione a Maschera singola che abbia come origine record la query
parametrica di selezione di cui sopra; quindi fai scorrere automaticamente i
record nella maschera utilizzando un codice VBA generato a fronte
dell'evento su Timer (ad esempio, ogni 5 secondi ti posizioni sul record
successivo, e se sei posizionato sull'ultimo record ti riposizioni sul primo
record).
Comunque per realizzare queste cosine bisogna masticare VBA abbastanza bene.


ci ho riflettuto un po e devo dire che usare la casella di riepilogo è la
soluzione che cercavo, inoltre le categorie le avevo già in una tabella a
parte in quanto fanno parte di una casella di ricerca. In questo caso devo
dire che non ho bisogno più di visualizzare più foto ma 1 scorrendo poi con
i pulsanti AVANTI e INDIETRO.
Se ho capito bene dovrei crearmi una query che contiene i campi della
tabella principale + il campo categoria, da questa query devo crearmi una
maschera che potrei usare in un sistema a MASCHERA/SOTTOMASCHERA dove la
maschera contiene la casella di riepilogo e la sottomaschera contiene i dati
filtrati. è giusto?
la cosa che non capisco è come devo fare a creare il criterio di ricerca
della query generalizzandola a tutte le categorie semplicemente cliccando
nella casella (mi sembra come il gatto che insegue la sua coda) tra l'altro
la guida di access xp è abbastanza completa ma non riesce a soddisfarmi.
in attesa del libro (che faccio fatica a trovare) faccio riferimento a te
nella speranza che mi possa allargare gli orizzonti e prepararmi allo studio
approfondito di access.
Nicola

 Nicola


non pensavo che si potesse ottenere un risultato simile... è proprio quello
che avevo immaginato ma non credevo si potesse fare...
ho bisogno di un chiarimento:
quando nel controllo SU CLICK della casella di riepilogo do la routine
ME.REQUERY come fa access a capire quale query usare?fa forse riferimento
alla query su cui è creata la maschera?
in pratica io vorrei sapere (cosa che non trovo sulla guida in linea) come
faccio ad associare un pulsante ad una specifica query (es. una query di
accodamento)? (devo specificarla da qualche parte!!)
 Poi ci sono dei problemini piccoli  nella maschera creata:
1 all'apertura della maschera mi dice: impossibile trovare il file .JPG ed è
normale xchè nella casella non c'è selezionato niente. come evitarlo?.
2 quado finisco di scorrere la categoria mi da lo stesso problema
precedente. (come gestire questo errore?)
3 come posso fare ad escludere alcune voci dalle categorie? (ad esempio i
prodotti esauriti che ai rappresentanti non serve)
spero che allafine dell studio del manuale possa ricambiarti con qualche
consiglio anche se sarà impossibile...
grazie 1000^9999999999
Nicola

 Nicola
--


scusami se insisto:
vorrei sapere solo se i file jpg devono avere un formato particolare, visto
che x alcune immagini mi viene detto: il file non è leggibile o roba simile,
mentre è registrato in modo corretto e riesco a visualizzarlo con qualsiasi
editor grafico...
per quanto riguarda il pulsante sulla query di accodamento ho dei problemini
ma cerco di risolverli da solo finchè non ci riesco...
a proposito:
c'è un modo per rendere l'apertura dell'oggetto immagine + veloce?
grazie 1K*1k
Nicola

 grazie 1K*1k
Vale quanto detto sopra: diminuisci le sue dimensioni e/o aumenta la sua
compressione a valori ottimali che non compromettano la qualità, ma che
tenga conto della qualità visibile a video.


allora, ho risolto il problema delle immagini, ora tra l'altro è passato
tutto da 620 Mb a 160 e il db è un razzo!!
il problema è il pulsante, ho provato tutte le combinazioni possibili col
DoCmd e non ne cavo niente, ho provato a creare una macro che usa la query
di accodamento, funziona ma mi accoda tutti gli articoli, quindi niente di
risolto o almeno a parte. a quanto sembra dovrei inserire nella query qualke
parametro che indichi che deve accodare solo ed esclusivamente il record
corrente.
come fare?
PS:
ho passato il DB su CD e sono rimasto colpito da una cosa:
la maschera che contiene le categorie (la casella di riepilogo) e i dati
affianco non funziona.
Mi apre solo la maschera senza visualizzare NIENTE, mentre le altre maschere
funzicano a dovere!!
che succede??
Grazie 100k
Nicola

 Nicola

il pulsante che si deve trovare affianco alla foto deve essere collegata ad
una query di accodamento. cliccandoci sopra i dati relativi a quella foto
(solo quellaa video) devono essere inseriti in una tabella per poi
stamparla. tutto qui.

 ha scritto nel messaggio
news:CZFv8.55713$SR5.1...@twister1.libero.it...

Se il tuo problema è quello di stampare in un report i dati e la foto del
record corrente, non hai affatto bisogno di una query di accodamento, è
sufficiente aprire con il metodo OpenReport (vedi help) il tuo report
filtrandolo con il valore contenuto nel controllo della maschera associato
alla chiave primaria della tabella.
Naturalmente, il report avrà la stessa origine record della maschera.


non mi sono spiegato...
man mano che sfoglio le immagini il rappresentante deve dirmi "voglio
questo" io clicco e access memorizza, vado avanti e la storia si ripete...
alla fine devo avere una tabella che contiene l'ordinato e da questo un
report (senza foto)
cmq mi è arrivato il manuale tanto atteso, ma non cantar vittoria tanto
qualke consiglio te lo chiederò sempre...
:-)
ciao
Nicola

 ha scritto nel messaggio
news:k9Uv8.58357$SR5.1...@twister1.libero.it...

Se non ricordo male, tu avevi già fatto una query di accodamento che però ti
accodava tutta la tabella: in quella query aggiungi una clausula WHERE che
seleziona solo il record la cui chiave primaria è uguale a quella del record
corrente della maschera.


problemino n°1:
ho una query di selezione con parametro che mi effettua una ricerca sul
codice. su questa query ci ho fatto una maschera e fin qui tutto OK!!
solo che la maschera funziona solo per una ricerca se voglio fare altre
ricerche devo chiudere e riaprire la maschera. come si puo fare per
eliminare il filtro che genera quella query e riutilizzare la maschera senza
che effettuo quel procedimento magari attraverso un pulsante che elimini il
filtro e lo riapplichi?
se non mi sono spiegato bene:
vorrei (attraverso un pulsante) che si annulli l'effetto della query (quindi
nella stessa maschera voglio vedere tutti i campi della tabella) e
attraverso un'altro rieseguire la query senza che si esca dalla maschera...
so che si può fare...
ma non ho la minima idea di come...
problemino n°2
ma nella guida di access (quella in linea) ci sono percaso le spiegazioni di
ogni singolo comando? io non le trovo... ho provato ad usare quel comando
WHERE che mi hai consigliato ma non riesco a trovare la modalità di
utilizzo...
problemino n°3
ho il campo codice in formato testo perchè alcuni iniziano con lo 0. E' da 2
giorni che sto impazzendo per il seguente motivo:
in una query di ricerca per codice nel criterio ho inserito la funzione:
right$([ultime 6 cifre?];6)
in pratica voglio risalire al codice considerando solo le ultime 6 cifre, ma
con sconforto ho notato che non funzica... (tieni conto che alcuni codici
sono a 8 cifre e altri a 13 e la dimensione del campo è di 13 caratteri).
che succede????
il manuale è una bomba...
grazie per il consiglio...
Nicola

 Nicola
