Newsgroup: it.comp.appl.access
Titolo: Cancellare un file

Access97
win98
Una tabella e' composta da records ognuno dei quali e' relativo ad un
file contenuto in una data folder di windows (la tabella ha un campo
testo per il percorso C:\folder del File).
Nel caso in cui cancello un record della tabella, ho la necessita' che
venga cancellato anche il file associato (il database e' un archivio
di immagini)
Come posso fare?
Grazie in anticipo per ogni aiuto
Carlo

 ha scritto nel messaggio
news:d8c3b747.01061...@posting.google.com...

Con l'istruzione Kill (vedi help).
--
Roberto
---------------------------------------------
il Sito Comune di it.comp.appl.access:
http://www.sitocomune.com
---------------------------------------------

> Con l'istruzione Kill (vedi help).
Innanzi tutto grazie.
Ho utilizzato lo statement Kill con il quale mi pare di capire che il
file viene completamente eliminato, infatti non ne rimane traccia
nemmeno nel cestino.
C'e' il modo per far si che il file possa in extremis essere
recuperato? in poche parole e' possibile "spostarlo" nel cestino
invece di eliminarlo?
Grazie di nuovo e scusate per la domanda banale.
Carlo

 ha scritto nel messaggio
news:d8c3b747.01061...@posting.google.com...

Non saprei proprio come si possa spostare da Access un file nel cestino di
Windows.
Puoi perņ cautelarti chiedendo conferma all'utente se vuole veramente
cancellare il file.
Oppure puoi crearti sul desktop un folder che userai come se fosse il
cestino e nel quale copi, con l'istruzione FileCopy (vedi help), il tuo file
prima di cancellarlo; svuoterai questo folder manualmente come avresti fatto
con il cestino.
Non mi viene in mente altro, ma non si sa mai che qualche altro
frequentatore che con le API ci fa anche il caffč....


 frequentatore che con le API ci fa anche il caffè....
Se non proprio il caffè.....potrebbero comunque aiutarmi ad inserire nel
record di ogni immagine alcuni dati quali a esempio la grandezza in Kb,
oppure le dimensioni orizzontale e verticale?
Oppure ci sono delle proprietà o metodi dell'oggetto Application che possono
fare allo scopo?
Grazie nuovamente.
Carlo

 Carlo
