Newsgroup: it.comp.lang.visual-basic
Titolo: Visual Basic e Access 2007

Ciao a tutti, e scusate il disturbo....
Dovrei creare un'appllicazione con visual basic che funga da catalogo di 
vini venduti/comprati ecc...
Per quanto riguarda creare un database che venga letto da visual basic 
l'avevo già fatto in passatto e mi basta quindi rimettermi li a vedere come 
fare e rifarlo.
Ma il vero problema che non riesco a risolvere (e credo che voi abbiate già 
letto mille volte questo tipo di problema), è l'implementazione di 
un'immagine del prodotto.
Ad esempio a questo vino deve corrispondere quest'immagine che venga 
visualizzata al click del vino desiderato.
Come è possibile creare un database di immagini con access 2007?
Basta indicare in percorso dell'immagine e poi indicizzare tale percorso?
Grazie per le risposte e se non sono stato chiaro posso rispiegare!
P.s: Mi basta qualche link a qualche guida o cosa simile. 

 Come è possibile creare un database di immagini con access 2007?
E' una cosa che andrebbe chiesta al NG di Access.
In ogni caso puoi scegliere tra l'usare un percorso o utilizzare un 
campo BLOB.
Non saprei dirti se Access 2007 è più affidabile delle vecchie versioni, 
ma un campo BLOB sotto Access non me la sento di consigliarlo.
A questo punto ti rimane l'immagine caricata da un percorso... ti giochi 
l'integrità referenziale, ma lavori più sicuro.
Se il DB sarà molto grosso puoi prendere in considerazione SQLServer 
Express.
bye

 Basta indicare in percorso dell'immagine e poi indicizzare tale percorso?
Su firebird ho una gestione simile con campi blob. Uso documenti di word,
immagini e posso allegare qualsiasi tipo di file.
Ti consiglierei però di tenere tutto fuori dal DB, indipendentemente dal DB
utilizzato.
In caso di danni al DB o altro hai molta più possibilità di recuperare le
immagini se sono esterne, inoltre il DB rischia di diventare molto grande.
Proprio qualche giorno fa si è tritato il DB ad un cliente, e ha perso
qualche decina di documenti word perchè erano dentro al DB. Se erano fuori
bastava "riagganciarli" al record interessato.
Tra l'altro il report che uso (reportman), permette anche di visualizzare
le immagini dai blob, ma anche di caricarle da un path, quindi anche per
stampare non ci sono problemi con file esterni
Tieni conto che poi magari ti chiederanno oltre di allegare un'immagine ad
un articolo, anche di allegare documenti ad un cliente ecc.
E dovrai fare una maschera che estragga il blob, apra il file, e lo risalvi
alla fine (se vogliono cambiare un documento di word).

 Express.
Ok, grazie mille per le risposte (sia a te che ad Andrea [Work]), e da 
quanto detto mi sembra di capire che dovrei archiviare nel DB solo il path 
dell'immagine, per poi con Visual Basic poter caricare l'immagine.
Ora chiedo al NG di access se hanno qualche altra idea, se nel caso ve la 
riposto qui.
Ma se quella di archiviare solo il path dell'immagine nel DB è l'unica 
soluzione, come sarà possibile che Visual Basic carichi l'immagine? 

 soluzione, come sarà possibile che Visual Basic carichi l'immagine?
