Vous êtes sur la page 1sur 22

'** SOn codigo de mi programa que funcionan y estan probados

'===============================================================================
===========================================
'Aplicar un filtro a la vista por defecto
' Suponiendo que el DataTable tiene una columna llamada Mes
DataSet1.DataTables(0).DefaultView.RowFilter = "Mes='" & TexBox1.Text & "'"

'==============================================================================
============================================
'Aplicar un filtro a Dataview de un Dataset Tipado
'==============================================================================
============================================
Dim d As DataView = New DataView(MAXTESTDataSet.labtrans)
d.RowFilter = "ID = 'JFA' "

'===============================================================================
===========================================
' ** Aplicar un filtro a un datagridview mientras se escribe
'===============================================================================
===========================================
'FORMA 1
Me.LabtransBindingSource.RemoveFilter()
Me.LabtransBindingSource.Filter = "DESCRIPCIÓN like '%" + TextBox1.Text + "%'"
GridMaster.DataSource = LabtransBindingSource
GridMaster.Refresh()
'FORMA 2
MAXTESTDataSet.Tables(0).DefaultView.RowFilter = "DESCRIPCIÓN like '%" + TextBo
x1.Text + "%'"
GridMaster.DataSource = MAXTESTDataSet.Tables("LABTRANS").DefaultView

'===============================================================================
===========================================
'** Cambiar la query a mano de un dataset no tipado
'===============================================================================
===========================================
daMaster.SelectCommand = New SqlCommand(query, basedatos.connexion_BBDD)
daMaster.Fill(ds, "LABTRANS")
masterBindingSource.DataSource = ds
masterBindingSource.DataMember = "LABTRANS"
Me.GridMaster.DataSource = masterBindingSource

'===============================================================================
===========================================
'** Pasar de campos con el enter
'===============================================================================
===========================================
Private Sub frmInformeManoObra_KeyDown(ByVal sender As System.Object, B
yVal e As System.Windows.Forms.KeyEventArgs) Handles MyBase.KeyDown
' Código en Visual Basic
' Tiene que estar la propiedad keypreview a TRUE
If e.KeyCode = Keys.Enter Then
'e.Handled = True
System.Windows.Forms.SendKeys.Send("{tab}")
End If
End Sub

'===============================================================================
===========================================
' Cambiar el Valor seleccionado de un combobox segun el datagridview
'===============================================================================
===========================================
If Len(GridMaster.Rows(e.RowIndex).Cells(0).Value) > 0 Then
Me.cmbOperario.SelectedValue = GridMaster.Rows(e.RowIndex).Cells(0).
Value
Else
Me.cmbOperario.SelectedValue = -1
End If

'===============================================================================
===========================================
' Añadir columnas en tiempo de ejecucion a un datagridview
'===============================================================================
===========================================

Dim dt As New Data.DataTable


dt.Columns.Add("Name")
dt.Columns.Add("Status")
dt.Rows.Add("A", "Paid")
dt.Rows.Add("B", "Unpaid")
DataGridView1.AutoGenerateColumns = False
DataGridView1.DataSource = dt
Dim Name As New DataGridViewTextBoxColumn
Name.DataPropertyName = "Name"
Dim Status As New DataGridViewComboBoxColumn
Status.DataPropertyName = "Status"
Status.Items.Add("Paid")
Status.Items.Add("Unpaid")

DataGridView1.Columns.Add(Name)
DataGridView1.Columns.Add(Status)

'===============================================================================
=====
' VALORES POR DEFECTO EN LAS LINEAS DEL DATAGRID VIEW
'===============================================================================
=====
Private Sub dataGridView1_DefaultValuesNeeded(ByVal sender As Object, _
ByVal e As System.Windows.Forms.DataGridViewRowEventArgs) _
Handles dataGridView1.DefaultValuesNeeded
With e.Row
.Cells("Region").Value = "WA"
.Cells("City").Value = "Redmond"
.Cells("PostalCode").Value = "98052-6399"
.Cells("Country").Value = "USA"
.Cells("CustomerID").Value = NewCustomerId()
End With
End Sub

'===============================================================================
=====
' BORRAR COLUMNAS DATAGRIDVIEW
'===============================================================================
=====
DataGridView1.Columns.Remove("Hour")

'===============================================================================
=====
' REFRESCAR DATAGRIDVIEW
'===============================================================================
=====
If (InsertarOrdendeCompra.ShowDialog() = DialogResult.OK) Then
'DataGridViewMaster.DataSource = Nothing
'DataGridViewMaster.DataBindings.Clear()
'OrdenesDeCompraCabecera.po.Clear()
Me.PoTableAdapter.ClearBeforeFill = vbTrue
Me.PoTableAdapter.Fill(Me.OrdenesDeCompraCabecera.po)
'PoBindingSource.Dispose()
'DataGridViewMaster.DataSource = PoBindingSource
'DataGridViewMaster.Refresh()

End If

-
'===============================================================================
===========================================
'Vincular un dataset con un campo de texto
'===============================================================================
===========================================
Me.TExtBox_ID.DataBindings.Add("Text", MAXTESTDataSet, "labtrans.labtransid")

