Ejemplos de ADO NET

15
LENGUAJE DE PROGRAMACION II 1.- LLENADO UN DATAGRIDVIEW EMPLEANDO LA BASE DE DATOS NORTHWIND DEL SQL SERVER 2005 '---Primero importamos Imports System.Data Imports System.Data.SqlClient Public Class Form1 '----Realizamos la conexion para SQL-2005 Dim cn As New SqlConnection("server=(local);database=northwind; integrated security=true") -------------------------Programamos al Cargar el Formulario-------------------------- Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load '-------Mediante el SqlDataAdapter extraemos la Data del Sql con la conexión cn Dim da As New SqlDataAdapter("select * from products", cn) Dim dt As New DataTable 'Creamos la tabla virtual (Esta tiene Filas y Columnas) da.Fill(dt) 'lo que capturamos en el DataAdapter llenamos a la tabla virtual dgproductos.DataSource = dt '-------pasamos la tabla Virtual al DatagridView 1

description

Empleando la Base de Datos Northwind ,hay ejemplos empleando el gridview ,combobox , listbox de seleccion multiple , espero que les sea de utilidad , es bastante sencillo .Ing. Alberto moreno Universidad Nacional de Ingenieria

Transcript of Ejemplos de ADO NET

Page 1: Ejemplos de ADO NET

LENGUAJE DE PROGRAMACION II

1.- LLENADO UN DATAGRIDVIEW

EMPLEANDO LA BASE DE DATOS NORTHWIND DEL SQL SERVER 2005

'---Primero importamosImports System.DataImports System.Data.SqlClientPublic Class Form1'----Realizamos la conexion para SQL-2005Dim cn As New SqlConnection("server=(local);database=northwind;integrated security=true")-------------------------Programamos al Cargar el Formulario--------------------------

Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load'-------Mediante el SqlDataAdapter extraemos la Data del Sql con la conexión cn Dim da As New SqlDataAdapter("select * from products", cn) Dim dt As New DataTable 'Creamos la tabla virtual (Esta tiene Filas y Columnas) da.Fill(dt) 'lo que capturamos en el DataAdapter llenamos a la tabla virtual dgproductos.DataSource = dt '-------pasamos la tabla Virtual al DatagridView '------CONTANDO Y SUMANDO CAMPOS--------- lblfilas.Text = dt.Rows.Count '-----------------Cuenta Filas de la tabla lblsuma.Text = dt.Compute("sum(unitprice)", "")'-Suma el campo UNITPRICE

1

[email protected]

Page 2: Ejemplos de ADO NET

LENGUAJE DE PROGRAMACION II

'NOTA : PARA LLENAR UN DATAGRIDVIEW SOLO LO LLENAMOS CON DATASOURCEEnd Sub------------------------------------------------------------------- End Class

2.-

LLENADO UN LISTBOX Y COMBOBOX

'---Primero importamosImports System.DataImports System.Data.SqlClientPublic Class Listbox_Combo '----Realizamos la conexion para SQL-2005'----Realizamos la conexion para SQL-2005Dim cn As New SqlConnection("server=(local);database=northwind;integrated security=true")'-------------------------Programamos al Cargar el Formulario---------------------- Private Sub Listbox_Combo_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load Dim da As New SqlDataAdapter("select * from categories", cn) Dim dt As New DataTable '--creamos la tabla virtual (Esta tiene Filas y Columnas) da.Fill(dt) 'lo que capturamos en el DataAdapter llenamos a la tabla virtual '--------------Llenamos el Combobox------------- cbocategorias.DataSource = dt 'pasamos la tabla al ComboBox cbocategorias.DisplayMember = "categoryname" '---Campo a Visualizar cbocategorias.ValueMember = "categoryid" '---Campo a capturar internamente

2

[email protected]

Page 3: Ejemplos de ADO NET

LENGUAJE DE PROGRAMACION II

'--------------Llenamos el ListBox------------- lstcategorias.DataSource = dt lstcategorias.DisplayMember = "categoryname" lstcategorias.ValueMember = "categoryid"'NOTA : PARA LLENAR UN COMBOBOX Y LISTBOX SON LAS MISMAS PROPIEDADES '.DataSource '---Cargamos '.DisplayMember '---Campo a Visualizar '.ValueMember '---Campo a capturar internamente End Sub--------------------------------------------------------------------- End Class

3.- LLENADO DE UN DATAGRIDVIEW MEDIANTE UN COMBO

