
24/02/2009, 10:21
|
| | Fecha de Ingreso: julio-2008
Mensajes: 44
Antigüedad: 16 años, 7 meses Puntos: 0 | |
Respuesta: Problema al Reemplazar Imagen Por Otra no entiendo muy bien tu problema pero te dejo el codigo de un programa que yo hice y carga las imagenes y tambien me las remplasa:
Imports System.IO
Imports System.Data
Imports System.Data.SqlClient
Public Class Form1
Inherits System.Windows.Forms.Form
Dim cn As SqlClient.SqlConnection
Public Const strConn As String = "Password= ; user id=;data source=;persist security info=True;initial catalog="
Dim haveData81 As Boolean = False : Dim haveData82 As Boolean = False
Dim Conn As SqlConnection = New SqlConnection
Dim comAdd As SqlCommand
Dim da As SqlDataAdapter
Dim ds As DataSet = New DataSet
#Region " Windows Form Designer generated code "
Public Sub New()
MyBase.New()
'This call is required by the Windows Form Designer.
InitializeComponent()
'Add any initialization after the InitializeComponent() call
End Sub
'Form overrides dispose to clean up the component list.
Protected Overloads Overrides Sub Dispose(ByVal disposing As Boolean)
If disposing Then
If Not (components Is Nothing) Then
components.Dispose()
End If
End If
MyBase.Dispose(disposing)
End Sub
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
'Display Picture File
OpenFileDialog1.InitialDirectory = "ruta de las imagenes"
OpenFileDialog1.DefaultExt = ".Jpg"
OpenFileDialog1.Filter = "Jpg Files(*.jpg)|*.jpg|Bmp Files(*.bmp)|*.bmp|Gif Files(*.gif)|*.gif"
'OpenFileDialog1.Filter = "Bmp Files(*.bmp)|*.bmp|Gif Files(*.gif)|*.gif|Jpg Files(*.jpg)|*.jpg"
OpenFileDialog1.ShowDialog()
PictureBox1.Image = Image.FromFile(OpenFileDialog1.FileName)
TextBox1.Text = "" + OpenFileDialog1.FileName.Substring(CInt(OpenFileDi alog1.FileName.LastIndexOf("\")) + 1)
'MsgBox(CInt(OpenFileDialog1.FileName.LastIndexOf( "\")))
End Sub
'Add Button
Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
' To Insert Image
Dim st As New FileStream(OpenFileDialog1.FileName, FileMode.Open, FileAccess.Read)
Dim s As String = TextBox1.Text
Dim mbr As BinaryReader = New BinaryReader(st)
Dim buffer(st.Length) As Byte
mbr.Read(buffer, 0, CInt(st.Length))
st.Close()
InsertImage(buffer, s)
End Sub
'Function For Inserting in the Procdeure in the Database
Public Function InsertImage(ByRef buffer, ByVal str)
cn = New SqlClient.SqlConnection(SqlConnection1.ConnectionS tring)
cn.Open()
Dim cmd As New SqlClient.SqlCommand("sp_InsertPhoto", cn)
cmd.CommandType = CommandType.StoredProcedure
cmd.Parameters.Add("@name", SqlDbType.VarChar).Value = TextBox1.Text
cmd.Parameters.Add("@image", SqlDbType.Image).Value = buffer
cmd.ExecuteNonQuery()
MsgBox("Image inserted")
cn.Close()
End Function
'Function to Display Image
Private Sub ShowImage(ByVal s As String)
Dim i As Integer
Dim str As String
cn = New SqlClient.SqlConnection(SqlConnection1.ConnectionS tring)
cn.Open()
For i = 0 To getCountImage() - 1
str = "SELECT ImgObjeto FROM Table_1 WHERE (name='" & getNameImage(i) & "')"
Dim cmd As New SqlClient.SqlCommand(str, cn)
TextBox1.Text = s
Dim b() As Byte
b = cmd.ExecuteScalar()
If (b.Length > 0) Then
Dim stream As New MemoryStream(b, True)
stream.Write(b, 0, b.Length)
DrawToScale(New Bitmap(stream), i)
stream.Close()
End If
Next
cn.Close()
End Sub
Private Sub ShowImage(ByVal s As String, ByVal imgIndex As Integer)
Me.ListView1.LargeImageList = ImageList1
Me.ListView1.View = View.LargeIcon
Dim osItem As ListViewItem.ListViewSubItem
Dim oitem As ListViewItem = New ListViewItem
oitem.Text = s
osItem = New ListViewItem.ListViewSubItem
osItem.Text = s
oitem.SubItems.Add(osItem)
osItem = New ListViewItem.ListViewSubItem
osItem.Text = s & s
oitem.SubItems.Add(osItem)
If imgIndex >= 0 Then
With ListView1
.Items.Add(oitem)
End With
oitem.ImageIndex = imgIndex
End If
End Sub
Private Function getCountImage() As Integer
Dim sqlgetGroup As String
Dim i As Integer
With Conn
If .State = ConnectionState.Open Then .Close()
.ConnectionString = strConn
.Open()
End With
If haveData81 = True Then
ds.Tables("cntPicture").Clear()
End If
sqlgetGroup = "SELECT COUNT(*) AS cntPicture"
sqlgetGroup &= " FROM Table_1"
'sqlgetGroup &= " FROM photos1"
da = New SqlDataAdapter(sqlgetGroup, Conn)
da.Fill(ds, "cntPicture")
If ds.Tables("cntPicture").Rows.Count <> 0 Then
haveData81 = True
Return CInt(ds.Tables("cntPicture").Rows.Item(0).ItemArra y.GetValue(0))
Else
Return 0
haveData81 = False
End If
End Function
Private Function getNameImage(ByVal imgNumber As Integer) As String
Dim sqlgetName As String
Dim i As Integer
With Conn
If .State = ConnectionState.Open Then .Close()
.ConnectionString = strConn
.Open()
End With
If haveData82 = True Then
ds.Tables("PicName").Clear()
End If
sqlgetName = "SELECT ImgObjeto FROM Table_1"
da = New SqlDataAdapter(sqlgetName, Conn)
da.Fill(ds, "PicName")
If ds.Tables("PicName").Rows.Count <> 0 Then
haveData82 = True
Return CStr(ds.Tables("PicName").Rows.Item(imgNumber).Ite mArray.GetValue(0))
Else
Return 0
haveData82 = False
End If
End Function
'Function to Create Instance For the Image From the Buffer
Private Sub DrawToScale(ByVal bmp As Image, ByVal imgindex As Integer)
PictureBox1.Image = New Bitmap(bmp)
ImageList1.Images.Add(New Bitmap(bmp))
Me.ListView1.LargeImageList = ImageList1
Me.ListView1.View = View.LargeIcon
Dim osItem As ListViewItem.ListViewSubItem
Dim oitem As ListViewItem = New ListViewItem
oitem.Text = "MainDetail"
osItem = New ListViewItem.ListViewSubItem
osItem.Text = "subDetail"
oitem.SubItems.Add(osItem)
ListView1.Items.Add(oitem)
oitem.ImageIndex = imgindex
End Sub
'Show Button
Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click
Dim i As String
ListView1.Items.Clear()
i = "test Show Image"
ShowImage(i)
End Sub
'Exit Button
Private Sub Button4_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button4.Click
Me.Dispose()
End Sub
'Delete Button
Private Sub Button5_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button5.Click
cn = New SqlClient.SqlConnection(SqlConnection1.ConnectionS tring)
cn.Open()
Dim s As String = InputBox("Enter name to delete")
Dim cmd As New SqlClient.SqlCommand("delete from Table_1 where name='" & s & "'", cn)
cmd.ExecuteNonQuery()
MsgBox("Image deleted")
cn.Close()
End Sub
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
' ShowImage("aaa", 0)
' ShowImage("bbb", 1)
' ShowImage("ccc", 3)
'RefreshList()
MessageBox.Show("All Image=" & getCountImage())
ImageList1.Images.Clear()
esperoq ue te sirva este codigo ahora solo trata de decifrar que es lo que nesecitas |