'===============================================================================
===========================================
' Añadir un registro nuevo en la tabla
'===============================================================================
===========================================
Dim dt As DataTable = dsUsers.Tables("Users")
If State = FormState.adStateAddMode Then
' add a row
Dim newRow As DataRow
newRow = dt.NewRow()
dt.Rows.Add(newRow)
Else
'dt.Rows(0)("DateModified") = Now
'dt.Rows(0)("LastUserFK") = CurrUser.USER_PK
End If
With dt
.Rows(0)("UserID") = txtUsername.Text
.Rows(0)("Password") = (txtPassword).Text
.Rows(0)("CompleteName") = txtCompleteName.Text
.Rows(0)("Admin") = changeYNValue(CStr(Check1.CheckState))
daUsers.Update(dsUsers, "Users")
End With
HaveAction = True
If State = FormState.adStateAddMode Then
MsgBox("New record has been successfully saved.", MsgBoxStyle.Inform
ation)
If MsgBox("Do you want to add another new record?", MsgBoxStyle.Ques
tion + MsgBoxStyle.YesNo) = MsgBoxResult.Yes Then
ResetFields()
Else
Me.Close()
End If
Else
MsgBox("Changes in record has been successfully saved.", MsgBoxStyl
e.Information)
Me.Close()
End If
'===============================================================================
===========================================
'Abrir un nuevo formulario hijo
'===============================================================================
===========================================
Dim Customers As New frmCustomersList
Customers.MdiParent = Me
Customers.StartPosition = FormStartPosition.CenterScreen
Customers.Show()
'===============================================================================
===========================================
'Abrir un formulario en modo Modal
'===============================================================================
===========================================
Customers.ShowModal()

'===============================================================================
===========================================
'Comprobar si un formulario esta abiero
'===============================================================================
===========================================
Private Function IsOpen(ByVal nameForm As String) As Boolean
Dim childfrm As Form
Dim strName As String
Dim intLastIndex As Integer
For Each childfrm In Me.MdiChildren
strName = childfrm.GetType.ToString
intLastIndex = strName.LastIndexOf(".")
strName = Mid(strName, intLastIndex + 2, Len(strName) - intLastIndex
)
If LCase(strName) = LCase(nameForm) Then
childfrm.BringToFront()
Return True
End If
Next
Return False
End Function

'===============================================================================
===========================================
' Celda actul del datagridview
'===============================================================================
===========================================
' Referenciamos la celda actual
'
Dim dgvCell As DataGridViewCell = Me.DataGridView1.CurrentCell
'===============================================================================
==================================================
' Llenar un datagridview master/esclavo con datos a mano, no tipado
'===============================================================================
==================================================
Public sCnn As String = "data source = MARSHAL; initial catalog = MAXTEST; user
id = session1; password = 1111aA"
Public cnn As New SqlConnection(sCnn)
Public ds As New DataSet()
Private masterBindingSource As New BindingSource()
Private detailsBindingSource As New BindingSource()

Dim cmdMaster As New SqlCommand


cmdMaster.Connection = cnn
cmdMaster.CommandText = "SELECT userid,status FROM maxuser"
Dim daMaster As New SqlDataAdapter()
daMaster.SelectCommand = cmdMaster
daMaster.Fill(ds, "maxuser")

Dim cmdSlave As New SqlCommand


cmdSlave.Connection = cnn
cmdSlave.CommandText = "select person.personid,person.firstname, person.
lastname from person inner join maxuser on maxuser.userid=person.personid"
Dim daSlave As New SqlDataAdapter()
daSlave.SelectCommand = cmdSlave
daSlave.Fill(ds, "person")

ds.Relations.Add("Datos_Usuario", ds.Tables("maxuser").Columns("userid")
, ds.Tables("person").Columns("personid"))

Me.GridMaster.DataSource = masterBindingSource
Me.GridEsclavo.DataSource = detailsBindingSource
masterBindingSource.DataSource = ds
masterBindingSource.DataMember = "maxuser"
detailsBindingSource.DataSource = masterBindingSource
detailsBindingSource.DataMember = "Datos_Usuario"

'===============================================================================
==================================================
' Filtrar datasets tipados
' supongamos que estñs visualizando los datos de tu dataset en un datagrid
con un código
' como este:
'===============================================================================
==================================================
Dim ds as DataSet
'(Se carga el DataSet con un Fill)
Dim dt as DataTable = ds.Tables(0)
DataGrid1.DataSource = dt
' Bien, pues para ponerle filtros lo cambias asi:
Dim ds as DataSet
'(Se carga el DataSet con un Fill)
Dim dt as DataTable = ds.Tables(0)
Dim dv as DataView = dt.DefaultView
DataGrid1.DataSource = dv
' Como ves, el nico cambio es que ahora en lugar de conectar direc
tamente
' el DataTable con el DataGrid, hemos interpuesto entre medias un
DataView.
' Ahora, para filtrar los registros, no hace falta mñs que cambiar l
a
' propiedad Filter del DataView:
dv.Filter = "Campo1>'valor' AND Campo2<=otroValo
r"
' La sintaxis del string que se le pasa al Filter es similar a la
que
' usarías tras el WHERE de SQL si fueras a enviar la consulta a un s
ervidor,
' pero el DataView no la envýa a ning n sitio sino que la procesa en
memoria.
' Tambiùn existe un dv.Sort que te permite mostrar los registros en
otro
' orden.