Imports System.DataImports System.Data.SqlClientPublic Class Combo_Datagrid---------------------------------------------------------------------------------------Dim cn As New SqlConnection("server=(local);database=northwind;integrated security=true")'--------------AL CARGAR EL FORMULARIO SE LLENE EL COMBO------------------------Private Sub Combo_Datagrid_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load Dim da As New SqlDataAdapter("select * from categories", cn) Dim dt As New DataTable da.Fill(dt) cbocategorias.DataSource = dt cbocategorias.DisplayMember = "categoryname" '---Campo a Visualizar

3

[email protected]

Page 4: Ejemplos de ADO NET

LENGUAJE DE PROGRAMACION II

cbocategorias.ValueMember = "categoryid" '---Campo a capturar internamenteEnd Sub---------------------------------------------------------------------------------------'-------------ESTE EVENTO OCURRE CADA VEZ QUE ELEGIMOS UN VALOR EN EL COMBO--------Private Sub cbocategorias_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cbocategorias.SelectedIndexChanged Dim cat As Integer'Capturamos el valor interno del Combo categoryid que esta en su "VALUEMEMBER", te 'acuerdas..pero con la propiedad SelectedValue.ToString lo recibe como cadena; 'Val=convierte a entero cat = Val(cbocategorias.SelectedValue.ToString)'Luego esta variable la concatenamos con nuestra sentencia en el SqlDataAdapter'Podria quedar asi:select productname,categoryid from products where categoryid = 2Dim da As New SqlDataAdapter("select productname,categoryid from products where categoryid=" & cat, cn) Dim dt As New DataTable da.Fill(dt) dgproductos.DataSource = dtEnd Sub--NOTA: PODRÍAS REEMPLAZAR ESE COMBO POR UN LISTBOX, TE ACUERDAS QUE TIENEN CASI LAS -MISMA PROPIEDADES------------------------------------------------------------End Class

4.- CAPTURAR EL VALOR DE UN DATAGRID PARA LLENAR OTRO DATAGRID

4

Page 5: Ejemplos de ADO NET

LENGUAJE DE PROGRAMACION II

Public Class DATAGRID_DATAGRID---------------------------------------------------------------------------------------Private Sub DATAGRID_DATAGRID_Load(…)Handles MyBase.LoadDim da As New SqlDataAdapter("SELECT ORDERID,CUSTOMERID,ORDERDATE FROM ORDERS", cn)Dim dt As New DataTable da.Fill(dt) dgordenes.DataSource = dtEnd Sub---------------------------------------------------------------------------------------Private Sub dgordenes_CurrentCellChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles dgordenes.CurrentCellChanged Try '-----------capturamos los valores del Datagrid------------ 'dgordenes.Item(columna,fila).Value Captura el valor de tal fila y columna 'dgordenes.CurrentCell.RowIndex = Posición de fila en la que estoylblorden.Text = dgordenes.Item(0, dgordenes.CurrentCell.RowIndex).Value.ToString()lblcliente.Text = dgordenes.Item(1, dgordenes.CurrentCell.RowIndex).Valuelblfecha.Text = dgordenes.Item(2, dgordenes.CurrentCell.RowIndex).Value.ToString() '-------------------------------------------------------------- Dim sql As String,orderid As Integer '--------capturamos el item del la columna 0 (seria el campo ORDERID)

5

[email protected]

Page 6: Ejemplos de ADO NET

LENGUAJE DE PROGRAMACION II

orderid = Val(dgordenes.Item(0, dgordenes.CurrentCell.RowIndex).Value.ToString()) sql = "SELECT * FROM [ORDER DETAILS] WHERE ORDERID=" & orderid Dim da As New SqlDataAdapter(sql, cn) Dim dt As New DataTable da.Fill(dt) dgdetalle.DataSource = dt Catch ex As Exception End Try End SubEnd Class

5.- Colocar en un listbox todos los numeros de pedidos , luego al seleccionar en forma multiple los pedidos va mostrar su detalle en un gridview

Imports System.DataImports System.Data.SqlClientPublic Class Form4

Dim cn As New SqlConnection("server=(local);database=northwind;integrated security=true") 'Para SQL2005'Dim cn As New SqlConnection("server=(local);database=northwind;uid=sa") 'Para SQL2000

-------------------------------------------------------------------------------- Private Sub Form4_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

6

[email protected]

Page 7: Ejemplos de ADO NET

LENGUAJE DE PROGRAMACION II

Dim DA As New SqlDataAdapter("SELECT ORDERID FROM ORDERS", cn) Dim DT As New DataTable DA.Fill(DT) ListBox1.DataSource = DT ListBox1.DisplayMember = "ORDERID" ListBox1.ValueMember = "ORDERID" End Sub--------------------------------------------------------------------------------Private Sub BTNMOSTRAR_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BTNMOSTRAR.Click Dim I As Integer, codigos As String = "" Try For I = 0 To ListBox1.Items.Count - 1 '

