none
Visualizzare Immagine RRS feed

  • Domanda

  • Buongiorno, 

    Vorrei sapere come posso fare a far comparire un'immagine all'interno di una picturebox associata ad un nome all'interno di un database in access. Il data base è composto da tre colonne(ID, Nome "tipo testo", Immagine (oggetto OLE). All'interno del form io mi trovo una combobox con tutta la lista dei nomi presenti nella colonna "Nome", quando ne seleziono uno vorrei far comparire l'immagine associata.

    Grazie mille anticipatamente.

    N.B. Il linguaggio che uso è il Basic

    lunedì 11 novembre 2019 11:16

Tutte le risposte

  • Ciao,

    immagino che tu voglia recuperare l'immagine partendo dai dati memorizzati nel db.

    Se è così, puoi dare uno sguardo, ad esempio, qui, dove viene spiegato come convertire una immagine in un array di byte, e al contrario come recuperar l'immagine a partire dall'array.

    Se c'è qualcosa non chiaro, chiedi pure

    lunedì 11 novembre 2019 12:53
  • Ciao,

    immagino che tu voglia recuperare l'immagine partendo dai dati memorizzati nel db.

    Se è così, puoi dare uno sguardo, ad esempio, qui, dove viene spiegato come convertire una immagine in un array di byte, e al contrario come recuperar l'immagine a partire dall'array.

    Se c'è qualcosa non chiaro, chiedi pure

    Esatto io vorrei caricare una determinata foto (presente all'interno del database) indicata dalla combobox in una picture box. Se non ho capito male dovrei utilizzare l'ultimo codice presente nel link che mi hai postato?
    lunedì 11 novembre 2019 16:44
  • ma tu come ti connetti al database ? come hai popolato la combobox ?

    secondo me sarebbe molto più semplice inserire nel db il percorso dell'immagine invece dell'oggetto OLE, non è detto che questo venga memorizzato come array leggibile da MemoryStream


    • Modificato patel45 martedì 12 novembre 2019 08:30
    lunedì 11 novembre 2019 17:37
  • ma tu come ti connetti al database ? come hai popolato la combobox ?

    secondo me sarebbe molto più semplice inserire nel db il percorso dell'immagine invece dell'oggetto OLE, non è detto che questo venga memorizzato come arrai leggibile da MemoryStream

    mi collego al database tramite il campo origine dati e poi andando sulla combobox vado ad indicargli a quale tabella deve fare riferimento.
    martedì 12 novembre 2019 08:21
  • Ciao,

    nello specifico dovresti usare la funzione che converte da un array di byte a immagine, cioè

    Using mStream As New MemoryStream(byteArrayIn)
        Return Image.FromStream(mStream)
    End Using

    Chiaramente non mi sto "preoccupando" di come recuperi i dati, sto dando per scontato che sei in grado di leggere dal db.

    martedì 12 novembre 2019 08:54
  • ma tu come ti connetti al database ? come hai popolato la combobox ?

    secondo me sarebbe molto più semplice inserire nel db il percorso dell'immagine invece dell'oggetto OLE, non è detto che questo venga memorizzato come array leggibile da MemoryStream


    Scusa se mi permetto, Patel, ma per sapere se memorizzare il percorso, anziché tutta l'immagine, bisognerebbe sapere molte cose.

    Questo software "girerà" su un singolo pc o su più pc in rete? Nel caso, il percorso dove sono memorizzate le immagini è raggiungibile da tutti i pc? C'è la necessità di fare un backup ogni tanto? Va fatto il backup anche delle immagini? E soprattutto, visto che l'op sta cercando di leggere dei dati (e non scrivere), questi dati chi li scrive? Se lo fa un software dell'op o comunque ci si può mettere d'accordo con chi è la sorgente, forse si può anche stabilire di memorizzare un percorso, altrimenti si è vincolati a ciò che gli altri scrivono.

    Io riassumerei possibili vantaggi e svantaggi nell'usare le immagini memorizzate nel db rispetto al memorizzare solo i percorsi in:

    Immagine sul db:

    pro. Tutti i dati si trovano in un posto solo, migliore portabilità, migliore gestione dei backup, più facile condivisione tra pc in rete

    contro. Maggiore dimensione del db

    martedì 12 novembre 2019 09:02
  • ma tu come ti connetti al database ? come hai popolato la combobox ?

    secondo me sarebbe molto più semplice inserire nel db il percorso dell'immagine invece dell'oggetto OLE, non è detto che questo venga memorizzato come array leggibile da MemoryStream


    Scusa se mi permetto, Patel, ma per sapere se memorizzare il percorso, anziché tutta l'immagine, bisognerebbe sapere molte cose.

    Questo software "girerà" su un singolo pc o su più pc in rete? Nel caso, il percorso dove sono memorizzate le immagini è raggiungibile da tutti i pc? C'è la necessità di fare un backup ogni tanto? Va fatto il backup anche delle immagini? E soprattutto, visto che l'op sta cercando di leggere dei dati (e non scrivere), questi dati chi li scrive? Se lo fa un software dell'op o comunque ci si può mettere d'accordo con chi è la sorgente, forse si può anche stabilire di memorizzare un percorso, altrimenti si è vincolati a ciò che gli altri scrivono.

    Io riassumerei possibili vantaggi e svantaggi nell'usare le immagini memorizzate nel db rispetto al memorizzare solo i percorsi in:

    Immagine sul db:

    pro. Tutti i dati si trovano in un posto solo, migliore portabilità, migliore gestione dei backup, più facile condivisione tra pc in rete

    contro. Maggiore dimensione del db

    Allora, vi spiego quello che ho intenzione di fare:

    sto creando un software per la generazione di esami a risposta multipla. le domande sono formate da tre risposte (A,B,C) e da un'immagine se è presente nella banca dati. Questa banca dati viene scritta e/o modificata con un'altra interfaccia creata sempre con VB, da un superadmin che naturalmente ha il potere di gestire tutto. oltre a questa banca dati vi è pure quella che mi gestisce gli utenti che hanno soltanto il potere di creare e stampare i compiti. vi allego le immagini

    martedì 12 novembre 2019 10:50
  • Ciao,

    Tutto chiaro. restano per me valide le considerazioni fatte su come-dove memorizzare le immagini.

    Piccola domanda.. Quanti utenti collegati contemporaneamente? Sicuro che un db Access sia sufficiente? 

    martedì 12 novembre 2019 11:02
  • Ciao,

    Tutto chiaro. restano per me valide le considerazioni fatte su come-dove memorizzare le immagini.

    Piccola domanda.. Quanti utenti collegati contemporaneamente? Sicuro che un db Access sia sufficiente? 

    dimenticavo una cosa, successivamente avrei intenzione di andare a piazzare il database su un singolo pc che funge da server, al max ci sarà un solo utente collegato alla volta. per quanto riguarda la memorizzazione delle immagini all'interno del form "database domande" con il "button 7" vado ad abilitare un "open file dialog" e vado a selezionare l'immagine di andare a caricare in quella domanda.
    martedì 12 novembre 2019 11:15
  • Scusa se mi permetto, Patel.....

    Ho creato un db di prova direttamente da Access con una tabella con 2 campi, nome (testo), Foto(ole object) come detto da Arkam93, non sono riuscito a trasformare l'array in immagine.

    Inserendo invece il percorso nessun problema.

    Però se nel db l'immagine viene inserita come array dal programma penso che non ci saranno problemi


    • Modificato patel45 martedì 12 novembre 2019 11:23
    martedì 12 novembre 2019 11:22
  • Scusa se mi permetto, Patel.....

    Ho creato un db di prova direttamente da Access con una tabella con 2 campi, nome (testo), Foto(ole object) come detto da Arkam93, non sono riuscito a trasformare l'array in immagine.

    Inserendo invece il percorso nessun problema.

    Però se nel db l'immagine viene inserita come array dal programma penso che non ci saranno problemi



    Quindi??? Cosa devo usare??? Non ci sto a capì più niente!!!XD XD.. consigliate mi X favore la più stabile delle soluzioni....grazie mille
    martedì 12 novembre 2019 15:16
  • devi soltanto provare,prima la soluzione che più ti sembra adatta al tuo scopo e poi eventualmente l'altra. Cercando sul web un db access non sembra il più adatto.
    martedì 12 novembre 2019 15:24
  • Arkam, dipende da te e da cosa ti sembra più importante.

    Un piccolo riassunto dei pro e dei contro nell'usare il db per memorizzare interamente l'immagine te l'ho fatta (naturalmente quello che è secondo me).

    Io preferirei andare a scrivere direttamente nel db l'immagine per intero e poi recuperarla, Patel preferisce memorizzare solo i percorsi e recuperare da li le immagini.

    Tu?

    martedì 12 novembre 2019 15:24
  • Arkam, dipende da te e da cosa ti sembra più importante.

    Un piccolo riassunto dei pro e dei contro nell'usare il db per memorizzare interamente l'immagine te l'ho fatta (naturalmente quello che è secondo me).

    Io preferirei andare a scrivere direttamente nel db l'immagine per intero e poi recuperarla, Patel preferisce memorizzare solo i percorsi e recuperare da li le immagini.

    Tu?

    io penso che la soluzione migliore sia quella di caricare le immagini all'interno del DB in quanto su circa 3000 domande che comporranno il DB le immagini saranno circa un 30 di piccole dimensioni. quindi da quello che scrivi tu mi consigli di fare come penso io andando ad utilizzare la conversione come mi hai scritto nella prima risposta che mi hai dato, giusto?
    martedì 12 novembre 2019 16:14
  • Beh, si, è quello che farei io.

    martedì 12 novembre 2019 16:24
  • Beh, si, è quello che farei io.

    però non riesco a capire una cosa.....Come faccio a far leggere il campo della combobox per convertire l'immagine???
    martedì 12 novembre 2019 18:56
  • Infatti ti avevo chiesto come popoli la combo, ma fino ad ora non hai mostrato alcun codice su cui poter discutere. Inoltre come pensi di inserire le immagini nel db.
    • Modificato patel45 martedì 12 novembre 2019 19:30
    martedì 12 novembre 2019 19:27
  • Infatti ti avevo chiesto come popoli la combo, ma fino ad ora non hai mostrato alcun codice su cui poter discutere. Inoltre come pensi di inserire le immagini nel db.

    non ho mostrato nessun codice xkè ancora mi devo partire e prima di lanciarmi vorrei avere un pochino le idee chiare. Per quanto riguarda il caricamento delle immagini l'ho spiegato nella risposta sotto le foto, la riscrivo "per quanto riguarda la memorizzazione delle immagini all'interno del form "database domande" con il "button 7" vado ad abilitare un "open file dialog" e vado a selezionare l'immagine di andare a caricare in quella domanda." x quanto riguarda il tuo metodo spiegami meglio come applicarlo per favore.

    Grazie mille

    martedì 12 novembre 2019 20:44
  • Ciao,

    qui il discorso si allarga parecchio.

    Siamo partiti con il recuperare una immagine da un db, a come selezionare l'immagine da recuperare e a questo punto direi anche come salvare l'immagine (dire che apri una OpenFiledialog, vuol dire poco, visto che in quel modo puoi solo andare a scegliere il percorso/nome del file).

    Partiamo dalla ComboBox.

    Dato che la tabella da cui recuperi i dati ha tre colonne (ID, Nome e Immagine), io penserei due strade molto simili tra loro.

    Crei una classe con i tre campi che rispecchiano le colonne, quando lanci la form (o quando ritieni più opportuno) carichi i dati creando tante istanze quante sono le righe del db, passi questa "lista" come DataSource della combo, indicando, sempre alla combo, quale deve essere il campo mostrato (DisplayMember).

    All'evento SelectedIndexChanged della combo, reagisci andando a recuperare, dall'item selezionato, l'immagine che poi mostrerai nella tua picturebox.

    Il secondo approccio, molto simile, è quello di creare comunque una classe con due campi, ID e Nome, recuperare tutto come già scritto prima, senza chiaramente le immagini.

    All'evento SelectedIndexChanged, anziché recuperare (dall'item selezionato) l'immagine, visto che non c'è, recuperi l'ID, fai partire una query sul database per recuperare l'immagine e poi la mostri nella PictureBox.

    La differenza tra i due approcci è che nel primo caso vai a recuperare subito tutti i dati, andando anche a "decodificare" l'immagine, quindi un po' più di tempo in partenza, una maggiore quantità di memoria usata. Se le immagini sono poche e piccole, non dovresti avere troppi problemi di memoria.

    Nel secondo caso, la partenza è più veloce e la memoria usata è minore, visto che non stai memorizzando anche tutte le immagini, ma quando scegli dalla combo una nuova immagine, devi recuperare i dati dal db e decodificarli, quindi per ogni operazione è un po' più lento.

    Devi verificare tu in base al tuo utilizzo, quanto i due approcci incidono sulle prestazioni totali e sull'usabilità del software.

    mercoledì 13 novembre 2019 08:34
  • .....x quanto riguarda il tuo metodo spiegami meglio come applicarlo per favore.

    il mio metodo lo devi considerare come riserva, prima devi provare se riesci a salvare l'immagine nel db e se riesci a recuperarla, se funziona puoi procedere come spiegato da vbmizio
    mercoledì 13 novembre 2019 11:24
  • due link utili, testati funzionano.

    https://www.sourcecodester.com/tutorials/visual-basic-net/13434/how-save-image-access-database-using-vbnet.html

    https://stackoverflow.com/questions/20890646/retrieve-picture-from-access-database


    • Modificato patel45 giovedì 14 novembre 2019 10:47
    giovedì 14 novembre 2019 07:53
  • due link utili, testati funzionano.

    https://www.sourcecodester.com/tutorials/visual-basic-net/13434/how-save-image-access-database-using-vbnet.html

    https://stackoverflow.com/questions/20890646/retrieve-picture-from-access-database


    Buongiorno, ho provato ad apportare le modifiche al mio file però mi compare un'errore "riferimento a un oggetto non impostato su un'istanza di oggetto" ma non riesco a capire a cosa fà riferimneto...vi allego il file "https://www.dropbox.com/s/ye312gh4qka96jp/Prova.zip?dl=0"
    sabato 16 novembre 2019 08:47
  • ho dato un'occhiata al tuo progetto, ma mi sembra che tu ti sia limitato a copiare il codice dei siti che ti ho indicato senza adattarlo al tuo database
    sabato 16 novembre 2019 09:20
  • non ti seguo.......io ho notato che il db che crea il file presente online ha solo 2 colonne "id e immagine", io ne ho 6 però quello che mi interessava principalmente è il discorso dell'immagine........come andare a salvare gli altri campi già so come fare, per questo vi ho pubblicato il tutto!!!
    sabato 16 novembre 2019 09:50
  • io non seguo te, hai pubblicato tutto per quale motivo ?

    l'errore "riferimento a un oggetto non impostato su un'istanza di oggetto" dove e quando ti compare ?

    inoltre avevi parlato di combo e nel progetto vedo una dgv per la quale vedo poco probabile un popolamento con datasource



    • Modificato patel45 sabato 16 novembre 2019 10:17
    sabato 16 novembre 2019 09:57
  • io non seguo te, hai pubblicato tutto per quale motivo ?

    l'errore "riferimento a un oggetto non impostato su un'istanza di oggetto" dove e quando ti compare ?

    inoltre avevi parlato di combo e nel progetto vedo una dgv per la quale vedo poco probabile un popolamento con datasource



    l'errore mi compare quando clicco sul tasto "salva", fino a quando clicco su "carica foto" e selezione la foto tutto ok, infatti compare anche, l'errore è dopo. per quanto riguarda la combobox era nell'altra form, quella che gestisce gli utenti, infatti per l'altra form devo fare riferimento al secondo link che mi hai mandato, se non ho capito male.

    - ho fatto delle modifiche e adesso funziona tutto solo che non riesco a capire due cose:

    1) come mai vuole copiato il DB originale qua 

    e quando eseguo l'applicazione dopo il salvataggio della foto me lo salva qua?

    scusate le domande ma non sn tanto afferrato in materia visto che tutto quello che so è grazie a dei tutorial e a tutte le prove che faccio.....XD

    • Modificato arkam93 sabato 16 novembre 2019 12:10
    sabato 16 novembre 2019 10:40
  • - ho fatto delle modifiche e adesso funziona tutto solo che non riesco a capire due cose:....
    Come si fa a risponderti senza conoscere le modifiche ? se puoi posta il link al progetto modificato
    sabato 16 novembre 2019 12:33
  • Ecco a te

    https://www.dropbox.com/s/o8hznylk7d57yyw/Prova.rar?dl=0

    sabato 16 novembre 2019 13:45
  • tu usi 2 database, uno nella cartella domande, l'altro nella cartella Domande\Domande\bin\Debug

    Per capirci qualcosa io metterei il db in una cartella specifica fuori del progetto e quindi non userei Application.StartupPath

    • Modificato patel45 sabato 16 novembre 2019 14:40
    sabato 16 novembre 2019 14:34
  • infatti io vorrei usare il DB presente nella sua apposita cartella che si trova fuori dalla cartella del progetto. il db che successivamente si trova in questo percorso "Domande\Domande\bin\Debug" se lo crea in automatico. quando scompatti il file in .zip già ti accorgi della presenza delle due cartelle. allora in base a quello che mi hai scritto Application.StartupPath è sbagliato....
    sabato 16 novembre 2019 15:36
  • il db che successivamente si trova in questo percorso "Domande\Domande\bin\Debug" se lo crea in automatico....
    questo non lo capisco e non capisco neppure la presenza della dgv, non è che hai collegato direttamente la dgv al db ? se è così non mi sembra una buona idea

    • Modificato patel45 sabato 16 novembre 2019 18:03
    sabato 16 novembre 2019 17:45
  • potresti spiegarmi la sigla dgv? io non penso di aver collegato nnt....comunque di seguito c'è il nuovo link con le modifiche "https://www.dropbox.com/s/ujwaifms8hwpx5v/Archivio.zip?dl=0"

    P.S. vi comunico che c'è qualcosa che non va!!!!!!XD XD XD

    domenica 17 novembre 2019 13:56
  • DGV = DataGridView

    ti avevo "mi sembra che tu ti sia limitato a copiare il codice dei siti che ti ho indicato senza adattarlo al tuo database" ed ancora non l'hai ancora fatto, tu scrivi:

    .Parameters.AddWithValue("@img", arrImage)

    ma nel db non hai un campo di nome img, inoltre nel db inserisci solo l'immagine e gli altri campi li lasci vuoti ?


    • Modificato patel45 domenica 17 novembre 2019 16:54
    domenica 17 novembre 2019 16:43
  • Per quanto riguarda la dgv, quando l’ho generata ho cliccato sul quadratino che compare in alto a destra, quindi penso che così si collegata direttamente?? Per quanto riguarda il salvataggio degli altri campi questo “ Parameters.AddWithValue("@img", arrImage)” devo modificarlo inserendo dentro parentesi al posto di @img in @immagine??? Ma lasciando tt così la foto la salva. Per gli altri campi devo aggiungere per es. @domanda, Text...ecc ecc???
    domenica 17 novembre 2019 18:09
  • ........come andare a salvare gli altri campi già so come fare....

    mi viene qualche dubbio ...

    Ma lasciando tt così la foto la salva
    come te ne sei accorto ?

    • Modificato patel45 domenica 17 novembre 2019 19:47
    domenica 17 novembre 2019 19:43
  • Me ne sn accorto perché le dimensioni del db cambiano, se si apre il db compare nella colonna immagine la dicitura lungo binario e perché se chiudo l’app dp aver salvato la foto è la riapro la dgv si aggiorna e compare
    domenica 17 novembre 2019 20:41
  • compare cosa ? una x ? come ti ho già detto eri partito meglio con la combo, mi sembra molto arduo visualizzare l'immagine nella dgv visto che salvi un bytearray nel db e non un'immagine
    lunedì 18 novembre 2019 06:06
  • forse sbaglio io però vedi che funziona quello che ti dico.......ti allego le foto

    solamente che ieri ho provato a fare delle prove per salvare gli altri campi e in base a quello che ho scritto li salvava, ma creava un'altra riga....... come posso far salvare tutto nella stessa riga?


    • Modificato arkam93 lunedì 18 novembre 2019 15:30
    lunedì 18 novembre 2019 08:45
  • Signori buonasera, finalmente ci sono riuscito.

    Vi posto il link perchè avrei ancora bisogno di un vostro aiutino (pure se non mi sopportate più):"https://www.dropbox.com/s/1f5cp0np9uppxcm/Prova.rar?dl=0".

    Avrei delle domande:

    - come mai una volta salvata la prima riga se non riavvio l'app mi compare il messaggio (impossibile accedere al flusso chiuso?)

    - una volta salvata la prima riga sono riuscito ad azzerare tutti i campi ma come faccio ad azzerare la picturebox?

    - quando uso i tasti avanti e indietro vedo l'indicatore che cammina nella tabella, se volessi modificare la riga dove mi posiziono che comando devo dare? ho cercato con edit, ma nnt.

    potreste aiutarmi?

    grazie mille

    martedì 19 novembre 2019 16:47
  • sei riuscito a visualizzare i dati nella griglia, ma non a salvarli nel database o sbaglio ?

    puoi cancellare la picturebox con

    PictureBox1.Image = Nothing



    • Modificato patel45 martedì 19 novembre 2019 18:21
    martedì 19 novembre 2019 18:13
  • se lancio l'app dalla .exe presente nella cartella debug\bin riesco a scrivere i dati e salvarli solo una sola volta, per inserire un'altra riga devo chiudere e riaprire l'app e il DB rimane intatto. invece se avvio il debug da visual studio ogni volta mi cancella tt il DB. 

    di seguito vi posto direttamente il listato: 

    ---------------------------------------------------------------------------------------------------------------------------

    Imports System.Data.OleDb
    Public Class Form1

        Dim connessione As OleDbConnection = New OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & Application.StartupPath & "\ProvaDomande.accdb")
        Dim comando As OleDbCommand
        Dim sql As String
        Dim caption As String
        Dim arrImage() As Byte
        Dim mstream As New System.IO.MemoryStream()
        Dim messaggio As Integer
        Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
            'TODO: questa riga di codice carica i dati nella tabella 'ProvaDomandeDataSet.Domande'. È possibile spostarla o rimuoverla se necessario.
            Me.DomandeTableAdapter.Fill(Me.ProvaDomandeDataSet.Domande)

        End Sub
        Private Sub saveimage(sql As String)
            Try
                'SPECIFIES THE FILE FORMAT OF THE IMAGE
                PictureBox1.Image.Save(mstream, System.Drawing.Imaging.ImageFormat.Jpeg)
                'RETURNS THE ARRAY OF UNSIGNED BYTES FROM WHICH THIS STREAM WAS CREATED
                arrImage = mstream.GetBuffer()
                'GET THE SIZE OF THE STREAM IN BYTES
                Dim FileSize As UInt32
                FileSize = mstream.Length
                'CLOSES THE CURRENT STREAM AND RELEASE ANY RESOURCES ASSOCIATED WITH THE CURRENT STREAM
                mstream.Close()
                connessione.Open()
                comando = New OleDbCommand
                With comando
                    .Connection = connessione
                    .CommandText = sql
                    .Parameters.AddWithValue("@Domanda", TextBox1.Text)
                    .Parameters.AddWithValue("@Risposta_A", TextBox2.Text)
                    .Parameters.AddWithValue("@Risposta_B", TextBox3.Text)
                    .Parameters.AddWithValue("@Risposta_C", TextBox4.Text)
                    .Parameters.AddWithValue("@Risposta_Corretta", TextBox5.Text)
                    .Parameters.AddWithValue("@img", arrImage)
                    .ExecuteNonQuery()
                End With
            Catch ex As Exception
                MsgBox(ex.Message)
            Finally
                connessione.Close()
            End Try
        End Sub

        Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
            DomandeBindingSource.MovePrevious()
            PictureBox1.Refresh()


        End Sub
        Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click
            DomandeBindingSource.MoveNext()
            PictureBox1.Refresh()

        End Sub
        Private Sub Button3_Click(sender As Object, e As EventArgs) Handles Button3.Click
            sql = "Insert into Domande (Domanda, Risposta_A, Risposta_B, Risposta_C, Risposta_Corretta, Immagine) Values (@Domanda, @Risposta_A, @Risposta_B, @Risposta_C, @Risposta_Corretta, @img)"
            saveimage(sql)
            MsgBox("Immagina Salvata Correttamente Nel Database")
            Me.DomandeTableAdapter.Fill(Me.ProvaDomandeDataSet.Domande)
            TextBox1.Clear()
            TextBox2.Clear()
            TextBox3.Clear()
            TextBox4.Clear()
            TextBox5.Clear()

            TextBox1.Focus()

        End Sub
        Private Sub Button5_Click(sender As Object, e As EventArgs) Handles Button5.Click
            messaggio = MsgBox("Desideri Eliminare La Domanda?", vbYesNo + vbCritical, "Conferma Eliminazione")
            If messaggio = vbTrue Then
                'DomandeBindingSource.()
                messaggio = MsgBox("Domanda Eliminata Correttamente", vbInformation, "Messaggio")
                Me.DomandeTableAdapter.Fill(Me.ProvaDomandeDataSet.Domande)
            Else
                messaggio = MsgBox("Domanda Non Eliminata!", vbInformation, "Messaggio")
            End If

        End Sub
        Private Sub Button6_Click(sender As Object, e As EventArgs) Handles Button6.Click
            Try
                With OpenFileDialog1

                    'CHECK THE SELECTED FILE IF IT EXIST OTHERWISE THE DIALOG BOX WILL DISPLAY A WARNING.
                    .CheckFileExists = True

                    'CHECK THE SELECTED PATH IF IT EXIST OTHERWISE THE DIALOG BOX WILL DISPLAY A WARNING.
                    .CheckPathExists = True

                    'GET AND SET THE DEFAULT EXTENSION
                    .DefaultExt = "jpg"

                    'RETURN THE FILE LINKED TO THE LNK FILE
                    .DereferenceLinks = True

                    'SET THE FILE NAME TO EMPTY 
                    .FileName = ""

                    'FILTERING THE FILES
                    .Filter = "(*.jpg)|*.jpg|(*.png)|*.png|(*.jpg)|*.jpg|All files|*.*"
                    'SET THIS FOR ONE FILE SELECTION ONLY.
                    .Multiselect = False

                    'SET THIS TO PUT THE CURRENT FOLDER BACK TO WHERE IT HAS STARTED.
                    .RestoreDirectory = True

                    'SET THE TITLE OF THE DIALOG BOX.
                    .Title = "Select a file to open"

                    'ACCEPT ONLY THE VALID WIN32 FILE NAMES.
                    .ValidateNames = True

                    If .ShowDialog = DialogResult.OK Then
                        Try
                            PictureBox1.Image = Image.FromFile(OpenFileDialog1.FileName)
                        Catch fileException As Exception
                            Throw fileException
                        End Try
                    End If

                End With
            Catch ex As Exception
                MsgBox(ex.Message, MsgBoxStyle.Exclamation, Me.Text)
            End Try
        End Sub
    End Class

    martedì 19 novembre 2019 18:47
  • Usando una dgv collegata automaticamente al db al momento della creazione della dgv stessa non hai il controllo del codice (generato automaticamente) ed io non so aiutarti in questo caso. Avrai notato che di file accdb ne hai almeno 3. Te lo avevo detto già da tempo ma non mi hai ascoltato. Secondo me l'idea iniziale di usare una combo era migliore, infatti né io né vbmizio (che non è più intervenuto) ti abbiamo consigliato una DGV.

    mercoledì 20 novembre 2019 06:33
  • una combo al posto della dgv??? mi spieghi meglio come faresti??? cosa vado a far comparire nella combo?? se successivamente vorrei inserire dei cambi di ricerca nel form "per. esempio vorrei cercare una domanda con determinate parole" all'interno della combo posso?
    mercoledì 20 novembre 2019 07:08
  • Usando una dgv collegata automaticamente al db al momento della creazione della dgv stessa non hai il controllo del codice (generato automaticamente) ed io non so aiutarti in questo caso. Avrai notato che di file accdb ne hai almeno 3. Te lo avevo detto già da tempo ma non mi hai ascoltato. Secondo me l'idea iniziale di usare una combo era migliore, infatti né io né vbmizio (che non è più intervenuto) ti abbiamo consigliato una DGV.

    Ragazzi, io ci sono :)

    Solo che mi sto perdendo un po' in mezzo a tutta questa roba.

    Io suggerisco sempre di andare a risolvere dei micro pezzettini del problema, altrimenti ci si perde. Siamo partiti dal cercare di capire come recuperare una immagine da un db access (cioè, ho tanti bytes, come faccio a "vedere" una immagine a partire da quei bytes?) a dover strutturare il tutto, cioè come scrivo nel db, come faccio a capire quale immagine mi serve dopo aver selezionato un oggetto dalla combo, ecc.

    Io non avevo consigliato una Combo rispetto ad una ListView o ad una DGV, semplicemente l'OP aveva chiesto riguardo alla Combo e da li ero partito. Cosa consigliare? Non lo so, non sto facendo l'analisi di *tutto* il problema. Per quel che mi riguarda, le DGV non mi piacciono, le uso poco e per questo motivo non le so sfruttare bene (colpa mia, naturalmente).

    A questo punto, come intendi procedere? 

    mercoledì 20 novembre 2019 08:13
  • L'idea della combo l'hai avuta tu per primo e vbmizio di ha consigliato 2 modi per attuarla, comunque se preferisci la dgv va bene ugualmente, ma gestita da te e non in automatico, il che significa che quando inserisci nel form la dgv non devi collegarla ad alcun db in automatico, ma solo via codice con

    Dim connStr As String = "Provider=Microsoft.ACE.OLEDB.12.0; Data Source=F:\Documenti\FotoNomi.accdb"
        Dim Conn As OleDbConnection = New OleDbConnection(connStr)
        Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
            Dim SQLString As String = "SELECT * FROM Tabella1"

            Dim Adapter As OleDbDataAdapter = New System.Data.OleDb.OleDbDataAdapter(SQLString, Conn)
            Dim table As DataTable = New DataTable()
            Conn.Open()
            Adapter.Fill(table)
            DataGridView1.DataSource = table
        End Sub

    ovviamente la combo non è adatta a fare ricerche, meglio la dgv, ma le ricerche di solito non si fanno direttamente sulla dgv ma sul database, comunque concordo con vbmizio, un problema alla volta, ancora devi risolvere quello iniziale, scrivere su db e leggere.

    Il collegamento che hai fatto tu non è sbagliato a priori, ma va saputo gestire e poiché nessuno lo consiglia (è sempre meglio scriverlo da soli il codice) pochi lo sanno fare bene.




    • Modificato patel45 mercoledì 20 novembre 2019 09:13
    mercoledì 20 novembre 2019 08:25
  • Signori Buongiorno,

    avete pienamente ragione, dal problema che ho postato all'inizio siamo andati da tutt'altra parte. E' vero che avevo nominato una combobox per far comparire un'immagine associata ad ogni nome presente nella combo però è pure vero che prima di comparire l'immagine andava salvata ed è così che siamo arrivati al punto di adesso. Come potete vedere, precedentemente ho postato delle foto dei vari form. per quanto riguarda la prima immagine sembra che sia tutto ok (almeno penso), l'unica cosa che rimane è utilizzare la combo per assegnare la categoria domande e riuscire a risolvere il discorso di poter salvare una riga alla volta in base al mex che compare (impossibile accedere al flusso chiuso). la combo che deve far comparire l'immagine nella picturebox è nella seconda foto che ho postato. la combo fa riferimento ad un'altra tabella presente sempre all'interno dello stesso DB.

    mal che vada posso postarvi la mia mail in modo tale da metterci in contatto diversamente e potervi mandare il tutto in modo più veloce.

    vi ringrazio sempre per la vostra gentilezza.

    mercoledì 20 novembre 2019 10:07
  • gli argomenti si discutono sul forum, non in privato, per il resto se ti sembra tutto OK procedi, a me non sembra, nel tuo db access non viene salvato niente.

    Inutile proseguire se non accetti i consigli.

    mercoledì 20 novembre 2019 11:31
  • io i consigli li accetto.......e come ma se non mi spieghi perché non salva nnt ti sembra che riesco a capirti???
    mercoledì 20 novembre 2019 13:34
  • io non so perché non ti salva niente e ti ho detto anche come risolvere, ma sembra che tu non legga
    mercoledì 20 novembre 2019 15:05
  • Signori Buonasera,

    spero che questo sia l'ultima volta che che vi rompo l'anima con il mio File XD "https://www.dropbox.com/s/u0h6t3cv08o0yew/Nuovo.zip?dl=0" questo è il link del file totalmente stravolto. Spero di avere la vostra approvzione una volta verificato che sia tt ok. Solamente 2 sono le cose che non capisco ancora:

    1) se provo ad aggiungere una domanda senza un'immagine mi compare un primo mex con scritto (riferimento a un oggetto non impostato su un'istanza di oggetto) cliccando su ok compare il secondo messaggio di avvenuto salvataggio.

    2) dopo aver salvato la prima riga e vado per aggiungere le altre mi compare sempre come primo Mex (impossibile accedere a un flusso chiuso) cliccando su ok compare il secondo messaggio di avvenuto salvataggio.

    riuscite a spiegarmi il perché?

    Grazie mille ancora

    giovedì 21 novembre 2019 22:27
  • cosa hai cambiato ? non hai seguito i miei consigli di gestire TU il db, quindi, come già detto, non sono in grado di aiutarti.

    un link molto utile per imparare a gestire correttamente un db access è il seguente http://nuke.vbcorner.net/Progetti/VBNET/VB2008OleDbAccessnoDataSet/tabid/102/Default.aspx

    • Modificato patel45 venerdì 22 novembre 2019 06:48
    venerdì 22 novembre 2019 06:31
  • ma che versione di office hai??? per caso è registrata o no??? perché non è possibile che in tutti i pc che lo provo con office 2007 "REGISTRATO" riesco ad utilizzare tranquillamente l'app senza nessun errore e scrivendo correttamente il DB......bho!!!!non riesco a capire
    venerdì 22 novembre 2019 21:53
  • neppure io riesco a capire, se riesci ad utilizzare tranquillamente l'app senza nessun ierrore e scrivendo correttamente il DB cosa stiamo qui a discutere ?

    oltretutto nel link che hai indicato non ho trovato il db

    sabato 23 novembre 2019 06:27
  • il db si trovo all'interno della cartella bin\debug
    sabato 23 novembre 2019 07:57
  • mi da questo errore

    non è stato possibile elaborare il file Form1.resx perché si trova nell'area Internet o Siti con restrizioni o presenta il contrassegno del Web. Rimuovere il contrassegno del Web se si intende elaborare questi file.

    Se invece accetto di eseguire l'ultima compilazione completata il programma funziona.

    Ritorniamo al discorso di prima, la gestione del db è tutta automatica, al primo errore non sai come risolvere ed io neppure.

    Se vuoi imparare a gestire database devi studiare e farlo col TUO codice, altrimenti avrai sempre difficoltà.

    sabato 23 novembre 2019 10:25