'===============================================================================
==================================================
'Recorrer las filas del dataset
'===============================================================================
==================================================
For Each row As DataRow In dt.Rows
sTodasLasPersonas = String.Format("{0} de la {1}" _
" llamado {2}, {3} {4} documentado mediante su {5}" _
" número {6}, hijo de {7} y de {8}, nacido el {9}" _
" en {10} con domicilio en {11} .", _
CStr(row("TipoImplicacion")), _
CStr(row("UnidadRelacionada")), _
IIf(row("Nombre") Is DbNull.Value,"", row("Nombre")), _
CStr(row("PrimerApellido")), _
CStr(row("SegundoApellido")), _
CStr(row("TipoDocumentoIdentidad")), _
CStr(row("NumDocumento")), _
CStr(row("NomPadre")), _
CStr(row("NomMadre")), _
CStr(row("FechaNacimiento")), _
CStr(row("LugarNacimiento")), _
CStr(row("DomicilioActual"))
TxtUnidadesImplicadas.Text += & vbCrLf & sTodasLasPersonas

'===============================================================================
==================================================
'Pasar parámetros a unq query
'===============================================================================
==================================================
Dim query As String = "SELECT beneficiarios.nom_ben, programas.nom_prog,
sisben, comuna, barrio " & _
"FROM ben_prog INNER JOIN beneficiarios ON ben_prog.cedu
la_ben = beneficiarios.cedula_ben " & _
"AND ben_prog.cedula_ben = beneficiarios.cedula_ben INNE
R JOIN programas " & _
"ON ben_prog.cod_prog = programas.cod_prog WHERE (RADIOB
UTTONSELECCIONADO = @param)"
Dim cmd As New SqlCommand(query, cnn)
cmd.Parameters.AddWithValue("@param", TextBox1.Tex)
Dim da As New SqlDataAdapter(cmd)
Dim dt As New DataTable
da.Fill(dt)
DataGridView1.DataSource = dt
'===============================================================================
==================================================
' Valor seleccionado de un datagridview
'===============================================================================
==================================================
Dim Variable As Integer = DataGridView1.Item(0, DataGridView1.CurrentRow.
Index).Value
'0 : Me Indica el Indice de la columna.
'DataGridView1.CurrentRow.Index : Me indica la fila seleccionada
'Value : El valor de la celda.

'******************************************************************************
*************************
' Eliminar una linia del DataGrid
'******************************************************************************
*************************
Me.dataGridView1.Rows.Remove(Me.dataGridView1.CurrentRow)

'******************************************************************************
************************
' Dimensionar las columnas del DataGrid para ajustalarlas al contenido cargado
'******************************************************************************
*************************
Me.dataGridView1.AutoResizeColumns(DataGridViewAutoSizeColumnsMode.AllCells
ExceptHeader)

' Estilo del datagridview


Me.dataGridView1.Dock = DockStyle.Fill 'dock del dataGrid

'*******************************************************************************
******************+
' Sacar la datatable de un dataset
' http://www.programmersheaven.com/2/Les_VBNET_13_p3
'*******************************************************************************
*********************
dataTable = ds.Tables("prog")

'*******************************************************************************
******************+
' Sacar la datatable de un bindingsource
'*******************************************************************************
*********************
Dim dt As DataTable = formDataSource.DataSource.tables("PO")
'****************************************************************************
**************************
' Cargar Datos, borrar linea, guardar datos y actualizar en un Datagridview
'*******************************************************************************
***********************
Private dataGridView1 As New DataGridView() 'Llamar al constructor el dataGr
idView
Private bindingSource1 As New BindingSource() 'Crear el enlace de origen
Private AdaptadorDeDatos As New OleDb.OleDbDataAdapter 'Crear el Adaptador d
e datos
'' Al cargar el Form
Private Sub Form1_Load(ByVal sender As Object, ByVal e As System.EventArgs)
Handles Me.Load
Me.dataGridView1.DataSource = Me.bindingSource1 'Enlazar el DataG
rid con el 'bindingsource
LeerDatos("select * from Productos") 'obtener los datos (Sub 'Lee
rDatos')
End Sub
''Boton de cargar datos
Private Sub Cargar(ByVal sender As Object, ByVal e As System.EventArgs) Hand
les BotonCargarDatos.Click
LeerDatos(Me.AdaptadorDeDatos.SelectCommand.CommandText)
End Sub
''Boton de actualizar los datos
Private Sub Actualizar(ByVal sender As Object, ByVal e As System.EventArgs)
Handles BotonActualizarDatos.Click
' Actualizar la base de datos con los cambios efectuados en el DataGrid
Me.AdaptadorDeDatos.Update(CType(Me.bindingSource1.DataSource, DataTable
))
End Sub
''Boton de Eliminar fila
Private Sub Columna_Click(ByVal sender As Object, ByVal e As System.EventArg
s) Handles BotonEliminarFila.Click
' Eliminar una linia del DataGrid
Me.dataGridView1.Rows.Remove(Me.dataGridView1.CurrentRow)
End Sub