If ListBox1.GetSelected(I) = True Then 'Pregunto si el elemento esta seleccionado Si es asi lo alamaceno con la propiedad Items(FILA)(COLUMNA)

codigos = codigos + Me.ListBox1.Items(I)(0).ToString() + "," End If Next codigos = codigos.Substring(0, codigos.Length - 1) 'Elimina la ultima , Dim cadsql As String = "" cadsql = "SELECT OD.ORDERID,ORDERDATE,UNITPRICE,QUANTITY," & _ "TOTAL=(UNITPRICE*QUANTITY)FROM ORDERS O,[ORDER DETAILS] OD " & _ "WHERE(O.ORDERID = OD.ORDERID)AND O.ORDERID IN (" & codigos & ")" 'MessageBox.Show(cadsql) Para verificar que valores me toma Dim DA As New SqlDataAdapter(cadsql, cn) Dim DT As New DataTable DA.Fill(DT) DGPEDIDOS.DataSource = DT Catch ex As Exception MessageBox.Show(ex.Message) End TryEnd Sub------------------------------------------------------------------

7

Page 8: Ejemplos de ADO NET

LENGUAJE DE PROGRAMACION II

6.-TABLAS TEMPORALES

Permiten mantener en memoria un conjunto de datos similar a una tabla (filas y columnas) y a través de sus propiedades realizar las operaciones de mantenimiento

Imports System.DataPublic Class Form1 Dim tabla As New DataTable 'Creo la tabla Dim fila As DataRow 'Instancio una Fila

-----------------------------------------------------------------Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load 'Asi se agrega columnas a un datatable Dim MiColumna As New DataColumn MiColumna.ColumnName = "Codigo" MiColumna.DataType = GetType(Integer) tabla.Columns.Add(MiColumna) With tabla '.Columns.Add("Codigo", GetType(Integer)) .Columns.Add("Nombre", GetType(String)) .Columns.Add("Edad", GetType(Integer)) End With 'DEFINIMOS LA CLAVE PRINCIPAL QUE ESTA EN EL CODIGO 'ESTO ES PARA DEFINIR QUE EL CODIGO NO SE REPITA AL AGREGAR tabla.Constraints.Add("clave", MiColumna, True) 'POR ESO VA UN CONSTRAINT Me.dgdatos.DataSource = tabla End Sub

--------------------------------------------------------------------------------Private Sub btnadd_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnadd.Click

8

[email protected]

Page 9: Ejemplos de ADO NET

LENGUAJE DE PROGRAMACION II

'-----------Validamos que el campo txtcodigo no este vacio------------ If Me.txtcodigo.Text = "" Then txtcodigo.Focus() MsgBox("Ingrese Codigo", MsgBoxStyle.Critical, "Advertencia") Exit Sub 'Sale del SUB End If '-----------Validamos que el campo no sea numerico ------------------- If IsNumeric(Me.txtnombre.Text) Then txtnombre.Focus() MsgBox("Nombre Invalido", MsgBoxStyle.Critical, "Advertencia") Exit Sub End If '-----------Y la validacion para la EDAD,....Tu lo Puedes hacer no.

fila = tabla.Rows.Find(Me.txtcodigo.Text) 'BUSCA EL CODIGO EN LA TABLA POR LA CLAVE PRINCIPAL(CODIGO)Y SI NO LO ENCUENTRA ENTONCES QUE LO AGREGUE If fila Is Nothing Then fila = tabla.NewRow 'Crea una nueva Fila en la Tabla fila.Item(0) = Val(Me.txtcodigo.Text) 'Asigna el txtcodigo en la nueva fila y Columna 0 fila.Item(1) = Me.txtnombre.Text 'Para la Columna 1 fila.Item(2) = CDbl(Me.txtedad.Text) 'Para la Columna 2 tabla.Rows.Add(fila) 'Agrega una fila a la Tabla y este a la Vez Actualiza el DGDATOS End If End Sub

-------------------------------------------------------------------------------- Private Sub btneliminar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btneliminar.Click Dim Posicion% Posicion = Me.dgdatos.CurrentRow.Index() 'Capturamos la posicion en la que estoy en el DGDATOS tabla.Rows.RemoveAt(Posicion) 'Elimina en esa PosicionEnd Sub

