View Full Version : [VB.NET] Salvare Immagine in db access
Fabio7586
06-11-2009, 17:11
Salve, ho una tabella con due campi, nome e foto, il primo campo e di tipo stringa e il secondo è un oggetto ole,
ho questo codice per caricare una foto in una picbox
Dim pic As Image
OpenFileDialog1.ShowDialog()
pic = New Bitmap(OpenFileDialog1.FileName)
PictureBox1.BackgroundImage = pic
PictureBox1.BackgroundImageLayout = ImageLayout.Stretch
dopodichè come faccio a scriverlo in un database?
grazie
Considera che Access ha il File Limit a 2 GB, perciò un campo BLOB ( in Access penso sia Tipo Dati = "Oggetto OLE" ), già di per sè discutibile come scelta, diventa proibitivo.
Solitamente a DB si inserisce il percorso di un file multimediale, non il file stesso...
Fabio7586
06-11-2009, 17:59
ah, ok non sapevo di questa limitazione! Quindi potrei ricavare il percorso dal picturebox una volta caricata l'immagine? se si come ? (considera che le immagini le metto nella cartella stessa di lavoro, quindi potrei fare riferimento li con application.startuppath, però non so come ricavare la stringa del percorso!)
ah, ok non sapevo di questa limitazione! Quindi potrei ricavare il percorso dal picturebox una volta caricata l'immagine? se si come ? (considera che le immagini le metto nella cartella stessa di lavoro, quindi potrei fare riferimento li con application.startuppath, però non so come ricavare la stringa del percorso!)
Beh, se usi una OpenFileDialog, il percorso completo ce l'hai già :
OpenFileDialog1.ShowDialog()
Dim percorso As String = OpenFileDialog1.FileName
Dim pic As New Bitmap(percorso)
Inoltre, se queste immagini stanno tutte in una directory relativa a quella dell'eseguibile ( raggiungibile da Application.StartupPath... ), direi che inserire il percorso completo delle immagini è superfluo, oltre che dannoso ( e se poi sposti la dir dell'exe ? ). A questo punto nel DB metti solo il nome dei file immagine. Il percorso lo lasci costruire a VB, quando "carichi" l'immagine dal DB, esempio :
percorso = Application.StartupPath & "\" & "nomeCartellaImmagini\" & nomeFileImmagine
;)
Fabio7586
07-11-2009, 09:04
Beh, se usi una OpenFileDialog, il percorso completo ce l'hai già :
OpenFileDialog1.ShowDialog()
Dim percorso As String = OpenFileDialog1.FileName
Dim pic As New Bitmap(percorso)
Inoltre, se queste immagini stanno tutte in una directory relativa a quella dell'eseguibile ( raggiungibile da Application.StartupPath... ), direi che inserire il percorso completo delle immagini è superfluo, oltre che dannoso ( e se poi sposti la dir dell'exe ? ). A questo punto nel DB metti solo il nome dei file immagine. Il percorso lo lasci costruire a VB, quando "carichi" l'immagine dal DB, esempio :
percorso = Application.StartupPath & "\" & "nomeCartellaImmagini\" & nomeFileImmagine
;)
quando fai questo
percorso = Application.StartupPath & "\" & "nomeCartellaImmagini\" & nomeFileImmagine
il nomefileimmagine come faccio ad ottenerlo? con openfiledialog1.filename, ottengo la path completa del percorso, ma se voglio solo il nome del file?
OpenFileDialog1.ShowDialog()
Dim percorso As String = OpenFileDialog1.FileName
Dim nomeFile As String = percorso.Substring(percorso.LastIndexOf("\") + 1)
;)
Fabio7586
07-11-2009, 10:40
OpenFileDialog1.ShowDialog()
Dim percorso As String = OpenFileDialog1.FileName
Dim nomeFile As String = percorso.Substring(percorso.LastIndexOf("\") + 1)
;)
Grazie, avevo pensato ad una cosa molto macchinosa e lunga che poteva funzionare, ma se così si risolvono tutti i problemi tanto meglio! Sempre grazie mille per la tua immensa disponibilità! ;)
Fabio7586
07-11-2009, 11:56
ciao ho un'altro problema,
Utilizzo questa per intercettare la pressione dei pulsanti:
Private Declare Function GetAsyncKeyState Lib "user32" Alias "GetAsyncKeyState" (ByVal vKey As Keys)
poi scrivo:
Private Sub TextBox1_KeyUp(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles TextBox1.KeyUp
If GetAsyncKeyState(Keys.F9) Then
form1.Show()
Me.Hide()
End If
End Sub
L'ho usata già altre volte, ma non mi ha mai restituito l'errore "Limitazione di PInvoke: non può restituire varianti."
Da cosa dipende?
Stai facendo qualcosa di "anomalo"... :mbe:
Se intercetti TextBox1_KeyUp, che te ne fai della GetAsyncKeyState ? :confused:
Fabio7586
07-11-2009, 21:21
Stai facendo qualcosa di "anomalo"... :mbe:
Se intercetti TextBox1_KeyUp, che te ne fai della GetAsyncKeyState ? :confused:
perchè così posso intercettare la pressione di un qualsiasi pulsante che con keyup non so fare! Se è più facile, mi spiegheresti come fare? Grazie mille!
Fabio7586
09-11-2009, 11:44
come si gestisce l'evento keyup?se non ti é di disturbo, mi faresti un esempio di come intercettare la pressione del tast f9 all`interno della textbox?
Private Sub TextBox1_KeyUp(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles TextBox1.KeyUp
If e.KeyCode = Keys.F9 Then
MsgBox("Hai premuto F9")
End If
End Sub
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.