Private Sub LeerDatos(ByVal selectCommand As String)


Try
' Especificar un 'connection string' valido
' En este caso origen de la carpeta de la aplicacion BD1.mdb
Dim connectionString As String = "Provider=Microsoft.Jet.OLEDB.4.0;Data Sou
rce=|DataDirectory|\bd11.mdb"
' Crear un nuevo adaptador de datos vasado en el 'query' especificado
Me.AdaptadorDeDatos = New OleDb.OleDbDataAdapter(selectCommand, connectionS
tring)
' Crear un 'commandbuilder' que genere el SQL Update/Insert/Delete
' segun el 'selectcommand', usado para actualizar la BD
Dim commandbuilder As New OleDb.OleDbCommandBuilder(Me.AdaptadorDeDatos)
' Llenar la tabla con los datos y enlazarza con el 'bindingsource'
Dim tabla As New DataTable()
Me.AdaptadorDeDatos.Fill(tabla)
Me.bindingSource1.DataSource = tabla
' Dimensionar las columnas del DataGrid para ajustalarlas al contenido carg
ado
Me.dataGridView1.AutoResizeColumns(DataGridViewAutoSizeColumnsMode.AllCells
ExceptHeader)
Catch ex As Exception
MessageBox.Show("Excepcion al leer los datos:" + ex.Message)
End Try
End Sub

'-------------------------------------------------------------------------------
------------------------------
'Recorrer lios valores
'http://www.programmersheaven.com/2/Les_VBNET_13_p4
'******************************************************************************
*************************
currRec = 0
totalRec = dataTable.Rows.Count
txtArticleId.Text = dataTable.Rows(currRec)("artId").ToString()
txtArticleTitle.Text = dataTable.Rows(currRec)("title").ToString()
txtArticleTopic.Text = dataTable.Rows(currRec)("topic").ToString()
txtAuthorId.Text = dataTable.Rows(currRec)("authorId").ToString()
txtAuthorName.Text = dataTable.Rows(currRec)("name").ToString()
txtNumOfLines.Text = dataTable.Rows(currRec)("lines").ToString()
txtDateOfPublishing.Text = dataTable.Rows(currRec)("dateOfPublishing").T
oString()
Private Sub btnNext_Click(ByVal sender As System.Object, ByVal e
As System.EventArgs) Handles btnNext.Click
currRec += 1
If currRec >= totalRec Then
currRec = 0
End If
FillControls()
End Sub