Nella Picture Box o Image Box con il metodo Load Picture
Ad esempio (qui carico un'icona):
Me.Icon = LoadPicture(path)
Il path lo carichi dal campo specifico che farai in anagrafica articolo.

 consigliarlo. 
Sì il formato accdb di Access 2007 prevede un nuovo formato per i file allegati
E' addiritttura multivalore.
Fino a questa versione i file immagine anche compressi in jpeg venivano/vengono inglobati in fomato bmp ed il risultato è un cortisonamento del db che con buoni carichi lavoro esplode e cmq peggiora le performances
-- 
-- 
MAssimiliano Amendola
www.accessgroup.it
Cisa - Conferenza Italiana Sviluppatori Access
Segrate (MI), 7-8 giugno 2007

"Andrea [Work]" <nos...@invalid.invalid> ha scritto nel messaggio 
news:1e0778qe8hg5q.7...@40tude.net...

Grazie di rispondere alle mie domande, ma probabilmente non riesco io a 
capire bene.
Dunque io faccio così (che sicuramente è sbagliato):
1-Creo un DB con una tabella dove in un campo metto "ImagePath" e sotto il 
percorso delle mie immagini.
2-Indicizzo il campo.
3-In visual Basic creo un'oggetto Data e inserisco in "DatabaseName" il 
percorso del mio database.
4-In "RecordSource" invece inserisco "Tabella1" (anche perchè ho fatto solo 
una tabella!)
5-(Il punto più critico) creo un'oggetto Image (Imgae1), e come faccio a 
passarli il percorso delle imaggini che viene letto dal DB caricato 
nell'oggetto Data?
Questo non mi è chiaro....
Chiedo scusa ancora se la mia domanda è banale e forse stupida. 

 Chiedo scusa ancora se la mia domanda è banale e forse stupida.
Non ho ben capito come funziona ora la tua maschera, e che oggetti usi.
O devi fare tutto da zero?

 Chiedo scusa ancora se la mia domanda è banale e forse stupida.
Non ho ben capito come funziona ora la tua maschera, e che oggetti usi.


 O devi fare tutto da zero?
Devo fare tutto da zero, è per questo che usavo nomi semplici e predefiniti 
come Picture1, e siccome non ho mai incorporato immagini non sono capace di 
farlo, e ho chiesto qui! 

 farlo, e ho chiesto qui!
Allora nella tua maschera avrai l'elenco di Articoli (o Catalogo).
Come pensi di realizzarlo graficamente?
Una griglia con tutti i dati dell'articolo?
Quando l'utente seleziona una riga vengono caricati i dettagli in delle
textbox per la modifica?
Se è una cosa del genere, quando carichi i dati (o al click della griglia
se non carichi i dati), metti un comando del genere per caricare la
Picture.
Il problema basilare però è che mi sembra ti debba riguardare un minimo
l'accesso agli archivi (magari con ADO). Quindi Recordset e roba simile.
Poi dovresti avere ben chiaro come deve essere fatta la maschera di
consultazione (e modifica se lo prevederà).
Il caricare una picture è banale di per se.
Crea un progetto vuoto e salvalo.
Nella cartella metti un'immagine e rinominala come 1.jpg
Nella form inserisci una Picture Box e una Image
Copia questo codice:
Private Sub Form_Load()
    Dim sImagePath As String
 
    sImagePath = App.Path & "\1.jpg"
    Picture1.Picture = LoadPicture(sImagePath)
    Image1.Stretch = True
    Image1.Picture = LoadPicture(sImagePath)
End Sub
Il concetto col DB sarà lo stesso, cambierà l'evento in cui carichi
l'immagine (caricamente dati, o click della griglia ad esempio), e questa
riga diventerà qualcosa del genere:
sImagePath = App.Path & "\1.jpg"
in
sImagePath = Rs.Field("ImagePath").Value
Dove ImagePath è il campo della tabella dove hai salvato il percorso.

 Dove ImagePath è il campo della tabella dove hai salvato il percorso.
Questo non va....Sicuramente sbaglio io! Ti lascio la mia e-mail così se 
vorrai contattarmi potrò mandarti il form che mi hai fatto creare con un 
databse di prova e delle immagini e indicare l'errore....
Se non ne hai voglia ti capisco benissimo, se già stato così gentile a darmi 
tutta questa pazienza nel rispondermi!
e-mail:   
NoSpammmdavid...@libero.it
Levare il NoSpammm 

 tutta questa pazienza nel rispondermi!
Controlla la posta.
Ciao
PS: per eventuali risposte usa il NG rispondendo qui, non la mia casella di
posta

"Andrea [Work]" <nos...@invalid.invalid> ha scritto nel messaggio 
news:4fo3cknz1f4g.ozzoqan65uar$.dlg@40tude.net...

Ops, scusa te l'ho spedita su quella la....
Comunque funziona perfettamente!
Ora mi studio un pò il codice per capire meglio ciò che fa!
Grazie mille ancora! 

 Ora mi studio un pò il codice per capire meglio ciò che fa!
Ok, tieni presente che quando carica l'immagine usa una cosa del genere
	myPath = App.Path & PATH_IMG & AdoRS.Fields("PATHIMAGE").Value & myPath
che ho sbagliato a scrivere e dovrebbe essere
	myPath = App.Path & PATH_IMG & AdoRS.Fields("PATHIMAGE").Value
Ma ancora meglio se invece di Adors usi il contenuto della colonna della
griglia
myPath = App.Path & PATH_IMG & grd1.Columns("PATHIMAGE").Text
E poi prova a spostare al Click