Newsgroup: it.comp.appl.access
Titolo: grave mancanza di access?

Ho creato una maschera con due campi testo e due ole. In questi due ole
avrei la necessità di mettere delle immagini in miniatura, che però si
ripetono quasi sempre: mentre all'inizio sono diverse tra loro, da un certo
punto in poi si ripetono molte volte. Mi chiedevo quindi se fosse possibile
importarle una volta sola(sono tre le immagini che si ripetono), copiandole,
mentre le altre volte semplicemente puntarle a quelle che ho copiato la
prima volta, in modo da recuperare notevole memoria. Sempre che ci sia il
modo...
Grazie a chi mi risponderà,
            Fabrizio (Modena)

 ha scritto nel messaggio

Prima di tutto non vedo dove sia la grave mancanza.
Ad ogni modo sul sito comune trovi un esempio su come gestire le immagini in
un db.
Sib
--
----------------------------------------------------
la mia home:
http://digilander.iol.it/syb
----------------------------------------------------
il sito comune di it.comp.database.access:
http://www.sitocomune.com
----------------------------------------------------
4000 anni fa', il saggio egizio Ptahhotep scrisse:
"... perche' non esistono saggi per nascita."
------------------------------------------------------
Saturiamo ECHELON:
bomba saddam attentato medio oriente

 un db.