'-------------------------------------------------------------------------------
----------------------------------------------------
'Formulario maestro - detalle
'-------------------------------------------------------------------------------
----------------------------------------------------
Imports system.Data.SqlClient
Public Class Form3
' cadena de conexión
Private Const cs As String = "Data Source=cpalmacen;" & _
"Initial Catalog=cosmo;" & _
"Integrated Security=SSPI"
' campo relacionado para las dos tablas
' '''''''''''''''''''''''''''''''''''''''''''''''''''''
Private Const campo_Relacionado As String = "Id"
Private WithEvents bmbase As BindingManagerBase
Private Sub Form3_Load(ByVal sender As System.Object, ByVal e As Sys
tem.EventArgs) Handles MyBase.Load
' crear nueva conexión
Dim conexion As New SqlConnection(cs.ToString)
Try
' abrir la conexión con la base de datos
conexion.Open()
' Nuevo objeto Dataset
Dim DataSet As New DataSet
' ''''''''''''''''''''''''''''''''''''''''''''''''''''
' Textbox maestro
' ''''''''''''''''''''''''''''''''''''''''''''''''''''
Dim Adaptador As New SqlDataAdapter()
Dim comando As New SqlCommand
With comando
' Asignar el sql para seleccionar los datos de la tabla
Maestro
.CommandText = "SELECT id, razon, fecha, no_control, ti
po, observaciones FROM m_transaccion"
.Connection = conexion
End With
With Adaptador
.SelectCommand = comando
' llenar el dataset
Adaptador.Fill(DataSet, "m_transaccion")
End With
TextBox1.DataBindings.Add("text", DataSet, "m_transaccion.id
")
TextBox2.DataBindings.Add("text", DataSet, "m_transaccion.ra
zon")
TextBox3.DataBindings.Add("text", DataSet, "m_transaccion.fe
cha")
TextBox4.DataBindings.Add("text", DataSet, "m_transaccion.no
_control")
TextBox5.DataBindings.Add("text", DataSet, "m_transaccion.ti
po")
TextBox6.DataBindings.Add("text", DataSet, "m_transaccion.ob
servaciones")
' ''''''''''''''''''''''''''''''''''''''''''''''''''''
' DataGridView detalle
' ''''''''''''''''''''''''''''''''''''''''''''''''''''
' cadena sql para cargar la tabla pedidos
comando.CommandText = "SELECT id, cod, cantidad FROM s_tra
nsaccion"
Adaptador.SelectCommand = comando
' llenar el dataset
Adaptador.Fill(DataSet, "s_transaccion")

' Agregar la relación ( campo en común : campo_Relacionado = idC


liente )
' ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
''''''''''''''
DataSet.Relations.Add("mi_Relacion", DataSet.Tables("m_trans
accion").Columns(campo_Relacionado), DataSet.Tables("s_transaccion").Columns(cam
po_Relacionado))
' Establecer el DataSource y el DataMember para el DataGridvie
w Detalle
DataGridView1.DataSource = DataSet
DataGridView1.DataMember = "m_transaccion.mi_Relacion"
DataGridView1.SelectionMode = DataGridViewSelectionMode.
FullRowSelect
' cerrar la conexíón
With conexion
If .State = ConnectionState.Open Then
.Close()
End If
.Dispose()
End With
bmbase = Me.BindingContext(DataSet, "m_transaccion")
Catch ex As Exception
MsgBox(ex.Message.ToString)
End Try
End Sub
End Class

'===============================================================================
===========================================
' ENLAZAR CONTROLES
'===============================================================================
===========================================
Option Explicit On
Option Strict On
' espacios de nombres
' ''''''''''''''''''''''''''''''''''
Imports System.Data.SqlClient ' cliente sql
Public Class Form1
' variable con evento para el objeto BindingManagerBase
Private WithEvents bmBase As BindingManagerBase
' cadena de conexión ( base de datos demo_bd)
Const cs As String = "server=(local)\SQLEXPRESS;integrated security=sspi;dat
abase="
Const catalogo As String = "bd"
' DataSet a nivel de formulario para almacenar los datos
Dim Dataset As DataSet
Private Sub Form1_Load( _
ByVal sender As System.Object, _
ByVal e As System.EventArgs) Handles MyBase.Load
Try
'Instanciar nueva conexión
Using cn As New SqlConnection(cs & catalogo)
' Instrucción Sql para seleccionar los registros de la tabla conta
ctos
Dim sql As String = "SELECT * FROM contactos"
' Nuevo DataAdapter
Dim DataAdapter As New SqlDataAdapter(sql, cn)
' Nuevo ds
Dataset = New DataSet
' llenarlo
DataAdapter.Fill(Dataset, "contactos")
' enlazar los controles textBox con el Dataset e indicarle
' el DataMember para poder visualizar cada campo
' '''''''''''''''''''''''''''''''''''''''''''''''''''''''''
' campo NOMBRE para el textbox1
TextBox1.DataBindings.Add("text", Dataset, "contactos.Nombre")
' Campo APELLIDO para el textbox2
TextBox2.DataBindings.Add("text", Dataset, "contactos.Apellidos"
)
bmBase = Me.BindingContext(Dataset, "contactos")
If bmBase.Count > 0 Then
bmBase.Position = bmBase.Count
bmBase.Position = 0
End If
End Using
Catch exsql As SqlException
MsgBox(exsql.Message.ToString, MsgBoxStyle.Critical, "se produjo un
error")
Catch ex As Exception
MsgBox(ex.Message.ToString, MsgBoxStyle.Critical, "se produjo un err
or")
End Try
btnPrev.Text = "Anterior"
btnNext.Text = "Siguiente"
btnUpdate.Text = "Guardar"
End Sub
' Siguiente registro
Private Sub Button2_Click( _
ByVal sender As System.Object, _
ByVal e As System.EventArgs) _
Handles btnNext.Click
' Incrementar la propiedad Position del BindingManagerBase
bmBase.Position = bmBase.Position + 1
End Sub
' registro anterior
Private Sub button1_Click( _
ByVal sender As System.Object, _
ByVal e As System.EventArgs) Handles btnPrev.Click
' decrementar la propiedad Position del BindingManagerBase
bmBase.Position = bmBase.Position - 1
End Sub
' Botón para actualizar y guardar los cambios
' ''''''''''''''''''''''''''''''''''''''''''''''
Private Sub Button3_Click( _
ByVal sender As System.Object, _
ByVal e As System.EventArgs) Handles btnUpdate.Click
' Crear nuevo objeto OleDbConnection
Using cn As New SqlConnection(cs & catalogo)
bmBase.EndCurrentEdit()
Try
' Abrir la conexión anterior
cn.Open()
' crear un nuevo adaptador de datos para el Dataset
Dim DataAdapter As New SqlDataAdapter("select * from contactos",
cn)
' Llenar el dataset
DataAdapter.Fill(Dataset)
' CommandBuilder para poder actualizar los cambios en la base de
datos
Dim cmdUpdate As New SqlCommandBuilder(DataAdapter)
DataAdapter.UpdateCommand = cmdUpdate.GetUpdateCommand
' Ejecutar el método Update del DataAdapter para actualizar
DataAdapter.Update(Dataset, Dataset.Tables(0).TableName)
MsgBox("Datos actualizados", MsgBoxStyle.Information, "Guardar")
' Excepciones
' '''''''''''''''''''''''''''''''''''''''''''
Catch exSql As SqlException
MsgBox(exSql.Message.ToString, MsgBoxStyle.Critical, "Se produjo
un error")
Catch ex As Exception
MessageBox.Show(ex.Message, "Se produjo un error")
End Try
End Using

End Sub
' evento PositionChanged del BindingManagerBase para saber la posición actual
y el total de filas
' ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
''''
Private Sub bMgr_PositionChanged(ByVal sender As Object, ByVal e As System.E
ventArgs) Handles bmBase.PositionChanged
Me.Text = "Registro: " & bmBase.Position.ToString & " / " & bmBase.Count
.ToString
End Sub
End Class

'===============================================================================
===========================================
'Establcer transacciones
'===============================================================================
===========================================
ption Explicit On
Option Strict On
Imports System.Data.SqlClient
Public Class Form1
Private Sub Form1_Load( _
ByVal sender As System.Object, _
ByVal e As System.EventArgs) Handles MyBase.Load
Dim cs As String = "server=(local)\SQLEXPRESS;integrated security=sspi;d
atabase=catalogo"
'Instanciar nuevo SqlTransaction
Dim objTransac As SqlTransaction = Nothing
Dim cn As New SqlConnection(cs)
Try
' abrir una nueva conexión a la bd
cn.Open()
' Establecer e iniciar la nueva transacción con BeginTransaction
objTransac = cn.BeginTransaction
' comando 1
' '''''''''''''''''''''''''''''''''''''''''''''
' Inicializar nuevo SqlCommand
Dim cmdInert As New SqlCommand("Insert Into .... )", cn)
' Establecer la transacción para el Insert
cmdInert.Transaction = objTransac
cmdInert.ExecuteNonQuery() ' ejecutar

' comando 2
' '''''''''''''''''''''''''''''''''''''''''''''
Dim cmdUpdate As New SqlCommand("Update .... ", cn)
' establecer la transacción para el comando Update
cmdUpdate.Transaction = objTransac
cmdUpdate.ExecuteNonQuery() ' ejecutar
' Confirmar la transacción a la base de datos con el método Commit
objTransac.Commit()
' errores
Catch ex As Exception
' cancelar la trnsacción en caso de error en el
'segundo comando con el método Rollback
If Not objTransac Is Nothing Then
objTransac.Rollback() 'deshacer
End If
MsgBox(ex.Message.ToString)
Finally
' cerrar la conexión
If Not cn Is Nothing Then
If cn.State = ConnectionState.Open Then
cn.Close()
End If
End If
End Try
End Sub
End Class

'===============================================================================
=====
' Sacar del dataview de un Dataset o de un Datatable
'===============================================================================
==
Dim dataViewTree As DataView
Dim SQLcmd As New SqlCommand
Dim SQLda As New SqlDataAdapter
Dim nodo As TreeNode
Dim SQLDataTable As DataTable

SQLcmd.Connection = basedatos.connexion_BBDD
SQLcmd.CommandText = " select * from asset where asset.glaccount = '" &
CboProyecto.SelectedValue &"'"
SQLda.SelectCommand = SQLcmd
SQLda.Fill(DataSet1, "asset")
SQLDataTable = DataSet1.Tables("asset")
dataViewTree = SQLDataTable.DefaultView
'Desde el dataset directametne sin usar el datatble
dataViewTree = New DataView(DataSet1.Tables("asset"))
dataViewHijos.RowFilter = dataSetArbol.Tables("TablaArbol").Columns("Ide
ntificadorPadre").ColumnName + " = " + indicePadre.ToString()

'===============================================================================
=======================================================
' Filtrar con parametros en la SQL y NULL
'===============================================================================
=========================================================
'la consulta podrias ser
' SELECT * FROM Facturas WHERE ((@NCliente IS NULL) OR (IdCliente = @NCliente)
)
'de esta forma cuando lo invocas pasarias el valor para filtrar o ub DbNull.Valu
e al parametro
'la invocacion seria algo como esto
'si se le pasa DbNull.Value devuelve todos los registros
Using cnn As New SqlConnection(connstring)
Dim query As String = "SELECT * FROM Facturas WHERE ((@NCliente IS NULL) OR
(IdCliente = @NCliente))"
Dim cmd As New SqlCommand(query , oConn)
If cmbCliente.SelectedIndex = -1 Then
cmd.Parameters.AddWithValue("@NCliente", DbNull.Value)
Else
cmd.Parameters.AddWithValue("@NCliente", CInt(cmbCliente.Text))
End If
Dim da As New SqlDataAdapter(cmd)
Dim dt As New DataTable
da.Fill(dt)
DataGridView1.DataSource = dt
End Using

'===============================================================================
=====
' TREEVIEW
'===============================================================================
=====
TreeView1.Nodes.Remove(TreeView1.SelectedNode)
' Clears all nodes.
TreeView1.Nodes.Clear()
' Nodo seleccionado
TreeView1.SelectedNode.Text
' añadir niveles
nodo = TreeView1.Nodes.Add("Ordenes de Trabajo")
nodo = nodo.Nodes.Add("kkk")
nodo.Nodes.Add("aaa")
' numero de nodos
TreeView1.SelectedNode.Nodes.Count

http://www.mundoprogramacion.com/colabora/NET2005/serge_llenar_un_treeview_datas
et_vb.htm

'===============================================================================
=====
' Añadir un campo calculado a un DataTable
'http://www.mindfiresolutions.com/Getting-the-Calculated-value-for-a-new-column-
of-a-DataTable-in-NET-696.php
'===============================================================================
=====

Code:
DataTable dtItems = new DataTable();
//Add three columns to the DataTable
dtItems.Columns.Add("ItemName", typeof(string));
dtItems.Columns.Add("Price", typeof(int));
dtItems.Columns.Add("Quantity", typeof(int));
//Add rows to the DataTable
dtItems.Rows.Add("Item1", 100, 1);
dtItems.Rows.Add("Item2", 200, 2);
dtItems.Rows.Add("Item3", 300, 3);

//Add a new Column with the Calculate Value


dtItems.Columns.Add("Total", typeof(int), "Price*Quantity");
//Set the DataTable as DataSource of the GridView
grdItemsList.DataSource = dtItems;

'-------------------------------------------------------------
'Resta en Horas
Resta = DateDiff("n","13:10","15:40")

'----------------------------- CRYSTAl REPORTS ---------------------------------


---------------------------------------------------------------
http://social.msdn.microsoft.com/Forums/es-ES/repdeves/thread/59b6edc4-fa49-4b20
-96d8-844ac935137d
Crear Reporte de Una sola Tabla

'1.Crear un formulario.'
'
'2.Agregar al formulario, el cristal report viewer.
'
'3.Generar un archivo de reporte del cristal report .rpt
'
'4.Agregar un DataSource. (Al crear un datasource se va a crear una dataset)
'
'5.Crear el Dataset, elegir tablas que entraran al dataset, luego les pedirá reali
zar las relaciones entre las tablas que seleccionaron, pueden eliminar los links
creados por defecto o realizar las relaciones de las tablas.
'
'6.En la parte izquierda la pantalla se abrirá el field Explorer(Explorador de cam
pos), ahí le dan botón derecho sobre database fields(Campo de Base de Datos), luego
entran a database expert, se abrirá una pantalla, entran a proyect data, luego a a
do.net datasets, y ahí aparece las tablas que seleccionaron para el dataset elijan
una para que entre al reporte.
'
'7.En el field Explorer en database fields aparecera la tabla que elijieron, lo
unico que hacen es jalar los campos de la base hacia el reporte.(Hacer un clic s
obre el campo y sin soltar ese clic lo llevan hacia el reporte)
'
'8.Pueden agregarle titulos, etc. Con eso ya se tendría diseñado el reporte. Solo fa
lta la parte de la codificacion.
'
'9.Al formulario que crearon anteriormente la dan doble click para que ingrese a
la codificación de vb.net.
'
'10. las librería que deben importar son dependiendo a la base que se conectan en
este caso lo haré con Oracle:
imports system.data
imports system.oledb
'11. declaran variables puclicas:
dim con as new oledbconnection
dim ds as new dataset
dim da as new oledbdataadapter
dim dt as datatable
dim comando as new oledbcommand
'12. En el procedimiento de LOAD colocan el siguiente codigo:
Dim reporte as new nombre_reporte
Dt.clear()
Dim conn as string=”Provider=OraOLEDB.Oracle.1;Persist Security Info=False;User ID
=nombre_base;Password=contraseña;Data Source=cadena”
Con=new oledbconnection(conn)
Commando.connection=con
Commando.comandtext=”select * from nombre_tabla_de_databasefield”
Da = new oledbdataadapter(commando)
Da.fill(dt)
Reporte.setdatasource(dt)
Reporte.refresh()
Crystalreportviewer1.reportsource=report
Crystalreportviewer1.refresh()
'13. Ejecutan el programa y con esto verán que el reporte funciona.

