Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Ejemplos de ADO NET
Ejemplos de ADO NET
morenouni@gmail.com EMPLE ANDO LA BA SE DE DA TOS NOR THWIND DEL SQL SER VER 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 conexin 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
'NOTA : PARA LLENAR UN DATAGRIDVIEW SOLO LO LLENAMOS CON DATASOURCE End Sub -----------------------------------------------------------------End Class 2.-
LL ENADO UN LISTB
OX Y COM BOB OX
'---Primero importamos morenouni@gmail.com Imports System.Data Imports System.Data.SqlClient Public Class Listbox_Combo '----Realizamos la conexion para SQL-2005 '----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 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 '--------------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.- LL ENADO DE UN DA TAGRIDVIEW MEDIANTE UN COMB O
morenouni@gmail.com Imports System.Data Imports System.Data.SqlClient Public 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 cbocategorias.ValueMember = "categoryid" '---Campo a capturar internamente End 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 = 2 Dim da As New SqlDataAdapter("select productname,categoryid from products where categoryid=" & cat, cn) Dim dt As New DataTable da.Fill(dt) dgproductos.DataSource = dt End Sub --NOTA: PODRAS REEMPLAZAR ESE COMBO POR UN LISTBOX, TE ACUERDAS QUE TIENEN CASI LAS -MISMA PROPIEDADES----------------------------------------------------------End Class
4.- CAPTURAR EL
V ALOR DE UN
morenouni@gmail.com
Public Class DATAGRID_DATAGRID -------------------------------------------------------------------------------------Private Sub DATAGRID_DATAGRID_Load()Handles MyBase.Load Dim da As New SqlDataAdapter("SELECT ORDERID,CUSTOMERID,ORDERDATE FROM ORDERS", cn) Dim dt As New DataTable da.Fill(dt) dgordenes.DataSource = dt End 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 = Posicin de fila en la que estoy lblorden.Text = dgordenes.Item(0, dgordenes.CurrentCell.RowIndex).Value.ToString() lblcliente.Text = dgordenes.Item(1, dgordenes.CurrentCell.RowIndex).Value lblfecha.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)
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 Sub End 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
morenouni@gmail.com Imports System.Data Imports System.Data.SqlClient Public 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
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 Try End Sub ------------------------------------------------------------------
6.-TABL AS TEM POR ALES Permite n ma ntener e n mem oria u n con junto de datos similar a u na ta bla (filas y column as) y a travs de sus pr opied ades rea lizar las oper aciones de mante nimiento
morenouni@gmail.com
Imports System.Data Public 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 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 Posicion End 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 Try End Sub
--------------------------------------------------------------------------------
10
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 Sub End Class
7.- LLAM AR A UN A VENT ANA DE AYUD A Empl eand o una ventana como ayu da, p ara la seleccin d e un c digo.
11
CODIFICACION DEL FORMULARIO 1 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 Sub End Class ------------------------------------------------------------------
CODIFICACION DEL FORMULARIO 2 Imports System.Data Imports System.Data.SqlClient Public 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
12
------------------------------------------------------------------------------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 Nombre End Sub End Class