Con le funzioni messe a disposizione da access'97 puoi:
- leggere la dimensione del file:
Es. (dall'help)
'-----------------
In questo esempio la funzione FileLen viene utilizzata per restituire la
lunghezza di un file espressa in byte. Nell'esempio FILEPROV è un file che
contiene dati.
Dim MySize
MySize = FileLen("FILEPROV") ' Restituisce la lunghezza
 ' del file espressa in byte.
'-----------------
- leggere la data e ora dell'ultima modifica:
Es. (dall'help)
'-----------------
In questo esempio la funzione FileDateTime viene utilizzata per ottenere la
data e l'ora di creazione e dell'ultima modifica di un file. Il formato di
data e ora visualizzato sarà quello delle impostazioni internazionali del
sistema.
Dim MyStamp
' Presupposto: FILEPROV è stato modificato l'ultima
' volta il 12 febbraio 1994 alle 16.35.47.
' Presupposto: impostazioni internazionali
' Italia/Italiano.
MyStamp = FileDateTime("FILEPROV") ' Restituisce "12/2/94 16.35.47".
'-----------------
Per le dimensioni (orizzontale/verticale) dei file immagine, se non li apri
perlomeno in anteprima, non credo sia possibile leggere le proprietà se non
conosci il formato binario del file (jpg, bmp, etc. etc.)...
Ciao.

 conosci il formato binario del file (jpg, bmp, etc. etc.)...
Le immagini sono tutte Jpg e sono pure aperte.........come potrei fare???
Carlo

 ha scritto nel messaggio
news:9gnfmi$9hit2$1...@ID-29643.news.dfncis.de...

Prova con:
'---------
Me.nomeControlloImmagine.ImageHeight
Me.nomeControlloImmagine.ImageWidth
---------
Ciao.

 Me.nomeControlloImmagine.ImageWidth
Bingo!
Stupidamente avevo pensato di non usare queste proprietà perchè credevo che
ritornasseso le dimensioni della cornice del controllo e non le dimensioni
reali dell'immagine in esso caricata!:-(
Posso chiedervi l'ultimo aiutino?
Il mio form è un "multiple Forms", cioè visualizza diversi records
contemporaneamente.
Essendo ovviamente il controllo dell'immagine un controllo Unbound, il
controllo stesso mi visualizza su tutti i records l'immagine relativa al
primo record.
Io invece vorrei ovviamente visualizzare la giusta immagine per ogni
record....
al momento ho scritto questo codice nell'evento Form_Load
NomeControllo.Picture = MyPath & [ImageName]
Ma non ho la più pallida idea di come posso ovviare al mio problema.......
Grazie in anticipo.
Carlo


Anziché generare il codice VBA:
NomeControllo.Picture = MyPath & [ImageName]
a fronte dell'evento "Su caricamento" della tua maschera, generalo a fronte
dell'evento "Su corrente".


 Carlo
Ciao.

 dell'evento "Su corrente".
avevo provato anche cosě, ma ancora non riesco a risolvere.
Siccome il record corrente č comunque sempre e solo 1, nella cornice
immagine ottengo l'immagine collegata al record di volta in volta corrente
il quale si riflette su tutti i records...
......o ho forse sbagliato qualcosa io????
Grazie e ciao
Carlo

 del file e dovrebbe funzionare...
...mmhhh...che mi risulti la cornice immagine è un oggetto che non si può
associare....o mi sbaglio????
ho provato a scrivere qualcosa del tipo
=MyPath & [ImageName]
in Picture nella finestra proprietà del controllo, ma appena salvo scompare
tutto!:-(
forse tu intendi che devo usare un controllo associato OLE?
Sinceramente vorrei evitare di ricorrere all'OLE per ragioni di...spazio,
visto che con il database devo immagazzinare centinaia (o forse migliaia,
ancora non so:-) di immagini, e comunque il db dovrà andare sul web server,
dove non avrò la possibilità di sfruttare oggetti OLE con l'ASP.....
O forse non c'è proprio altro modo????
Grazie e ciao
Carlo

 Carlo
Ciao.


Mi è venuto un atroce dubbio, ovvero che la visualizzazione della tua
maschera è a Maschere continue. Se così è non puoi usare un controllo
immagine per il motivo da te indicato, il record corrente è solo e comunque
uno.
Quindi un controllo immagine, non avendo la proprietà origine controllo, ha
significato solo se inserito in una maschera con visualizzazione a Maschera
singola o in un report.
Se poi vuoi comunque visualizzare i record con una maschera a Maschere
continue, togli dalla maschera il controllo immagine; l'immagine puoi
inserirla in una maschera popup (visualizzazione a Maschera singola) che
contiene solo il controllo immagine; apri la maschera popup a fronte
dell'evento "Su apertura" della tua maschera; a fronte dell'evento "Su
corrente" della tua maschera genera il seguente codice VBA:
[Forms]![NomeMascheraPopup]![NomeControlloImmagine].Picture = Me!MyPath &
Me!ImageName
Così facendo, passando da una riga all'altra della maschera continua, vedrai
nella maschera popup l'immagine relativa al record corrente.
O così o cambi la visualizzazione della maschera a Maschera singola.



ahiahiahi!:-(
come detto la cosa importante sarebbe proprio quella di visualizzarle
contemporaneamente in modo da poterle confrontare.....
Se provassi con una variabile array del tipo ImageName(i) che mi scrive
sulla proprietà Picture il giusto percorso per ogni record, magari con un
ciclo.....???......Boh!:-))
Grazie e ciao
Carlo

 Carlo
Allora fai una maschera con che elenca le immagini (path e nome) e al clic
(o doppio clic) ti si apre un'altra maschera per vedere l'immagine; a questo
punto potresti clonare (con VBA) la maschera "Anteprima immagine" tante
volte per quente volte fai clic (o doppio) sul nome dell'immagine.
Così avresti una maschera per l'elenco delle immagini presenti e tante
maschere con l'anteprima delle immagini per quante volte hai fatto doppio
clic...
Ciao.


alla fine ho adottato una soluzione diversa che mi ha parzialmente risolto
il problema e che vi illustro per sapere che cosa ne pensate:
ho inserito nel Form Header (quindi fuori dall'area dettagli che si
ripresenta per ogni record) 4 cornici immagine.
Ho poi fatto una barra di navigazione che mi prende 4 records alla volta.
Cliccando sul pulsante avanti o indietro della barra, la proprietà Picture
delle 4 cornici immagine viene aggiornata ai 4 records visualizzati.
In questo modo, visto che il mio scopo era appunto quello di "confrontare"
tra loro le immagini piuttosto che visualizzarle, almeno ne posso vedere 4
alla volta.
Rimane un problema estetico dato dal fatto che nell'header le cornici devono
avere una disposizione orizzontale mentre i records si sviluppano ovviamente
in verticale.
Anche qui ho adottato una parziale soluzione facendo variare il colore del
bordo della cornice immagine corrispondente al record corrente per una
maggiore prontezza visiva sul record selezionato.
All'evento click di ogni cornice immagine poi ho fatto in modo che il
corrispondente record vada a fuoco mentre all'evento DoubleClick mi si apre
la famosa maschera PopUp che mi illustravi tu e che uso come ingranditore.
Il lavoro finito direi che è anche piuttosto carino e se qualcuno ne fosse
interessato non ha che da dirlo.
Che cosa ne pensate?
Un Grazie con la G maiuscola a Roberto e Sergio per il preziosissimo aiuto!!
Carlo


Ciao easy,
Io ho fatto un lavoro simile al tuo ma in VB6, non ho limiti di immagine e
ho utilizzato ImgThumbnail - ImgEdid - ImgAdmin.
Il mio programma č smplicemente un'archivio di foto che mediante vari campi
di ricerca ti visualizza in piccolo tutte le foto trovate (ImgThumbnail ),
poi con un click ingrandisci la singola foto (ImgEdid ).
Tutti i record sono in un db di Access, non ho capito bene se č quello che
tu volevi fare ?
Se il tuo programma non č molto grosso sarei interessato a vederlo :-)
--
Ciao Marco S.
http://digilander.iol.it/santimarco


oddio!!!
quando dicevo che lo mettevo a disposizione si intendeva non a
programmatori, o almeno non a programmatori di una certa esperienza!:-)
calcola che io non lo sono assolutamente e semplicemente mi diletto a
realizzare quello che mi serve al momento per il mio lavoro, ma sono anche
convinto che se qualcuno del mestiere da una occhiata a quello che combino,
la variabile booleana ManiSuiCapelli assume immediatamente il valore
True!:-)))))
In ogni caso se proprio ti piace soffrire, magari te lo mando.
Il db compresso č di 900Kb.....magari provo a togliere quello che non
serve....
In ogni caso pensaci bene due volte:-)))
Ciao
Easy!

 In ogni caso pensaci bene due volte:-)))