'Crear Reporte con sentencia SQL.

'1.Crear un formulario.
'2.Agregar al formulario, el cristal report viewer.
'3.Generar un archivo de reporte del cristal report .rpt
'
'4.Agregar un DataSource. (Al crear un datasource se va a crear una dataset)
'
'5.Crear el Dataset, elegir tablas que entraran al dataset, luego les pedirá reali
zar las relaciones entre las tablas que seleccionaron, pueden eliminar los links
creados por defecto o realizar las relaciones de las tablas.
'
'6.En la parte derecha de la pantalla aparecerá el dataset que crearon, hacen dobl
e click sobre el dataset, se abrirá el diseñador. Hacen botón derecho sobre cualquier
lugar del diseñador y agregan un dataadapter les aparecerá el wizard y al final les
pedirá que agreguen un sql, ponen el sql sin campos específicos. Ej.
'
'Select a.nombre,p.producto,p.precio
'from cliente a, producto p
'Where a.codigo_cli=p.codigo_cli
'Order by a.nombre
'No como:
'Select a.nombre,p.producto,p.precio
'From cliente a, producto p
'Where a.codigo_cli=p.codigo_cli and
'Nombre=’Jose’ and fecha between ’10-05-07’ and ’12-05-07’
Order by a.nombre
7.Le ponen un nombre al dataadapter
8.En la parte izquierda la pantalla se abrirá el field Explorer (Explorador de ca
mpos), ahí le dan botón derecho sobre database fields (Campo de Base de Datos), lueg
o entran a database expert, se abrirá una pantalla, entran a proyect data, luego a
ado.net datasets, y ahí aparece las tablas que seleccionaron para el dataset elij
an el dataadapter que crearon para que entre al reporte.
9.En el field Explorer en database fields aparecerá la tabla que eligieron, lo únic
o que hacen es jalar los campos de la base hacia el reporte.(Hacer un clic sobre
el campo y sin soltar ese click lo llevan hacia el reporte)
10. Pueden agregarle títulos, etc. Con eso ya se tendría diseñado el reporte. Solo f
alta la parte de la codificación.
11. Al formulario que crearon anteriormente la dan doble click para que ingres
e a la codificación de vb.net.
12. las librería que deben importar son dependiendo a la base que se conectan en
este caso lo haré con Oracle:
imports system.data
imports system.oledb
13. declaran variables puclicas:
dim con as new oledbconnection
dim ds as new dataset
dim da as new oledbdataadapter
dim dt as datatable
dim comando as new oledbcommand
14. En el procedimiento de LOAD colocan el siguiente codigo:
Dim reporte as new nombre_reporte
Dt.clear()
Dim conn as string=”Provider=OraOLEDB.Oracle.1;Persist Security Info=False;User ID
=nombre_base;Password=contraseña;Data Source=cadena”
Con=new oledbconnection(conn)
Commando.connection=con
Commando.comandtext=”aqui meten el sql completo con campos específicos y todo”
Da = new oledbdataadapter(commando)
Da.fill(dt)
Reporte.setdatasource(dt)
Reporte.refresh()
Crystalreportviewer1.reportsource=report
Crystalreportviewer1.refresh()
15. Ejecutan el programa y con esto verán que el reporte funciona.