--------------------------------------------------------------------------------Private Sub btnmodif_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnmodif.Click Try 'BUSCA EL TXTCODIGO EN LA TABLA PARA MODIFICARLO fila = tabla.Rows.Find(Me.txtcodigo.Text) If Not fila Is Nothing Then fila.BeginEdit() 'EMPIEZA LA MODIFICACION 'fila.Item(0) = Val(Me.txtcodigo.Text) 'Ya no Editamos el Codigo fila.Item(1) = Me.txtnombre.Text fila.Item(2) = CDbl(Me.txtedad.Text) fila.EndEdit() 'TERMINA LA MODIFICACION Else MsgBox("Ese Codigo no Existe Para ser modificado", MsgBoxStyle.Critical, "Advertencia") End If Catch ex As Exception End TryEnd Sub--------------------------------------------------------------------------------

9

Page 10: Ejemplos de ADO NET

LENGUAJE DE PROGRAMACION II

Private Sub dgdatos_CurrentCellChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles dgdatos.CurrentCellChanged Try

'Capturamos los Datos del DATAGRID y lo pasamos a los textos Me.txtcodigo.Text = Me.dgdatos.Item(0,Me.dgdatos.CurrentRow.Index())

.Value.ToString()Me.txtnombre.Text = Me.dgdatos.Item(1,Me.dgdatos.CurrentRow.Index()).Value.ToString()

Me.txtedad.Text = Me.dgdatos.Item(2,Me.dgdatos.CurrentRow.Index()).Value.ToString()

Catch ex As Exception End Try End Sub

--------------------------------------------------------------------------------Private Sub btnsumar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnsumar.Click Dim I%, Suma# 'Recorro la TABLA y sumo solo los datops de la COLUMNA 2 (EDADES) For I = 0 To tabla.Rows.Count - 1 Suma += tabla.Rows(I)(2) Next MsgBox("Total Suma " & Suma, MsgBoxStyle.Information, "Total de Edades")End SubEnd Class

7.- LLAMAR A UNA VENTANA DE AYUDA

Empleando una ventana como ayuda, para la selección de un código.

CODIFICACION DEL FORMULARIO 1

10

Page 11: Ejemplos de ADO NET

LENGUAJE DE PROGRAMACION II

Public Class Form1 Private Sub txtcodigo_KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles txtcodigo.KeyDown 'Si se Presiono la Tecla F5 se llama a la ventana de Ayuda If e.KeyCode = Keys.F5 Then Dim Xayuda As New Form2 'Instanciar al Formulario de esta manera ' puedo acceder a las variables que estan declarados en el Form3 Xayuda.ShowDialog() Me.txtcodigo.Text = Xayuda.codigo Me.txtnombre.Text = Xayuda.nombre End If End SubEnd Class

------------------------------------------------------------------

CODIFICACION DEL FORMULARIO 2Imports System.DataImports System.Data.SqlClientPublic Class Form2

Dim cn As New SqlConnection("server=(local);database=northwind;integrated security=true") 'Para SQL2005'Dim cn As New SqlConnection("server=(local);database=northwind;uid=sa") 'Para SQL2000 Dim DV As DataView 'Instancio una VISTA

Public codigo As String Public nombre As String

11

Page 12: Ejemplos de ADO NET

LENGUAJE DE PROGRAMACION II

--------------------------------------------------------------------------------Private Sub Form2_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load Dim DA As New SqlDataAdapter("Select employeeid,lastname from employees", cn) Dim DS As New DataSet DA.Fill(DS) DV = DS.Tables(0).DefaultView 'El DATASET lo pasamos al DATAVIEW DataGridView1.DataSource = DV.Table() End Sub

--------------------------------------------------------------------------------Private Sub DataGridView1_CellDoubleClick(ByVal sender As Object, ByVal e As System.Windows.Forms.DataGridViewCellEventArgs) Handles DataGridView1.CellDoubleClick 'Depende la posicion que esta el puntero, capturo el codigo y nombre codigo = Me.DataGridView1.Item(0, DataGridView1.CurrentRow.Index())

.Value.ToString() nombre = Me.DataGridView1.Item(1, DataGridView1.CurrentRow.Index()).Value.ToString()Me.Close()End Sub

--------------------------------------------------------------------------------Private Sub txtfiltro_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles txtfiltro.TextChanged'SE ELIGE UN DATAVIEW POR QUE CON ESTE OBJETO SE PUEDE HACER FILTROS COMO ORDENAMIENTOS Y DEMAS OPERACIONES

DV.RowFilter = "lastname like '%" & txtfiltro.Text & "%'" 'Empiezo a filtrar por el NombreEnd SubEnd Class

12