Non sono un vero programmatore, mandamelo pure, dopo averlo pulito il piů
possibile :-))))



[CUT]

Sicuramente la tua è una buona soluzione, come fra l'altro tutte quelle che
sono risolutive.
Se mi permetti, potrei darti un'idea che ti permetterebbe di tenere i 4
controlli immaggine in verticale invece che in orizzontale, insomma di
fianco e non sopra la maschera a visualizzazione a Maschere continue.
La mia idea è questa.
Creati una maschera con visualizzazione a Maschera singola che non abbia
origine record; fai in maniera che detta maschera sia poco più alta di
quella attuale ma più larga; inserisci nella parte destra di questa maschera
un controllo sottomaschera delle dimensioni della tua attuale maschera, così
che rimanga libera la parte sinistra della maschera; nella proprietà origine
oggetto del controllo sottomaschera scrivi il nome dell'attuale maschera;
dall'intestazione dell'attuale maschera togli i 4 controllo immagine ed
inseriscili in verticale nella zona sinistra della nuova maschera. Le
modifiche da apportare al codice VBA sono minime: quando devi fare
riferimento ai controlli immagine, invece che Me![NomeControlloImmagine]
scriverai [Forms]![NomeNuovaMaschera]![ NomeControlloImmagine].


 scriverai [Forms]![NomeNuovaMaschera]![ NomeControlloImmagine].
Sei un grande!!!!!
Funziona a meraviglia!
Grazie e ciao
Carlo