You are on page 1of 6

Mantenimiento usando ADO.NET Temas : Impresion de un formulario, Uso de Transacciones, Uso de DataBindings.

Imports System.Drawing.Printing Imports System.IO Imports System.Drawing.Color Imports System.Reflection Imports System.Data Imports System.Data.SqlClient Public Class Form6 Dim con As SqlConnection Dim cmd As SqlCommand Dim reg As CurrencyManager Dim dtb As DataTable Dim da As SqlDataAdapter Dim com As SqlCommandBuilder Private Sub Form6_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load con = New SqlConnection _ ("Integrated security=true;server=.;database=Importadora") da = New SqlDataAdapter("select * from productos", con) dtb = New DataTable da.Fill(dtb) Dim cols(0) As DataColumn Dim c1 As New DataColumn() c1 = dtb.Columns(0) cols(0) = c1 dtb.PrimaryKey = cols reg = BindingContext(dtb) com = New SqlCommandBuilder(da)

Me.TextBox1.DataBindings.Add("text", dtb, "codpro") Me.TextBox2.DataBindings.Add("text", dtb, "descripcion") Me.TextBox3.DataBindings.Add("text", dtb, "precio") Me.TextBox4.DataBindings.Add("text", dtb, "stock") End Sub Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click If con.State = ConnectionState.Closed _ Then con.Open() Dim transa As SqlTransaction = con.BeginTransaction Try cmd = New SqlCommand _ ("Insert into productos values (@cod,@pro,@pre,@sto)", con) cmd.Transaction = transa cmd.Parameters.Add("@cod", SqlDbType.Int).Value = CInt(Me.TextBox1.Text) cmd.Parameters.Add("@pro", SqlDbType.VarChar, 30).Value = Me.TextBox2.Text cmd.Parameters.Add("@pre", SqlDbType.Decimal).Value = CDbl(Me.TextBox3.Text) cmd.Parameters.Add("@sto", SqlDbType.Int).Value = CInt(Me.TextBox4.Text) cmd.ExecuteNonQuery() Dim fila As DataRow = dtb.NewRow fila(0) = Integer.Parse(Me.TextBox1.Text) fila(1) = Me.TextBox2.Text fila(2) = Double.Parse(Me.TextBox3.Text) fila(3) = Integer.Parse(Me.TextBox4.Text) dtb.Rows.Add(fila) dtb.AcceptChanges() da.Update(dtb) Me.BindingContext(dtb).ResumeBinding() transa.Commit() MsgBox("Registro guardado", 0 + 64, "Aviso") Catch ex As Exception transa.Rollback() MsgBox(ex.Message, 0 + 64, "Error") Finally con.Close() End Try End Sub Private Sub ImprimirTexto(ByVal sender As System.Object, ByVal ePrint As PrintPageEventArgs) Try Dim pr As New PrintDocument ePrint.Graphics.DrawString _ ("Codigo :" & Me.TextBox1.Text, New Font("courier", 12, FontStyle.Regular), Brushes.Black, 50, 130) ePrint.Graphics.DrawString _

("Producto :" & Me.TextBox2.Text, New Font("courier", 12, FontStyle.Regular), Brushes.Black, 50, 150) ePrint.Graphics.DrawString _ ("Precio :" & Me.TextBox3.Text, New Font("courier", 12, FontStyle.Regular), Brushes.Black, 50, 170) ePrint.Graphics.DrawString _ ("Stock :" & Me.TextBox4.Text, New Font("courier", 12, FontStyle.Regular), Brushes.Black, 50, 195) Catch ex As Exception End Try ' ePrint() End Sub Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click Try Dim prnTxt As New PrintDocument AddHandler prnTxt.PrintPage, AddressOf Me.ImprimirTexto prnTxt.Print() Catch ex As Exception MsgBox("Ex : " & ex.ToString) End Try End Sub Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click Try If con.State = ConnectionState.Closed _ Then con.Open() cmd = New SqlCommand _ ("select descripcion,precio,stock from productos where codpro=@c", con) cmd.Parameters.Add("@c", SqlDbType.Int).Value = Integer.Parse(Me.TextBox1.Text) Dim dr As SqlDataReader = cmd.ExecuteReader If Not dr.Read Then MessageBox.Show("Codigo no existe", "Error", MessageBoxButtons.OK, MessageBoxIcon.Information) Me.TextBox1.Focus() Else Me.TextBox2.Text = dr(0) Me.TextBox3.Text = dr(1) Me.TextBox4.Text = dr(2) End If dr.Close() con.Close() Catch ex As Exception End Try End Sub