Crear Reporte con sentencia SQL y parámetros

1.Crear un formulario.
2.Agregar al formulario, el cristal report viewer.
3.Generar un archivo de reporte del cristal report .rpt
4.Agregar un DataSource. (Al crear un datasource se va a crear una dataset)
5.Crear el Dataset, elegir tablas que entraran al dataset, luego les pedirá reali
zar las relaciones entre las tablas que seleccionaron, pueden eliminar los links
creados por defecto o realizar las relaciones de las tablas.
6.En la parte derecha de la pantalla aparecerá el dataset que crearon, hacen dobl
e click sobre el dataset, se abrirá el diseñador. Hacen botón derecho sobre cualquier
lugar del diseñador y agregan un dataadapter les aparecerá el wizard y al final les
pedirá que agreguen un sql, ponen el sql sin campos específicos. Ej.
Select a.nombre,p.producto,p.precio
From cliente a, producto p
Where a.codigo_cli=p.codigo_cli
Order by a.nombre
No como:
Select a.nombre,p.producto,p.precio
From cliente a, producto p
Where a.codigo_cli=p.codigo_cli and
Nombre=’Jose’ and fecha between ’10-05-07’ and ’12-05-07’
Order by a.nombre
7.Le ponen un nombre al dataadapter
8.En la parte izquierda la pantalla se abrirá el field Explorer (Explorador de ca
mpos), ahí le dan botón derecho sobre database fields (Campo de Base de Datos), lueg
o entran a database expert, se abrirá una pantalla, entran a proyect data, luego a
ado.net datasets, y ahí aparece las tablas que seleccionaron para el dataset elij
an el dataadapter que crearon para que entre al reporte.
9.En el field Explorer en database fields aparecerá la tabla que eligieron, lo únic
o que hacen es jalar los campos de la base hacia el reporte.(Hacer un clic sobre
el campo y sin soltar ese click lo llevan hacia el reporte)
10. En el lado izquierdo de la pantalla, en Field Explorer, elijan field param
eters, ahí agregan los parámetros que desean.
11. Pueden agregarle títulos, etc. Con eso ya se tendría diseñado el reporte. Solo f
alta la parte de la codificación.
12. Al formulario que crearon anteriormente la dan doble click para que ingres
e a la codificación de vb.net.
13. las librería que deben importar son dependiendo a la base que se conectan en
este caso lo haré con Oracle:
imports system.data
imports system.oledb
14. declaran variables puclicas:
dim con as new oledbconnection
dim ds as new dataset
dim da as new oledbdataadapter
dim dt as datatable
dim comando as new oledbcommand
15. En el procedimiento de LOAD colocan el siguiente codigo:
Dim reporte as new nombre_reporte
Dt.clear()
Dim conn as string=”Provider=OraOLEDB.Oracle.1;Persist Security Info=False;User ID
=nombre_base;Password=contraseña;Data Source=cadena”
Con=new oledbconnection(conn)
Commando.connection=con
Commando.comandtext=”aqui meten el sql completo con campos específicos y todo”
Da = new oledbdataadapter(commando)
Da.fill(dt)
Reporte.setdatasource(dt)
Reporte.refresh()
Reporte.SetParameterValue(“nombre_parametro1_que_crearon”,campo_de_texto)
Reporte.SetParameterValue(“nombre_parametro2_que_crearon”,campo_de_texto)
Crystalreportviewer1.reportsource=report
Crystalreportviewer1.refresh()
16. Ejecutan el programa y con esto verán que el reporte funciona.

Vous aimerez peut-être aussi