Quantcast
Channel: Visual Basic Tips and Tricks
Viewing all articles
Browse latest Browse all 2212

sostituire immagine prodotto in picturebox ma con nome uguale

$
0
0

Gentili signori buongiorno.

Ho un problema di questo tipo relativo alla gestione di una picturbox in fase di modifica di una tabella articoli:

codbar - coddisegno - categoria - descrizione - fotopath - prezzo - qta

Inserisco nella tabella articoli un nuovo articolo con i campi sopra elencati (tra cui il cod bar che sarà anche il nome della immagine salvata in una cartella apposita) e la foto dell'articolo. Sin qui tutto bene.

Poi prevedo un pulsante di modifica dell'articolo nel caso l'utente si sia sbagliato ad inserire qualche dato, e qui cominciano i problemi per la gestione dell'immagine nel senso che ho immaginato questi scenari quando vengono ricaricati i dati dal database per la modifica:

1)  immagine caricata nella pctbox - l'utente la lascia inalterata - esiste nella cartella con lo stesso nome

2) l'immagine è caricata, l'utente la cambia perché la vuole modificare - esiste nella cartella con lo stesso nome

3) l'utente svuota la picture box e quindi non c'è immagine e non viene salvato nessun percorso nel database - l'immagine come file continua però ad esistere nella cartella.

 

Ho, secondo me, creato un codice troppo arzigogolato, ma la sostanza è che quando vado a salvare, a seconda dei vari scenari che mi sono creato, nel momento in cui cerco di cancellare l'immagine, mi dice che non riesce perché il file è in uso presso un altro processo, oppure il file esiste già e non riesce a trasportare la nuova immagine con il codice a barre che rimane lo stesso, pur essendo uscito dai vari Using e chiuso le connessioni e pulito pcfoto.image

Ho messo dei messagebox qua e la per mio uso e consumo per verificare ai vari stadi che valore prendevano le variabili.

Esisterà un modo più pulito e mi sono incasinato la vita per niente...chiedo un vostro aiuto. 

grazie per chi vorrà darmi una propria opinione.

 '************ Salvataggio nel caso di modifica articolo **************

        If ImModify = True Then   '(se sono in fase di modifica articolo allora: )
            Dim updqueryart As String

            If (imgcaricata = True) And (immagine_e_uguale = True) And (File.Exists(Oldpath)) Then
                MessageBox.Show("img è caricata: "& imgcaricata & ""& "immagine_e_uguale alla caricata: "& immagine_e_uguale & ""& File.Exists(Oldpath))
                picNewPathcli = String.Concat(targetDir1, "\", appoggiocodbar, ".jpg")

            ElseIf (imgcaricata = True) And (immagine_e_uguale = False) And (File.Exists(Oldpath)) Then
                MessageBox.Show(" siamo nel caso che img è caricata: "& imgcaricata & ""& "immagine_non è_uguale alla caricata: "& immagine_e_uguale & ""& "ed il vecchio file esiste"& File.Exists(Oldpath))

                picNewPathcli = String.Concat(targetDir1, "\", appoggiocodbar, ".jpg")
                MessageBox.Show("valore iniziale: "& picNewPathcli)
            ElseIf (imgcaricata = False) Then
                MessageBox.Show(" siamo nel caso che img non è caricata: "& imgcaricata)
                picNewPathcli = Nothing
            End If
            If txtprezzo.Text <>"" Then
                prezzo = Convert.ToDecimal(txtprezzo.Text)
            Else
                prezzo = 0
            End If
            updqueryart = "update tedakdb.articoli set codbar = @codbar,  coddisegno = @coddisegno, categoria=@categoria, Descrizione=@descrizione, fotopath=@fotopath, Prezzo=@prezzo, qta=@qta WHERE idarticolo = '"& idarticolo & "'"

            Using myconn As New MySqlConnection(stringaConn)
                Dim cmdmodart As New MySqlCommand(updqueryart, myconn)
                cmdmodart.Parameters.Add("@codbar", MySqlDbType.VarChar).Value = txtcodbar.Text
                cmdmodart.Parameters.Add("@coddisegno", MySqlDbType.VarChar).Value = txtrifdisegno.Text
                cmdmodart.Parameters.Add("@categoria", MySqlDbType.VarChar).Value = cbcategoria.Text
                cmdmodart.Parameters.Add("@descrizione", MySqlDbType.VarChar).Value = txtdescrizione.Text
                cmdmodart.Parameters.Add("@fotopath", MySqlDbType.VarChar).Value = picNewPathcli
                cmdmodart.Parameters.Add("@prezzo", MySqlDbType.Decimal).Value = prezzo
                cmdmodart.Parameters.Add("@qta", MySqlDbType.Int16).Value = CInt(txtqtapresente.Text)

                Try
                    myconn.Open()
                    cmdmodart.ExecuteNonQuery()
                    MessageBox.Show("Articolo aggiornato correttamente!", "Anagrafica Articoli")
                    myconn.Close()
                    FotoPct.Image = Nothing
                    FotoPct.Image.Dispose()
                Catch ex As Exception
                End Try
            End Using
            ImModify = False
            puliscicampi()
            disabilita()
            MessageBox.Show("valore finale: "& picNewPathcli)
            File.Delete(pathattuale)
            My.Computer.FileSystem.CopyFile(pathattuale, picNewPathcli)

Viewing all articles
Browse latest Browse all 2212