miércoles, 1 de julio de 2009

Muestra una imagen solo con la ruta

Algunos programadores no desean guardar la imagen directo en la tabla de sql server por miedo a que esta crezca demasiado, para esto se puede visualizar la imagen por medio de la ruta.

Para el ejemplo crearemos una tabla llama CATALOGO, crearemos un campo ruta nvarcha(50)
Crearemos una form con un PictureBox, TextBox, 2 Button y mandaremos a llamar un OpenFileDialog.

Dentro del botòn copiaremos el siguiente còdigo:
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
If Me.OpenFileDialog1.ShowDialog() = Windows.Forms.DialogResult.OK Then
Try

'muestra la imagen en el picture
Me.PictureBox1.Image = Image.FromFile(OpenFileDialog1.FileName)

'muestra la ruta de la imagen en el TextBox1
Me.TextBox1.Text = OpenFileDialog1.FileName
Catch ex As BadImageFormatException
MessageBox.Show("Formato incorrecto", "Error", _
MessageBoxButtons.OK, MessageBoxIcon.Error)
Catch ex As Exception
MessageBox.Show("Error al intentar abrir el archivo de imagen " _
& ex.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error)
End Try
End If

End Sub

En el botòn2 es donde estara el còdigo para grabar el registro:
' Crea la sentencia SQL para la tabla general
Dim sentencia As String
sentencia = "insert into catalogo" & _
"(ruta)" & _
" values " & _
"('" & TextBox1.Text & "');"
' Crea el comando SQL para tabla general
Dim comando As New SqlClient.SqlCommand(sentencia, Cnn)
Dim resultados As Integer
' Conecta con la Base de Datos
Cnn.Open() 'contiene los parametros de conexiòn a la tabla de sql, puedes revisar los

'post anterior para ver la forma de conexiòn
resultados = comando.ExecuteNonQuery()

Me.Close()
MessageBox.Show("Registo guardado.")


Creamos otra form2 donde estara un datagrid, donde llamaremos la form1, el datagrid puede tener el siguiente còdigo:
Dim Ds As New DataSet
Dim Da As New SqlClient.SqlDataAdapter("select * from catalogo, Cnn)
Da.Fill(Ds, "catalogo")
Dim myDataView As DataView = New DataView(Ds.Tables("catalogo"))
DataGridView1.DataSource = myDataView


Puedes poner un botòn en la form2 para llamar la form1 y poder visualizar la imagen, dentro de este botòn copia el siguiente còdigo:
Dim llamaforma As New form1

'guarda la fila donde se encuentra el puntero
Dim fila As Integer = DataGridView1.CurrentCellAddress.Y

llamaforma.TextBox1.Text = (myDataView(fila)("ruta"))
llamaforma.foto.Image = System.Drawing.Image.FromFile(TextBox1.Text)

Comparte