Mi sembra una grave mancanza perchè credo l'importazione di foto in un
database sia molto diffusa e importante(basti pensare quanti usano access
per fare cataloghi, come me) e ho notato che access la gestisce in maniera
tutt'altro che efficente. Ho letto anche ciò che riguarda il mio problema
sul sito comune(Come implementare un archivio di immagini con Access), e
viene spiegato di usare un'applicazione con controlli Immagine Activex, che
mi sembrano ben fuori alla portata di principianti(tra l'altro nn ho visto
nessuna spiegazione di come sia possibile creare un'applicazione simile). In
più sebbene la trovata sia molto efficiente in termini di memoria, nn mi
sembra altrettanto efficiente in termini di praticità: io avrei voluto
semplicvemente un record in cui apparissero due campi testuali e due foto e
che quindi mostrassero il loro contenuto istantaneamente senza bisogno di
ulteriori clic. Ciao.

 ulteriori clic. Ciao.
E quello che è scritto sul Sito Comune ti risolve tutto con un record che
contiene 4 campi di tipo testo e nessun campo OLE; in due dei quattro campi
devi memorizzare il path delle due foto, negli altri due quello che ti pare;
quindi con due righe di codice VBA (perché due sono le foto) e nessun
ulteriore clic le tue immagini compaiono nella tua maschera.
Insomma non mi sembra opportuno fare gratuitamente delle considerazioni
negative su Access e sulle soluzioni del Sito Comune solamente perchè non si
è ben compreso qualcosa.
--
Roberto
---------------------------------------------
il Sito Comune di it.comp.appl.access:
http://www.sitocomune.com
---------------------------------------------

 Bravissmo se lo meritava.!!!!
Auguri a tutti per la Santa Pasqua
Ferdinando


 Roberto
... e non aggiungo altro!


 è ben compreso qualcosa.
Probabilmente sono stato troppo precipitoso a dare la mia opinione di grave
mancanza di access senza sapere effettivamente come funziona un programma
simile, ma ho trovato di sicuro conforto le parole del già citato Stefano
Bettini all'inizio della sua faq, di cui riporto se nn vi dispiace, il
testo: "Di fronte a tale problematica generalmente lo sviluppatore poco
esperto sceglie di memorizzare l'immagine in un campo di tabella di tipo
OLE, finendo però ben presto per rendersi conto che il suo database
raggiunge rapidamente dimensioni spropositate rispetto alla quantità di
immagini archiviate; dov'è lo sbaglio?
Il problema nasce da una ***"sbadataggine" dei programmatori Microsoft***;
utilizzando l'automazione OLE infatti le immagini vengono salvate in formato
NON compresso, col risultato che pochi megabytes di immagini .jpg (tipico
formato compresso) finiscono x occupare parecchie decine di megabytes una
volta memorizzate nel database, con tutti gli ovvi svantaggi che tale
situazione comporta (difficile trasportabilità, lentezza ecc. ecc)."
Vorrei quindi finire(scusandomi innanzitutto per essermi eccessivamente
dilungato) con il dire che la mia nn vuole ass essere una polemica nei
confronti vostri, del newsgroup o del sito comune, ma solo un chiarimento
riguardo a quanto io intendevo dire e forse qualcuno ha travisato, tutto
qua, poi se qualcuno vorrà o meno continuare a dare consigli anche a uno che
capisce ancora poco di un tale programma(e posso anche capirlo, vista la
"frustrazione" che possono comportare domande che ovviamente a voi appaiono
molto banali), sarà solo e solamente a sua discrezione e spero nn un fatto
personale(con il mio nick)
Saluti.

Io dirrei che vale la pena di essere pragmatici e vedere come tu possa
risolvere il tuo problema.
Prima soluzione
-----------------
Vuoi risovere il tutto senza usare codice VBA.
1) Definisciti nella tua tabella tanti campi OLE quente sono le immagini che
vuoi memorizzare.
2) Nella tua maschera inserisci tanti controlli Cornice oggetto associato
quanti sono i campi OLE della tabella.
3) Nell'origine controntrollo di ogni Cornice oggetto associato indica il
nome del campo OLE cui si riferisce.
Se ti serve un esempio di quanto sopra, apri il database di esempio
Northwind (ti è stato fornito insieme ad Access dalla Microsoft) e dai
un'occhiata alla tabella Categorie ed alla relativa maschera Categorie.
Per inserire l'immagine nel database apri la tua maschera, clicca con il
tasto destro sul controllo Cornice oggetto associato ed esegui la procedura
di Inserisci oggetto...
Questo è ciò che prevede Access per inserire immagini all'interno di un
database, e mi sembra facilino da realizzare; naturalmente devi saper
definire un campo OLE in una tabella, devi saper definire un controllo
Cornice oggetto associato in una maschera, devi saper eseguire la procedura
di Inserisci oggetto...
Se non sai queste tre cose, di due l'una: o te le studi o rinunci a fare un
database che contiene immagini.
Se adotti questa procedura, queste saranno le conseguenze:
1) Le immagini verranno incorporate comunque nel formato bitmap e questo a
prescindere dal loro formato originale (bmp, jpg ecc.), occupando uno spazio
su disco che è proprio del formato bitmap.
2) Sia che nella procedura Inserisci oggetto... scegli o meno l'opzione
Collegamento, l'immagine verrà incorporata nel database; la differenza sta
solamente nel fatto che, se non scegli l'opzione Collegamento, l'immagine
verrà inglobata nel database e non verrà più modificata; se inveci scegli
l'opzione Collegamento, nel caso in cui il file originario verrà modificato,
Access, alla prima occasione, modificherà di conseguenza l'immagine
incorporata nel database.
Seconda soluzione
-------------------
Risolvere il problema adottando la prima tecnica suggerita dal Bettini sul
Sito Comune. Per semplicità di esposizione, ipotizziamo che nella tua
maschera sia da visualizzare una sola immagine.
1) Definisciti nella tua tabella un campo di tipo. In questo campo di tipo
testo dovrai memorizzare il path COMPLETO del file immagine che contiene la
tua foto.
2) Nella tua maschera inserisci un controllo Immagine (nella sua FAQ il
Bettini lo chiama MioControlloImmagine); in questo controllo ti verrà
visualizzata la tua immagine. per inserire un controllo Immagine in una
maschera si esegue una procedura del tutto simile a quella con la quale si
inserisce una Cornice oggetto associato, solo che nella Casella degli
strumenti dovrai cliccare, prima di tracciare il rettangolo, sull'icona
giusta , quella con la montagna sormontata dal sole.
3) Nella tua maschera insrisci una casella di testo associata al campo della
tabella che contiene come valore il path del file immagine (nella sua FAQ
Stefano chiama questa casella di testo Path_Immagine). Stefano Bettini
suggerisce di dichiararsi tale controllo non visibile; per semplicità tu
lascialo visibile.
4) Sia a fronte dell'evento "Su corrente" della tua maschera che a fronte
dell'evento "Dopo aggiornamento"  della casella di testo Path_Immagine,
muovi nella proprietà Picture del controllo Immagine (MioControlloImmagine)
il contenuto della casella di testo Path_Immagine. In ambedue le ruotine
VBA, se i nomi che hai adoperato, sono quelli suggeriti da Stefano, dovrai
scrivere appunto:
Me!MioControlloImmagine.Picture = Me!Path_Immagine
Non capisco per quale motivo tu continui a dire che la seconda soluzione
sia, per un principiante, più complessa da realizzare rispetto alla prima;
se poi la difficoltà del principiante sta nel COPIARE una riga di codice VBA
suggerita in una FAQ, beh penso che il principiante deve studiare un pochino
oppure cambiare mestiere.
Le conseguenza di questa soluzione sono:
1) I file immagine non vengono incorporati nel database, restano esterni ad
esso.
2) Cambiando il valore contenuto nella casella di testo Path_Immagine, ti
cambia anche ciò che visualizzi nel controllo Immagine chiamato
MioControlloImmagine della tua maschera.
3) Per memorizzare un file immagine devi solamente inserire nella casella di
testo Path_Immagine il path completo del file immagine desiderato. Se la tua
immagine dovrà essere presente su più record, sarà sufficiente che memorizzi
il suo path su tutti i record che ritieni opportuno, senza dover per questo
duplicare il file immagine.
Se ritieni poco funzionale digitare il path completo di un file immagine
nella casella di testo Path_Immagine, hai tre possibilità:
1) Studiati l'altra FAQ, quella di Silvio Savoldi, nella quale troverai una
procedura simile all'Inserisci oggetto... con la quale puoi ricavarti
automaticamente il path completo della tua immagine dopo averla scelta
visivamente.
2) Studiati la funzione Dir ed applicala.
3) Metti tutti i file immagine in un'unica cartella (ammettiamo che la
cartella si chiami Foto e si trovi nel disco C) e se tutti i tuoi file
immagine sono di tipo JPEG, modifica la riga di codice VBA in:
Me!MioControlloImmagine.Picture = "C:\Foto\" & Me!Path_Immagine & ".jpg"
A questo punto nella casella di testo Path_Immagine limitati a digitare il
nome del file, senza farlo precedere dal suo indirizzo e farlo seguire dal
tipo file.
Penso di aver risposto anche alle cose che tu hai detto esserti poco chiare;
se così non è, dimmi cosa non ti è ancora chiaro.


 oppure cambiare mestiere.
