Blackvelvet Posted May 16, 2012 at 02:33 PM Report #456084 Posted May 16, 2012 at 02:33 PM Boas pessoal: Tenho um pequeno bug na minha aplicação que não percebo.... Eu quero apagar uma imagem da picturebox que está tambem guardada na bd. A imagem está convertida em binario. Acontece que, quando quero apagar SÓ a imagem,apaga-me o registo todo. Dim myConnectionString As String = _ "Data Source=.\SQLEXPRESS; Initial Catalog=Parque; Integrated Security=SSPI;" Dim SQL As String = "DELETE from gest_ao WHERE fotoWin=@fotoWin" Dim Windows() As Byte If pbxSeloWindows.Image IsNot Nothing Then Using M As New IO.MemoryStream pbxSeloWindows.Image.Save(M, Drawing.Imaging.ImageFormat.Jpeg) Windows = M.ToArray() End Using End If Dim connection As New SqlConnection(myConnectionString) Dim command As New SqlCommand(SQL, connection) Dim DataAdapter As New SqlDataAdapter(command) command.Parameters.Add("@fotoWin", SqlDbType.VarBinary).Value = If(Windows Is Nothing, DBNull.Value, Windows) connection.Open() Dim MyData As New DataTable DataAdapter.Fill(MyData) If MyData.Rows(0)(22) IsNot DBNull.Value Then Dim W As IO.MemoryStream = New IO.MemoryStream(CType(MyData.Rows(0)(22), Byte())) pbxSeloWindows.Image = Image.FromStream(W) End If connection.Close() connection = Nothing command = Nothing Podem-me dar uma ajuda? Cumprimentos
thoga31 Posted May 16, 2012 at 02:35 PM Report #456085 Posted May 16, 2012 at 02:35 PM (edited) Para apagar só da PictureBox e não do registo, e se estou a perceber aquilo que pretendes, é simples: PictureBox1.Image = Nothing Agora posso é não estar a entender exactamente o que pretendes... :/ Edited May 16, 2012 at 02:36 PM by thoga31 Knowledge is free!
Caça Posted May 16, 2012 at 02:42 PM Report #456087 Posted May 16, 2012 at 02:42 PM (edited) Para apagar só um campo, faz o update a esse registo e coloca esse campo a NULL Edited May 16, 2012 at 02:42 PM by Caça Pedro Martins Não respondo a duvidas por PM
Blackvelvet Posted May 16, 2012 at 02:42 PM Author Report #456088 Posted May 16, 2012 at 02:42 PM Boas, Estás a dizer que não preciso do codigo todo? ( aquele que acabei de postar,acima) É assim, eu seleciono uma linha da tabela para edição, clico no botao eliminar foto e quero apagar a foto da picturebox e da base de dados. E depois gravar a alteração. Só isso.
Caça Posted May 16, 2012 at 02:46 PM Report #456090 Posted May 16, 2012 at 02:46 PM Para apagar a imagem UPDATE gest_ao SET fotoWin = NULL WHERE ID = @ID Não podes ou não deves apagar por imagem, uma vez que podes ter mais do que um registo com a mesma imagem e caso isso aconteça da forma que tens apaga-os.. Pedro Martins Não respondo a duvidas por PM
Blackvelvet Posted May 16, 2012 at 02:54 PM Author Report #456092 Posted May 16, 2012 at 02:54 PM Não podes ou não deves apagar por imagem, uma vez que podes ter mais do que um registo com a mesma imagem e caso isso aconteça da forma que tens apaga-os.. Não há problemas porque um id vai ter imagens diferentes e em campos separados dai poder excluir sem problemas,mesmo que haja imagens iguais. Ja testei com varias imagens iguais em id's diferentes e não apaga as outras. Obrigado pela ajuda. Um abraço a todos
petvetbr Posted May 16, 2012 at 02:55 PM Report #456093 Posted May 16, 2012 at 02:55 PM Também recomendaria estudar formas alternativas de se fazer este armazenamento. Existe uma regra de boas práticas com relação a banco de dados que se deve evitar guardar imagens neles. O que geralmente se faz é guardar somente o endereço/link para a imagem, mas a imagem em si, fica fora do banco de dados, no sistema de arquivo. Fernando Lage Bastos - MCP/MCTS/MCPD
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now