Private Sub Button4_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button4.Click If con.State = ConnectionState.Closed _ Then con.Open() 'obtiene la fila actual Dim f As DataRow = dtb.Rows.Find(CInt(Me.TextBox1.Text)) Dim transa As SqlTransaction = con.BeginTransaction Try 'MsgBox(f.Item(1, DataRowVersion.Proposed).ToString().Length) If Not f.Item(1, DataRowVersion.Original).Equals(f.Item(1, DataRowVersion.Proposed)) _ Or Not f.Item(2, DataRowVersion.Original).Equals(f.Item(2, DataRowVersion.Proposed)) _ Or Not f.Item(3, DataRowVersion.Original).Equals(f.Item(3, DataRowVersion.Proposed)) Then cmd = New SqlCommand _ ("update productos set descripcion=@pro,precio=@pre,stock=@sto where codpro=@cod", con) cmd.Transaction = transa cmd.Parameters.Add("@pro", SqlDbType.VarChar, 30).Value = Me.TextBox2.Text cmd.Parameters.Add("@pre", SqlDbType.Decimal).Value = Double.Parse(Me.TextBox3.Text) cmd.Parameters.Add("@sto", SqlDbType.Int).Value = Integer.Parse(Me.TextBox4.Text) cmd.Parameters.Add("@cod", SqlDbType.Int).Value = Integer.Parse(Me.TextBox1.Text) cmd.ExecuteNonQuery() transa.Commit() da.Update(dtb) dtb.AcceptChanges() MessageBox.Show("Registro actualizado", "Aviso", MessageBoxButtons.OK, MessageBoxIcon.Information) End If Catch ex As VersionNotFoundException MsgBox("No hay cambios que actualizar", 0 + 64, "Error") Catch ex As Exception transa.Rollback() MsgBox(ex.ToString, 0 + 64, "Error") Finally con.Close() End Try End Sub Private Sub Button5_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button5.Click If con.State = ConnectionState.Closed _ Then con.Open() Dim transa As SqlTransaction = con.BeginTransaction

Try If MessageBox.Show("Desea continuar", "aviso", MessageBoxButtons.YesNo, MessageBoxIcon.Question, MessageBoxDefaultButton.Button2) = 6 Then cmd = New SqlCommand("delete productos where codpro=@cod", con) cmd.Transaction = transa cmd.Parameters.Add("@cod", SqlDbType.Int).Value = Integer.Parse(Me.TextBox1.Text) cmd.ExecuteNonQuery() Dim c As Integer = Integer.Parse(Me.TextBox1.Text) Dim fila As DataRow = dtb.Rows.Find(c) dtb.Rows.Remove(fila) da.Update(dtb) transa.Commit() MessageBox.Show("Registro eliminado", "Aviso", _ MessageBoxButtons.OK, MessageBoxIcon.Information) reg.Position = reg.Count - 1 End If Catch ex As Exception transa.Rollback() MsgBox(ex.Message, 0 + 64, "Error") Finally con.Close() End Try End Sub Private Sub Button8_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button8.Click Me.BindingContext(dtb).ResumeBinding() reg.Position += 1 End Sub Private Sub Button7_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button7.Click Me.BindingContext(dtb).ResumeBinding() reg.Position -= 1 End Sub Private Sub Button10_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button10.Click Me.BindingContext(dtb).SuspendBinding() 'Me.TextBox1.Clear() 'Me.TextBox2.Clear() 'Me.TextBox3.Clear() 'Me.TextBox4.Clear() Me.TextBox1.Focus() End Sub5 Private Sub Button6_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button6.Click Me.BindingContext(dtb).ResumeBinding() reg.Position = 0 End Sub

Private Sub Button9_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button9.Click Me.BindingContext(dtb).ResumeBinding() reg.Position = reg.Count - 1 End Sub Private Sub RadioButton1_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles RadioButton1.CheckedChanged Try Dim dv As DataView = dtb.DefaultView dv.Sort = "codpro" Catch End Try End Sub Private Sub RadioButton2_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles RadioButton2.CheckedChanged Try Dim dv As DataView = dtb.DefaultView dv.Sort = "descripcion" 'en orden descendente colocar dv.Sort = "descripcion desc" Catch End Try End Sub Private Sub RadioButton3_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles RadioButton3.CheckedChanged Try Dim dv As DataView = dtb.DefaultView dv.Sort = "precio" Catch ex As Exception End Try End Sub End Class

You might also like