So perfettamente che un programma come access è orientato ad un campo
professionale e che forse esisterebbero altri strumenti più semplici per
costruire semplici tabelle(vedi excel). Il fatto è che vorrei intanto
iniziare con l'immissione di dati quali testo e foto da utilizzare intanto
come archivio, poi, con la pratica spero in futuro di estendere le
funzionalità del mio database con query, macro, ecc. Avevo anche acquistato
una guida completa(su access 97 però), e ora la sto leggendo, anche se per
questioni di tempo nn riesco a fare molto purtroppo. Prima di postare altre
domande sul NG cercherò comunque di reperire da solo le informazioni che mi
servono.
In ogni caso ho notato che la prima soluzione, sebbene convenga dal punto di
vista della semplicità, nn conviene poi per la praticità, visto che trovarmi
un database di chissà quante centinaia di mega nn è quello che voglio. Penso
quindi di provare con la seconda soluzione, di cui nn ho capito alcune
cose(nn colpa delle sue spiegazioni, che sono state assolutamente precise e
semplici(mai pensato di scrivere FAQ? :), ma probabilmente per le mie ancora
scarse
conoscenze). Vorrei però farle una domanda: adottando la seconda soluzione
dovrei memorizzare un percorso di un file, ma cosa succede nel caso in cui
desideri masterizzare il mio database e leggerlo ogni volta da cd?
La ringrazio cmq della disponibilità prestatami.
-----------------------
ICQ: 104086955
-----------------------

 confronti vostri, del newsgroup o del sito comune, ma solo un chiarimento
cut
Guarda, ci caschi tu ma vale per tutti, l'errore che hai fatto e',
probabilmente, pensare al tuo messaggio come a una bottiglia gettata
nell'oceano (chissa' chi, quando e se qualcuno la trovera').
Piombare in un ng tematico esordendo con un oggetto che denigra il tema
stesso del ng e' come entrare in un'aula durante l'ora di matematica dicendo
"Ma servira' a qualcosa sta materia?".
Prova a scrivere su it.comp.os.linux.software scrivendo: "Scusate, ma non e'
piu' facile Windows?" e leggi cosa ti rispondono.
Sib


--
