Sei sulla pagina 1di 44

Private Sub Form_Load() On Error GoTo aviso If cn.State = 1 Then cn.Close conectarse cmd.ActiveConnection = cn cmd.CommandType = adCmdText cmd.

CommandText = "select * from usuarios" 'rs.Open "select * from usuarios", cn, adOpenKeyset, adLockOptimistic Set rs = cmd.Execute rs.Close rs.CursorLocation = adUseClient rs.CursorType = adOpenStatic rs.LockType = adLockReadOnly rs.Open 'Set rs = cmd.Execute Set DataGrid1.DataSource = rs total = rs.RecordCount Label1.Caption = "Total " & total & " Usuarios " Call formato

DataGrid1.Col = 7 ' Suponemos columna del importe For I = 1 To DataGrid1.ApproxCount DataGrid1.Col = 7 DataGrid1.Row = I Valor = CCur(DataGrid1.Text) Total = Total + Valor Next I Text1 = Format(Total, "###,###,###.###.00") End Sub

1. Dim i As Long 2. For i = 0 To DataGrid1.ApproxCount - 1 3. MsgBox DataGrid1.Columns(3).CellValue(DataGrid1.GetBookmark(i)) 4. DoEvents 5. Next

go:
1. ' SI QUIERES SUMAR TODAS LAS FILAS 2. With Adodc1.Recordset 3. Do while not .Eof 4. Total = Total + !ImporteaSumar ' Donde ImporteaSumar es el nombre del Campo 5. 'de tu tabla que conectaste con Adodc1 y se ve en DataGrid1 6. .Movenext 7. Loop 8. End With 9. 'Aqui tienes como sumar el Grid, como veras no hace falta usar el Grid 10. 'para sumar, sino el Recordset. Este Recorset es el que contiene los Datos 11. 'que ves en tu DataGrid 12. '-------------------------------------------------------------------13. 'Ahora si lo que quieres es SUMAR alguna filas seleccionadas en el 14. 'DataGrid se procede primero a Seleccionar (haciendo click con el mouse' 15. 'en el primer registro y luego control click en los registros siguiente) 16. 'La suma se realiza en el orden elegido.Ej. si primero eliges el registro 4, luego 17. 'el 82, luego el 40, luego el 22, etc... se suman en ese ORDEN y para sumar 18. ' se utiliza el programa siguiente. 19. 20. For Each varbmk In DataGrid1.SelBookmarks 21. Adodc1.Recordset.Bookmark = varbmk 22. If IsNull(Adodc1.Recordset.Fields("ImporteaSumar")) Then 23. TotalTransitorio = 0 24. Else 25. TotalTransitorio = Adodc1.Recordset.Fields("ImporteaSumar") 26. End If 27. Total = Total +TotalTransitorio 28. 29. Next

acceder a la totalidad del registro en combo1.itemdata(combo1.listindex)

Cdigo:
sub form_load Dim Rec as adodb.Recordset Set Cn=new adodb.Connection Cn.open " ... connectionstring ..." Set Rec=new adodb.Recordset Rec.open "select codigo, ape1+" "+nombre as NombreTotal where poblacion='Madrid' order by ape1" do while not rec.eof combo1.additem "" & rec!NombreTotal combo1.itemdata(combo1.newindex) = "" & rec!codigo rec.movenext loop

Diferencias conceptuales
Enlace de datos
El control DataGridView de Visual Basic 2005 no requiere mtodos ni eventos especficos de datos, ya que todas las acciones se realizan a travs del origen de datos. Debido a esta separacin de la presentacin y la funcionalidad de los datos, el origen de datos se puede cambiar con o sin entrada de interfaz de usuario. Asimismo, mltiples controles enlazados al mismo origen de datos siempre permanecern sincronizados.

Desplazamiento
Ya no son necesarias las propiedades para visualizar y desplazarse en el control DataGrid (como TabAction, EnterAction, AllowArrows, WrapCellPointer y Scrollable). Por ejemplo, la cuadrcula funciona como si la propiedad Scrollable se estableciese en True: si existen ms datos que mostrar, aparece automticamente una barra de desplazamiento. De manera predeterminada, los desplazamientos por la cuadrcula siguen el modelo de Excel, es decir, el usuario se puede desplazar hacia delante con la tecla TAB y hacia atrs con la combinacin de teclas MAYS+TAB. Para obtener ms informacin, vea Control predeterminado de teclado y mouse (ratn) en el control DataGridView de formularios Windows Forms.

Propiedad Caption
En Visual Basic 6.0 la propiedad Caption se utilizaba para mostrar una barra de ttulo sobre la cuadrcula; si se dejaba vaca, no se mostraba ninguna barra de ttulo. El control DataGridView de Visual Basic 2005 no admite barra de ttulo. Sin embargo, puede lograr el mismo efecto mediante un control Label.

Formato de datos
En Visual Basic 6.0, el formato de datos en el control DataGrid se controla utilizando la propiedad DataFormat y un objeto StdDataFormat. El formato se aplica columna por columna. En el control DataGridView de Visual Basic 2005, el formato se realiza mediante la propiedad Format de un objeto DataGridViewCellStyle. El formato se puede aplicar a celdas, columnas o filas individuales. Para obtener ms informacin, vea Formato de datos en el control DataGridView de formularios Windows Forms.

Propiedad hWndEditor
En Visual Basic 6.0, para pasar el identificador de ventana asignado a una ventana de edicin del control DataGrid a una llamada a la API de Windows se utiliza la propiedad hWndEditor.

El control DataGridView de Visual Basic 2005 no tiene un identificador de la ventana independiente en modo de edicin; en su lugar, utilice la propiedad Handle del control DataGridView o cualquier control de edicin incrustado.

Propiedad MarqueeStyle
En Visual Basic 6.0, la propiedad MarqueeStyle controla el aspecto de una celda o fila seleccionada cambiando el estilo de borde, invirtiendo los colores de primer plano y de fondo o invocando una ventana de edicin. No existe ningn equivalente directo del control DataGridView en Visual Basic 2005. Sin embargo, puede lograr el mismo efecto utilizando una combinacin de propiedades SelectionMode, CellBorderStyle y Format. Para obtener ms informacin, vea Modos de seleccin en el control DataGridView de formularios Windows Forms.

Propiedades SelLength, SelStart, SelText


En el control DataGrid de Visual Basic 6.0, cuando una celda pasa al modo de edicin se pueden utilizar las propiedades SelLength, SelStart y SelText para establecer la posicin inicial del smbolo de intercalacin o para resaltar una parte del texto en la celda. En el control DataGridView de Visual Basic 2005 ya no existen estas propiedades. Las celdas del control DataGridView se basan en el control TextBox; si agrega cdigo al controlador de eventos EditingControlShowing, se puede tener acceso a las propiedades SelectionLength, SelectionStart y SelectedText del control subyacente.

Dividir vistas
El control DataGrid de Visual Basic 6.0 admite la divisin de vistas, que permite al usuario mostrar los mismos datos uno al lado de otro. El objeto Split y las propiedades Split, Splits y TabAcrossSplits controlan esta capacidad de mostrar una vista dividida. En el control DataGridView de Visual Basic 2005 ya no existen estas propiedades. Sin embargo, puede lograr el mismo efecto mediante uno o ms controles SplitContainer y varios controles DataGridView. Para duplicar la funcionalidad de la propiedad TabAcrossSplits, puede utilizar la propiedad StandardTab del control DataGridView.

Cambios de cdigo para el control DataGrid


En el cdigo siguiente se muestran las diferencias entre Visual Basic 6.0 y Visual Basic 2005 respecto al modo de resaltar texto de una celda cuando un usuario selecciona la celda en un control DataGridView.
' Visual Basic 6.0 Private Sub DataGrid1_Click() DataGrid1.SelStart = 1

DataGrid1.SelLength = DataGrid1.Text MsgBox("The selected text is " & DataGrid1.SelText) End Sub

VB
' Visual Basic 2005 Private Sub DataGridView1_EditingControlShowing( _ ByVal sender As Object, ByVal e As System.Windows.Forms. _ DataGridViewEditingControlShowingEventArgs) _ Handles DataGridView1.EditingControlShowing CType(e.Control, TextBox).SelectionStart = 0 CType(e.Control, TextBox).SelectionLength = Len(CType(e.Control, _ TextBox).Text) MsgBox("The selected text is " & CType(e.Control, _ TextBox).SelectedText) End Sub

Equivalencias de propiedades, mtodos y eventos del control DataGrid


En las siguientes tablas se enumeran propiedades, mtodos y eventos de Visual Basic 6.0 con sus equivalentes en Visual Basic 2005. No se enumeran aquellas propiedades, mtodos y eventos que tienen el mismo nombre y el mismo comportamiento. Salvo que se indique lo contrario, todas las enumeraciones Visual Basic 2005 se asignan al espacio de nombres System.Windows.Forms. Esta tabla proporciona vnculos a temas que explican las diferencias de comportamiento. Cuando no hay equivalente directo en Visual Basic 2005, se proporcionan vnculos a temas que presentan alternativas.

Propiedades
Visual Basic 6.0 AddNewMode Align AllowAddNew Equivalente en Visual Basic 2005 Nueva implementacin. Las operaciones de datos se controlan en el origen de datos. Para obtener ms informacin, vea Mostrar datos en el control DataGridView de formularios Windows Forms. Dock y Anchor AllowNew (BindingSource) Ya no es una propiedad que se pueda ajustar; siempre se permite el desplazamiento mediante flechas. Para obtener ms informacin, vea Control predeterminado de teclado y mouse (ratn) en el control DataGridView de formularios Windows Forms. AllowRemove (BindingSource) AllowUserToResizeRows AllowEdit (BindingSource) Nueva implementacin. Para obtener ms informacin, vea Propiedades Appearance y BorderStyle para usuarios de Visual

AllowArrows

AllowDelete AllowRowSizing AllowUpdate Appearance

ApproxCount

Basic 6.0. Nueva implementacin. Las operaciones de datos se controlan en el origen de datos. Para obtener ms informacin, vea Mostrar datos en el control DataGridView de formularios Windows Forms. BackgroundColor Nota Los colores se controlan de forma diferente en Visual Basic 2005. Para obtener ms informacin, vea Comportamiento del color para los usuarios de Visual Basic 6.0.

BackColor

Nueva implementacin. Ahora se puede obtener acceso directamente a cualquier elemento. Nueva implementacin. Utilice un control Label para simular una Caption barra de ttulo. SelectedColumns Col ColumnHeadersVisible ColumnHeaders Parent; se hereda de Control. Container CurrentCellModified IsCurrentCellDirty, IsCurrentCellInEditMode CurrentCell Bookmark CurrentCellVisible Nota Si la propiedad CurrentCell se establece en una celda que no es visible, la cuadrcula se desplazar para mostrarla (similar a establecer CurrentCellVisible en True). IsCurrentCellDirty, IsCurrentRowDirty Objeto DataGridViewCellStyle. Nota El formato se puede establecer para una celda, columna o fila individuales. Width Objeto DataGridViewColumn. Nueva implementacin. Para obtener ms informacin, vea Arrastrar y colocar para usuarios de Visual Basic 6.0. IsCurrentCellInEditMode FirstDisplayedScrollingRowIndex Font Nota Las fuentes se controlan de forma diferente en Visual Basic 2005. Para obtener ms informacin, vea Control de fuentes para usuarios de Visual Basic 6.0.

DataChanged

DataFormats

DefColWidth DragIcon DragMode EditActive FirstRow Font FontBold FontItalic FontName

FontSize FontStrikethrough FontUnderline ForeColor ForeColor Nota Los colores se controlan de forma diferente en Visual Basic 2005. Para obtener ms informacin, vea Comportamiento del color para los usuarios de Visual Basic 6.0. Objeto DataGridViewCellStyle. HeadFont Nota Las fuentes se controlan de forma diferente en Visual Basic 2005. Para obtener ms informacin, vea Objeto Font para usuarios de Visual Basic 6.0. No hay equivalente directo. Utilice la propiedad WrapMode del objeto DataGridViewCellStyle en combinacin con la propiedad ColumnHeadersHeight. Height, heredada de la clase Control. Nota Las coordenadas se controlan de forma diferente en Visual Basic 2005. Para obtener ms informacin, vea Sistema de coordenadas para usuarios de Visual Basic 6.0. Nueva implementacin. Para obtener ms informacin, vea Compatibilidad con la Ayuda para usuarios de Visual Basic 6.0. Handle Nueva implementacin. Utilice Handle. Nueva implementacin. Para obtener ms informacin, vea Matrices de controles para usuarios de Visual Basic 6.0. Left, heredada de la clase Control. Nota Las coordenadas se controlan de forma diferente en Visual Basic 2005. Para obtener ms informacin, vea Sistema de coordenadas para usuarios de Visual Basic 6.0. FirstDisplayedScrollingColumnIndex No hay equivalente directo. Utilice las propiedades SelectionMode, CellBorderStyle y Format. RowHeadersVisible SelectedRows Propiedades GridColor, CellBorderStyle, RowHeadersBorderStyle, ColumnHeadersBorderStyle.

HeadLines

Height

HelpContextID hWnd hWndEditor Index

Left

LeftCol MarqueeStyle RecordSelectors Row RowDividerStyle

RowHeight SelBookmarks SelEndCol

Height Nueva implementacin. Ahora se puede obtener acceso directamente a cualquier elemento. SelectedCells, SelectedColumns

SelStartCol SelLength SelStart SelText Split Splits TabAcrossSplits TabAction Tag Nueva implementacin. No se admite la divisin de vistas directamente; utilice un control SplitContainer. StandardTab Nueva implementacin. CurrentCell.Value Nota La propiedad Value devuelve Object; utilice CStr o ToString para convertirlo en String. Componente ToolTip ToolTipText Para obtener ms informacin, vea Compatibilidad de la informacin sobre herramientas para usuarios de Visual Basic 6.0. Top Nota Las coordenadas se controlan de forma diferente en Visual Basic 2005. Para obtener ms informacin, vea Sistema de coordenadas para usuarios de Visual Basic 6.0. Mtodo DisplayedColumnCount. Nota En Visual Basic 6.0, las columnas parcialmente visibles siempre se incluyen en el recuento; el mtodo DisplayedColumnCount utiliza un parmetro booleano includePartialColumns para determinar si se incluyen las columnas parcialmente visibles. Mtodo DisplayedRowCount. VisibleRows Nota En Visual Basic 6.0, las filas parcialmente visibles siempre se No hay equivalente directo. Utilice la propiedad SelectionLength en el controlador de eventos EditingControlShowing. No hay equivalente directo. Utilice la propiedad SelectionStart en el controlador de eventos EditingControlShowing. No hay equivalente directo. Utilice la propiedad SelectedText en el controlador de eventos EditingControlShowing.

Text

Top

VisibleCols

incluyen en el recuento; el mtodo DisplayedRowCount utiliza un parmetro booleano includePartialRows para determinar si se incluyen las filas parcialmente visibles. WhatsThisHelpID Nueva implementacin. Para obtener ms informacin, vea Compatibilidad con la Ayuda para usuarios de Visual Basic 6.0. Width, heredada de la clase Control. Nota Las coordenadas se controlan de forma diferente en Visual Basic 2005. Para obtener ms informacin, vea Sistema de coordenadas para usuarios de Visual Basic 6.0. Ya no es una propiedad que se pueda ajustar; el comportamiento predeterminado es WrapCellPointer = True.

Width

WrapCellPointer

Mtodos
Equivalente en Visual Basic 2005 Nueva implementacin. No se admite la captura del contenido de un CaptureImage control DataGridView a un control PictureBox. Nueva implementacin. Cuando se vuelve a enlazar, el formato de ClearFields columna es automtico. ClearSelection ClearSelCols ColContaining IndexOf (DataGridViewColumnCollection) Nueva implementacin. Para obtener ms informacin, vea Arrastrar y Drag colocar para usuarios de Visual Basic 6.0. GetBookmark Nueva implementacin. Los marcadores ya no se admiten. Nueva implementacin. Se conserva el formato de la columna al HoldFields enlazar. SetBounds, heredada de la clase Control. Move Nota Las coordenadas se controlan de forma diferente en Visual Basic 2005. Para obtener ms informacin, vea Sistema de coordenadas para usuarios de Visual Basic 6.0. Visual Basic 6.0

ResetBindings, heredada de la clase Control. Nueva implementacin. Los marcadores ya no se admiten. IndexOf (DataGridViewColumnCollection) GetContentBounds (DataGridViewCell) Nuevo mtodo de implementacin. Utilice la propiedad CurrentCell. Focus Nueva implementacin. Para obtener ms informacin, vea ShowWhatsThis Compatibilidad con la Ayuda para usuarios de Visual Basic 6.0. Nueva implementacin. No se admite la divisin de vistas SplitContaining directamente; utilice un control SplitContainer. Rebind RowBookmark RowContaining RowTop Scroll SetFocus

ZOrder

Funciones BringToFront() o SendToBack()

Eventos
Visual Basic 6.0 AfterColEdit AfterColUpdate AfterDelete AfterUpdate BeforeColEdit BeforeColUpdate BeforeDelete BeforeInsert BeforeUpdate ButtonClick Equivalente en Visual Basic 2005 CellEndEdit Nueva implementacin. Las operaciones de datos se controlan en el origen de datos. Para obtener ms informacin, vea Mostrar datos en el control DataGridView de formularios Windows Forms. RowsAdded CellBeginEdit

Nueva implementacin. Las operaciones de datos se controlan en el origen de datos. Para obtener ms informacin, vea Mostrar datos en el control DataGridView de formularios Windows Forms.

Click (control Button) TextChanged Nota El comportamiento del evento TextChanged es ligeramente diferente. Para obtener ms informacin, vea Evento de cambio de control ComboBox para usuarios de Visual Basic 6.0. SelectedIndexChanged CellBeginEdit ColumnWidthChanged CellMouseDoubleClick Nueva implementacin. Para obtener ms informacin, vea Arrastrar y colocar para usuarios de Visual Basic 6.0.

Change

Click ColEdit ColResize DblClick DragDrop

DragOver DataError Error ColumnHeaderMouseClick HeadClick CellMouseDown MouseDown CellMouseMove MouseMove CellMouseUp MouseUp OLECompleteDrag OLEDragDrop OLEDragOver OLEGiveFeedback

Nueva implementacin. Para obtener ms informacin, vea Arrastrar y colocar para usuarios de Visual Basic 6.0.

OLESetData OLEStartDrag OnAddNew RowColChange RowResize SelChange SplitChange Validate

RowsAdded CurrentCellChanged RowHeightChanged SelectionChanged Nueva implementacin. No se admite la divisin de vistas directamente; utilice un control SplitContainer. Validating

Notas de la actualizacin
Cuando un proyecto Visual Basic 6.0 se actualiza a Visual Basic 2005, el evento Change del control DataGrid se asigna al evento TextChanged del control DataGridView de Visual Basic 2005. El comportamiento del evento TextChanged difiere del comportamiento del evento Change; esta diferencia puede provocar resultados inesperados en el cdigo. No se actualiza ningn cdigo relacionado con mtodos o eventos especficos de datos. Se agregan comentarios de advertencia al cdigo y se debe quitar o modificar el cdigo antes de compilar la aplicacin.

Vea tambin
Referencia Informacin general del control DataGridView (Formularios Windows Forms) Comparacin de los controles y objetos programables de distintos lenguajes y bibliotecas Conceptos Resumen de tecnologas para el control DataGridView (formularios Windows Forms) Lo nuevo en formularios Windows Forms y controles de formularios Windows Forms Otros recursos DataGridView (Control, formularios Windows Forms) Controles de formularios Windows Forms para usuarios de Visual Basic 6.0 Enlace de datos en formularios Windows Forms

bueno segui investigando y encontre la manera de pasar los datos del datagriview a unas cajas de texto con el siguiente codigo: Cdigo:
Dim Nombre As String = ProductosDataGridView.Rows(e.RowIndex).Cells(0).Value Dim Marca As String = ProductosDataGridView.Rows(e.RowIndex).Cells(1).Value Dim Categoria As String = ProductosDataGridView.Rows(e.RowIndex).Cells(2).Value Dim Precio As String = ProductosDataGridView.Rows(e.RowIndex).Cells(3).Value TextBox1.Text = Nombre TextBox2.Text = Marca TextBox3.Text = Categoria TextBox4.Text = Precio

Private Sub DataGrid1_DblClick() gbl_usuario.Text1.Text gbl_usuario.Text2.Text gbl_usuario.Text3.Text gbl_usuario.Text3.Text Unload Me gbl_usuario.Show End Sub = = = = DataGrid1.Columns(0).Text DataGrid1.Columns(1).Text DataGrid1.Columns(3).Text DataGrid1.Columns(2).Text

Private Sub DataGrid1_Click() 'Text1.text = "" 'Text2.text = "" Text1.text = DataGrid1.Columns(0).text Text2.text = DataGrid1.Columns(1).text Text3.text = DataGrid1.Columns(2).text Text4.text = DataGrid1.Columns(3).text Text5.text = DataGrid1.Columns(4).text Text6.text = DataGrid1.Columns(5).text Text7.text = DataGrid1.Columns(6).text Text8.text = DataGrid1.Columns(7).text Text9.text = DataGrid1.Columns(8).text Text10.text = DataGrid1.Columns(9).text End Sub

Respuesta: Pasar datos de un datagrid a otro

Aca dejo mi codigo del boton aadir: dt = New DataTable("Detalle_Ingreso") Cdigo = New DataColumn("Cdigo") Descripcin = New DataColumn("Descripcin") Cantidad = New DataColumn("Cantidad") Cdigo.DataType = System.Type.GetType("System.String") Descripcin.DataType = System.Type.GetType("System.String") Cantidad.DataType = System.Type.GetType("System.String") Dim Row As DataRow Try dt.Columns.Add(Cdigo) dt.Columns.Add(Descripcin) dt.Columns.Add(Cantidad) Row = dt.NewRow Row.Item("Cdigo") = Txt_codigoarticulo.Text Row.Item("Descripcin") = Txt_articulo.Text Row.Item("Cantidad") = Txt_cantidad.Text dt.Rows.Add(Row) Catch End Try ds = New DataSet ds.Tables.Add(dt) DGdetallearticulo.SetDataBinding(ds, "Detalle_Ingreso") DGdetallearticulo.Refresh() talvez te sirva aguila, y se encuentras la solucion a mi problema, me dices.

Para realizar el ejemplo colocar en un formulario un control Datagrid llamado Datagrid1. Luego desde el men referencias marcar Activex Data Object para poder usar ADO Crear una base de datos Access llamada bd1.mdb. Dentro de esta crear una tabla llamada Tabla1 con algunos campos y registros. La base de datos debe estar en la carpeta donde est el proyecto de vb. Importante: Por defecto se exporta a un nuevo libro de Excel. Si se desea exportar a uno existente, colocar la ruta del libro en el parmetro Open del objeto Workbooks, por ejemplo Set Obj_Libro = Obj_Excel.Workbooks.Open(La ruta ) Por ltimo agregar un botn que ser el que ejecuta la funcin llamada Exportar_DataGrid. A esta funcin se le debe enviar como parmetro el control Datagrid y un segundo parmetro que especifica la cantidad de filas a exportar. Por defecto se exportan todas las filas, indicando la propiedad AproxCount que devuelve dicho nmero. Nota. Este ejemplo ha sido probado con Microsoft Access 2000 y Excel 2000. Cdigo fuente del formulario:
Texto planoImprimir 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. ' ----------------------------------------------------------------------------------------' \\ -- Descripcin : Exportar DataGrid a Excel ' \\ -- Controles : Un Datagrid, un CommandButton y la referencia a ADO ' \\ -- Autor : Luciano Lodola -- http://www.recursosvisualbasic.com.ar/ ' ----------------------------------------------------------------------------------------' -- Variables para la base de datos Dim cnn As Connection Dim rs As Recordset ' -- Variables para Excel Dim Obj_Excel As Object Dim Obj_Libro As Object Dim Obj_Hoja As Object ' ----------------------------------------------------------------------------------------' \\ -- Sub para exportar ' ----------------------------------------------------------------------------------------Private Sub exportar_Datagrid(Datagrid As Datagrid, n_Filas As Long) On Error GoTo Error_Handler Dim i As Integer Dim j As Integer ' -- Colocar el cursor de espera mientras se exportan los datos Me.MousePointer = vbHourglass

27. 28. 29.

If n_Filas = 0 Then MsgBox "No hay datos para exportar a excel. Se ha indicado 0 en el parmetro Filas ": Exit Sub 30. Else 31. 32. ' -- Crear nueva instancia de Excel 33. Set Obj_Excel = CreateObject("Excel.Application") 34. ' -- Agregar nuevo libro 35. Set Obj_Libro = Obj_Excel.Workbooks.Open(Path) 36. 37. ' -- Referencia a la Hoja activa ( la que aade por defecto Excel ) 38. Set Obj_Hoja = Obj_Excel.ActiveSheet 39. 40. iCol = 0 41. ' -- Recorrer el Datagrid ( Las columnas ) 42. For i = 0 To Datagrid.Columns.Count - 1 43. If Datagrid.Columns(i).Visible Then 44. ' -- Incrementar ndice de columna 45. iCol = iCol + 1 46. ' -- Obtener el caption de la columna 47. Obj_Hoja.Cells(1, iCol) = Datagrid.Columns(i).Caption 48. ' -- Recorrer las filas 49. For j = 0 To n_Filas - 1 50. ' -- Asignar el valor a la celda del Excel 51. Obj_Hoja.Cells(j + 2, iCol) = _ 52. Datagrid.Columns(i).CellValue(Datagrid.GetBookmark(j)) 53. Next 54. End If 55. Next 56. 57. ' -- Hacer excel visible 58. Obj_Excel.Visible = True 59. 60. ' -- Opcional : colocar en negrita y de color rojo los enbezados en la hoja 61. With Obj_Hoja 62. .Rows(1).Font.Bold = True 63. .Rows(1).Font.Color = vbRed 64. ' -- Autoajustar las cabeceras 65. .Columns("A:Z").AutoFit 66. End With 67. End If 68. 69. ' -- Eliminar las variables de objeto excel 70. Set Obj_Hoja = Nothing 71. Set Obj_Libro = Nothing 72. Set Obj_Excel = Nothing 73. 74. ' -- Restaurar cursor 75. Me.MousePointer = vbDefault 76.

77. Exit Sub 78. 79. ' -- Error 80. Error_Handler: 81. 82. MsgBox Err.Description, vbCritical 83. On Error Resume Next 84. 85. Set Obj_Hoja = Nothing 86. Set Obj_Libro = Nothing 87. Set Obj_Excel = Nothing 88. Me.MousePointer = vbDefault 89. 90. End Sub 91. 92. ' ------------------------------------------------------------------------------93. ' \\ -- Botn para Ejecutar la funcin que exporta los datos del datagrid a excel 94. ' ------------------------------------------------------------------------------95. Private Sub Command1_Click() 96. Call exportar_Datagrid(DataGrid1, DataGrid1.ApproxCount) 97. End Sub 98. ' ------------------------------------------------------------------------------99. ' \\ -- Inicio 100. ' ------------------------------------------------------------------------------101. Private Sub Form_Load() 102. 103. On Error GoTo Error_Handler 104. 105. ' -- Crear nueva conexin a la base de datos 106. Set cnn = New Connection 107. 108. ' -- Abrir la base de datos. 109. cnn.Open "PROVIDER=Microsoft.Jet.OLEDB.4.0;Data Source=" & App.Path & "\ data\bd1.mdb" 110. 111. ' -- Crear nuevo objeto Recordset 112. Set rs = New Recordset 113. ' -- Configurar recordset 114. With rs 115. .CursorLocation = adUseClient 116. End With 117. ' -- Cargar el recordset ( ESPECIFICAR LA CONSULTA SQL ) 118. rs.Open "Select * From tabla1", cnn, adOpenStatic, adLockOptimistic 119. 120. ' -- Enlazar el datagrid con el recordset anterior 121. Set DataGrid1.DataSource = rs 122. 123. 124. Command1.Caption = " Exportar datagrid a Excel " 125. 126. ' -- Errores

127. 128. 129. 130. 131. 132. 133. 134. 135. 136. 137. 138. 139. 140. 141. 142.

Exit Sub Error_Handler: MsgBox Err.Description, vbCritical, "Error en Form Load" End Sub ' ------------------------------------------------------------------------------' \\ -- Fin ' ------------------------------------------------------------------------------Private Sub Form_Unload(Cancel As Integer) On Error Resume Next ' -- Cerrar y eliminar recordset If rs.State = adStateOpen Then rs.Close If Not rs Is Nothing Then Set rs = Nothing ' -- cerrar y Eliminar la conexin If cnn.State = adStateOpen Then cnn.Close Set cnn = Nothing

Dim nuevacol As Column Set nuevacol = grdDataGrid.Columns.Add( numcolumna) nuevacol.Caption = "Otra columna" nuevacol.Alignment = dbgRight

Este es el codigo para el boton agregar

Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click If Me.TextBox1.Text <> String.Empty Then If Me.ComboBox1.Text <> String.Empty Then 'agregamos la informacion a un row o fila del datagrid Me.DataGridView1.Rows.Add(Me.TextBox1.Text, Me.ComboBox1.Text, Me.DateTimePicker1.Value.ToShortDateString) 'limpiamos los controles Me.TextBox1.Text = String.Empty Me.ComboBox1.SelectedItem = String.Empty Me.DateTimePicker1.Value = Today.Date Else MessageBox.Show("Ingrese un deporte", "", MessageBoxButtons.OK, MessageBoxIcon.Information) End If Else MessageBox.Show("Ingrese un nombre", "", MessageBoxButtons.OK, MessageBoxIcon.Information) End If End Sub

una vez tenemos datos dentro de nuestro datagrid, si deseamos eliminar uno de nuestros rows o filas damos click en el boton eliminar, la cual quitara la fila del datagrid.

Private Sub DataGridView1_CellContentClick(ByVal sender As System.Object, ByVal e As System.Windows.Forms.DataGridViewCellEventArgs) Handles DataGridView1.CellContentClick

'se puede hacer referencia al nombre de la columna para saber donde hicieron click o solo con el e.columnindex sabiendo la posicion de la columna 'yo lo manejo asi por que se daran cuenta que en algun caso las columnas pueden aumentar o disminuir 'y se complicaria la cosa por que si cambia el numero de columnas habria que corregir siembre el indice 'si hicieron clic en la columna eliminar If DataGridView1.Columns(e.ColumnIndex).Name = "Eliminar" Then 'eliminar row DataGridView1.Rows.RemoveAt(e.RowIndex) End If End Sub

Ahora podremos guardar nuestra informacion al hacer click en el boton guardar, aqui se validara que existan datos o mejor filas en el datagrid, ahora recorreremos nuestro datagrid por medio de un For. tendremos una varia de tipo string (SqlString ) donde agregaremos la sentencia para guardar en la base de datos (INSERT INTO), ademas de un araylist para agregar las sentencias.

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click If DataGridView1.Rows.Count > 0 Then Dim SqlString As String = String.Empty ' variable a la que asignaremos la sentencia Dim ListSqlStrings As New ArrayList ingresaremos las sentencias 'recorremos el datagrid como ya sabemos siempre se toma desde cero For i As Integer = 0 To DataGridView1.Rows.Count - 1 'creamos la sentencia el row siempre tendra el valor de i para ir pasando de row en row 'arregla donde

'el campo .cells(0) indica la columna que esta ese dato, tambien puede hacerlo con el nombre de la celda .cells("Nombre") SqlString = "INSERT INTO datos (nombre,deporte,fecha_inscripcion) VALUES ('" + DataGridView1.Rows(i).Cells(0).Value.ToString() + "','" + DataGridView1.Rows(i).Cells(1).Value.ToString() + "','" + DataGridView1.Rows(i).Cells(2).Value.ToString() + "')" 'agregamos la sentencia a la lista ListSqlStrings.Add(SqlString) Next If EjecutarTransaccion(ListSqlStrings) Then MessageBox.Show("Info. guardada correctamente") Close() Else MessageBox.Show("La Info. no se guardo") End If Else MessageBox.Show("No hay informacion para guardar") End If End Sub

Ahora una vez hallamos recorrido el datagrid y tengamos nuestras sentencias, podremos ejecutar nuestra transaccion SQl para guardar en la base de datos. En este punto haciendo un parentesis igualmente podra ejecutar una a una las sentencias si lo desea por medio de un executenonquery, pero para mi lo mas optimo es una transaccion. Volviendo al evento guardar la funcion Public Function EjecutarTransaccion(ByVal ListaSentencias As ArrayList) As Boolean recibira el arraylist y retornara un valor booleano para identificar si se realizo la transaccion. para ejecutar nuestra transaccion necesitamos una conexion como la siguiente.

Public Connection1 As New SqlConnection("Data Source=XSaint;Initial Catalog=DBPRUEBA;Integrated Security=SSPI")

Ahora la funcion ejecutartransaccion se ejecutara, si es correcta la transaccion retornara true de ser incorrecta podremos ver un mensaje y retornara un false

Public Function EjecutarTransaccion(ByVal ListaSentencias As ArrayList) As Boolean Dim band As Boolean = False If AbrirConexion() Then Dim command As SqlCommand = Connection1.CreateCommand() Dim transaction As SqlTransaction Dim strSentencia As Object Dim sentencia As String = "" transaction = Connection1.BeginTransaction() command.Connection = Connection1 command.Transaction = transaction Try For Each strSentencia In ListaSentencias sentencia = strSentencia.ToString() command.CommandText = sentencia.ToString() command.ExecuteNonQuery() Next transaction.Commit() band = True Catch ex As Exception MessageBox.Show(ex.Message) Try transaction.Rollback()

Catch ex2 As Exception MessageBox.Show(ex2.Message) End Try Finally CerrarConexion() End Try End If Return band End Function

Si la transaccion es satisfactoria veremos un mensaje de satisfaccion. la clase transaccion utiliza dos funciones dicionales de abrir y cerrar conexion que nos permite establecer si la conexion es correcta o no.

Public Function AbrirConexion() As Boolean Dim band As Boolean = False Connection1.Open() Try

band = True Catch ex As Exception MessageBox.Show(ex.Message) End Try Return band End Function

Public Function CerrarConexion() As Boolean Dim band As Boolean = False Connection1.Close() Try band = True Catch ex As Exception MessageBox.Show(ex.Message) End Try Return band End Function

Ejemplo 1
Ejemplo simple para recuperar el valor de la celda seleccionada de un control Datagrid El valor de la celda se visualiza en el caption del formulario, consultando la propiedad Col , Text y Row del DataGrid

Se necesita colocar un DataGrid1 Cdigo fuente en un formulario:


Texto planoImprimir

1. Option Explicit 2. 3. 4. Private Sub DataGrid1_RowColChange(LastRow As Variant, ByVal LastCol As I nteger) 5. 'Muestra en el caption del fomulario _ 6. el valor de la celda seleccionada 7. Me.Caption = DataGrid1.Text & " Celda: " & CStr(DataGrid1.Row) & _ 8. " Columna: " & CStr(DataGrid1.Col) 9. End Sub 10. 11. Private Sub Form_Load() 12. Dim bd As String 13. 14. 15. 'Path de la base de datos 16. bd = App.Path & "\BIBLIO.MDB" 17. 18. 'Cadena de conexin 19. 20. Adodc1.ConnectionString = "PROVIDER=Microsoft.Jet.OLEDB.4.0;" & _ 21. "Data Source=" & bd & ";" 22. 23. 'Cadena SQL 24. Adodc1.RecordSource = "SELECT * FROM Authors" 25. 26. 'Carga el Recordset en el datagrid 27. Set DataGrid1.DataSource = Adodc1 28. End Sub

Ejemplo 2
Ejemplo para obtener el valor de las celdas del Datagrid pero accedindolas en un bucle anidado. Es decir en el bucle principal se recorren todas las filas, y en el otro las columnas. Dentro del ForNext que recorre las columnas, se obtiene el valor de la celda mediante la coleccin CellValue del objeto Columns del Grid. Nota. El resultado se imprime y muestra en la ventana Inmediato del IDE de Visual basic.

Cdigo fuente ( Agregar al Form un DataGrid, un botn y la referencia de ADO )


Texto planoImprimir 1. 2. 3. 4. 5. Option Explicit ' \\ -- Recorrer datos de un DataGrid en un bucle ' \\ -- Autor : Luciano Lodola -- www.recursosvisualbasic.com.ar ' - -------------------------------------------------------------------------------

6. 7. ' \\ -- Variables para la conexin 8. Private rs As ADODB.Recordset 9. Private cn As ADODB.Recordset 10. 11. ' -----------------------------------------------------------------------------12. ' \\ -- Botn que recorre el GRID 13. ' -----------------------------------------------------------------------------14. Private Sub Command1_Click() 15. 16. Dim i As Long ' -- Fila 17. Dim j As Long ' -- Columna 18. Dim sValue As String ' -- Valor de la celda 19. Dim sLine As String ' -Valor de la linea ( La fila completa ) 20. 21. Screen.MousePointer = vbHourglass 22. 23. With DataGrid1 24. ' -- recorrer todas los registros del GRID 25. For i = 0 To .ApproxCount - 1 26. ' -- Recorrer las columnas 27. For j = 0 To .Columns.Count - 1 28. ' -- Obtener el valor de la celda actual

29. n 30.

If Not IsNull(.Columns(j).CellValue(.GetBookmark(i))) The sValue = CStr(.Columns(j).CellValue(.GetBookmark(i)))

31. Else 32. sValue = "" 33. End If 34. ' -- Almacenar los datos de la fila 35. sLine = sLine & sValue & ";" 36. Next 37. ' -- Imprimir resultado 38. Debug.Print sLine 39. sValue = "" 40. sLine = "" 41. Next 42. End With 43. Screen.MousePointer = vbDefault 44. End Sub 45. ' -----------------------------------------------------------------------------46. ' \\ -- Inicio 47. ' -----------------------------------------------------------------------------48. Private Sub Form_Load() 49. Dim bd As String 50. 51. ' -- Ruta de la base de datos 52. bd = "C:\Archivos de programa\Microsoft Visual Studio\VB98\BIBLIO.MDB " 53. 54. ' -- Crear conexin 55. Dim cn As New ADODB.Connection 56. Dim rs As New ADODB.Recordset 57. cn.Open "PROVIDER=Microsoft.Jet.OLEDB.4.0;" & "Data Source=" & bd & " ;" 58. 59. cn.CursorLocation = adUseClient 60. ' -- Ejecutar comando SQL ( seleccionar las primeras 100 filas ) 61. Set rs = cn.Execute("SELECT Top 150 * FROM Authors") 62. 63. ' -- Enlazar los datos al GRID 64. Set DataGrid1.DataSource = rs 65. End Sub 66. ' -----------------------------------------------------------------------------67. ' \\ -- Fin 68. ' -----------------------------------------------------------------------------69. Private Sub Form_Unload(Cancel As Integer) 70. ' -- Quitar conexin al Grid 71. Set DataGrid1.DataSource = Nothing 72. ' -- Descargar recordset 73. If Not rs Is Nothing Then 74. If rs.State = adStateOpen Then rs.Close 75. Set rs = Nothing 76. End If 77. ' -- Descargar conexin 78. If Not cn Is Nothing Then 79. If cn.State = adStateOpen Then cn.Close 80. Set cn = Nothing 81. End If 82. End Sub

Ejemplo de la ayuda de visual basic, que muestra como usar el evento ButtonClick del control datagrid, para desplegar un Datalist como un combo desplegable y poder seleccionar un valor para la celda En el proyecto, lo que se hace es ocultar el Datalist y hacerlo visible cuando se presiona el botn desplegable del la grilla Para poder habilitar el botn en la columna , en este caso el campo con ndice 1, se ejecuta la siguiente lnea : DataGrid1.Columns(1).Button = True

Cuando se produce el evento ButtonClick, se redimensiona y posiciona el DataList para desplegarlo en la celda actual

Nota . En el cdigo se hace referencia a la bd nwind.mdb

Descargar

1. 2. 3. 4. 5. 6. 7. 8.

Option Explicit ' variables Dim cn As ADODB.Connection Dim rs As ADODB.Recordset

' BeforeColUpdate : Validar antes de Actualizar los datos de la columna 1 y columna 2 9. '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' 10. Private Sub DataGrid1_BeforeColUpdate( _ 11. ByVal ColIndex As Integer, _

12. 13. 14. 15. 16. 17. 18. 19. 20. 21.

OldValue As Variant, _ Cancel As Integer)

' Verifica si en la columna 1 ( Nombre de la compaia) _ o la columna 2 Nombre del cont. , la cantidad de caracteres es _ mayor a 6, si no cancela la atualizacin If ColIndex = 0 Or ColIndex = 1 Then With DataGrid1 ' Len((.Columns(xx).Value) .. contiene el valor de la celda If Len((.Columns(0).Value) < 6) Or Len((.Columns(1).Value < 6)) T hen 22. Cancel = True ' cancela 23. MsgBox "Los datos deben contener al menos 6 caracterers." & _ 24. "No se actualizarn los cambios", vbExclamation 25. 26. End If 27. End With 28. End If 29. End Sub 30. 31. Private Sub Form_Load() 32. 33. 'Nueva conexin ado 34. Set cn = New ADODB.Connection 35. 36. ' propiedades 37. With cn 38. .CursorLocation = adUseClient 39. .ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data " & _ 40. _ 41. ty " & _ 42. 43. 44. 45. 46. 47. 48. 49. 50. _ 51. " FROM Proveedores", cn, adOpenStatic, adLockOptimistic 52. 53. 'llenar el datagrid 54. Set DataGrid1.DataSource = rs 55. 56. End Sub "Info=False" .Open ' abre la conexin End With ' Abre el Recordset Set rs = New ADODB.Recordset rs.Open "SELECT [NombreCompaa],[NombreContacto],[CargoContacto] " & " Visual Studio\VB98\NWIND.MDB;Persist Securi "Source=C:\Archivos de programa\Microsoft" &

Ejemplo 1
Formulario para buscar en un DataGrid mediante un TextBox y Commandbuttons. El ejemplo para buscar , utiliza el mtodo Find del recordset. Para buscar en el DataGrid, se debe indicar que campo se va a tener en cuenta para la busqueda. Dichos campos se aaden en un control Combobox

Nota: asi como est hecho el ejemplo, solo se puede buscar y especificar un campo que sea de tipo string, si no dar error en el mtodo Find, por ejemplo si se busca en un campo de tipo Numrico Tambin hay un CheckBox para indicar de que forma buscar, es decir buscar el registro teniendo en cuanta la palabra completa, o parte de la cadena

Formulario

Cdigo fuente en el formulario Texto planoImprimir 1. Option Explicit 2. 3. '************************************************************************ *********** 4. ' Ejemplo para buscar en un DataGrid con el mtodo Find del recordset 5. 6. 'Controles : 1 - La referencia a Ado _ 7. 2 - Un control DataGrid ( DataGRid1 ) _ 8. 3 - Un control Textbox (Text1) _ 9. 4 - Dos CommandButon ( Command1 y Command2 ) _ 10. 5 - Un Combobox ( Combo1 - Para los campos ) _ 11. 6 - Un CheckBox _ 12. 7 - Indicar en la constante s_CONNECTION_STRING la _ 13. cadena de conexin para la base de datos _ 14. 8 Indicar en el FormLoad, la consulta Sql para el recordset

15. 16. 17. 18. '************************************************************************ *********** 19. 20. '************************************************************************ *********** 21. 22. ' ConnectionString 23. Private Const s_CONNECTION_STRING As String = "Provider=Microsoft.Jet.OLE DB.4.0;" & _ 24. "Data Source=C:\Archivos de programa" & _ 25. "\Microsoft Visual Studio\VB 98\" & _ 26. "NWIND.MDB;Persist Security Info=False" 27. 28. ' Colores de fondo para los textbox mientras se busca 29. Private Const COLOR_TEXTBOX_NO_FOUND As Long = &H8080FF 30. Private Const COLOR_TEXTBOX_FOUND As Long = &HC0FFFF 31. Private Const COLOR_TEXTBOX_NORMAL As Long = vbWhite 32. '************************************************************************ *********** 33. 34. 35. ' Variable de tipo Recordset y con evento 36. Private WithEvents Recordset As ADODB.Recordset 37. 'Botn para buscar hacia atrs 38. Private Sub Command1_Click() 39. 40. ' Si llega al final posiciona el recordset en el ltimo registro 41. If Recordset.EOF Then 42. Recordset.MoveLast 43. End If 44. ' Habilita y deshabilita los command de buscar 45. If Recordset.BOF Or Recordset.AbsolutePosition <= 1 Then 46. Command1.Enabled = False 47. Command2.Enabled = True 48. Command2.SetFocus 49. Exit Sub 50. End If 51. 52. Dim Anterior As Long 53. ' guarda la posicin del Registro anterior 54. Anterior = Recordset.AbsolutePosition 55. ' Mueve el cursor 56. Recordset.Move 0, Recordset.Bookmark - 1 57. 58. ' Busca en cualquier parte de la cadena 59. If Check1.Value = 0 Then 60. Recordset.Find Combo1.Text & " LIKE '*" + Text1.Text + "*'", , ad SearchBackward 61. ' Busca la cadena completa 62. ElseIf Check1.Value = 1 Then 63. Recordset.Find Combo1.Text & "='" + Text1.Text + "'", , adSearchB ackward 64. End If 65. 66. Command2.Enabled = True 67. ' Si llega al principio , selecciona la ltima fila encontrada 68. If Recordset.BOF Then 69. Recordset.AbsolutePosition = Anterior 70. Command1.Enabled = False 71. Command2.SetFocus

72. End If 73. 74. End Sub 75. 'Botn para buscar hacia adelante 76. Private Sub Command2_Click() 77. ' Si llega al principio posiciona el recordset en el primer registro 78. 79. 80. 81. 82. If Recordset.BOF Then Recordset.MoveFirst End If ' Habilita y deshabilita los botones para buscar If Recordset.EOF Or Recordset.AbsolutePosition >= Recordset.RecordCou nt Then 83. Command2.Enabled = False 84. Command1.Enabled = True 85. Command1.SetFocus 86. Exit Sub 87. End If 88. 89. Dim Anterior As Long 90. ' Almacena la fila actual 91. Anterior = Recordset.AbsolutePosition 92. ' Mueve un registro hacia atrs 93. Recordset.Move 0, Recordset.Bookmark + 1 94. 95. ' Busca en cualquier parte de la cadena 96. If Check1.Value = 0 Then 97. Recordset.Find Combo1.Text & " LIKE '*" + Text1.Text + "*'", , ad SearchForward 98. ' Busca la cadena completa 99. ElseIf Check1.Value = 1 Then 100. Recordset.Find Combo1.Text & "='" + Text1.Text + "'", , adS earchForward 101. End If 102. 103. Command1.Enabled = True 104. 105. If Recordset.EOF Then 106. Command2.Enabled = False 107. Command1.SetFocus 108. Recordset.AbsolutePosition = Anterior 109. End If 110. 111. End Sub 112. 113. 114. Private Sub Form_Load() 115. 116. ' Variable para la conexin de Ado 117. Dim db As ADODB.Connection 118. 119. ' Nuevo objeto Connection 120. Set db = New ADODB.Connection 121. 122. db.CursorLocation = adUseClient 123. 124. ' Abre la base de datos pasando la cadena de conexin 125. db.Open s_CONNECTION_STRING 126. 127. ' crea un Recordset 128. Set Recordset = New Recordset 129. 130. ' Abre el Recordset con la consulta Sql 131. Recordset.Open "Select [NombreContacto]," & _ 132. "[NombreCompaa]," & _ 133. "[CargoContacto] " & _

134. Asc", _ 135. 136. 137. 138. 139. 140. 141. 142. 143. 144. 145. 146. 147. 148. 149. 150. 151. 152. DataGrid

"From Proveedores Order By NombreContacto db, adOpenStatic, adLockOptimistic Dim i As Integer 'Recorre los campos del recordset para aadirlos al combobox 'Nota: los campos deben ser de tipo String For i = 0 To Recordset.Fields.Count - 1 Combo1.AddItem Recordset.Fields.Item(i).Name Next i ' Selecciona el campo 1 Combo1.ListIndex = 0 ' Engancha el recordset al datagrid Set DataGrid1.DataSource = Recordset ' Opcional . esto hace que se seleccione la fila completa en el

153. DataGrid1.MarqueeStyle = dbgHighlightRowRaiseCell 154. 155. Text1 = "" 156. 'caption de los controles 157. Command1.Caption = "Quitar Filtro" 158. Command1.Caption = " << Buscar Anterior " 159. Command2.Caption = " Buscar Siguiente >> " 160. Check1.Caption = " Buscar palabra completa" 161. 162. End Sub 163. 164. 165. Private Sub Text1_Change() 166. 167. If Text1 <> "" Then 168. 169. ' Habilita los botones para buscar hacia atrs y hacia adel ante 170. Command1.Enabled = True 171. Command2.Enabled = True 172. 173. Dim Actual As Long 174. ' almacena la fila actual, por si no so se encontr vuelve a posicionar _ 175. el recordset en dicha fila 176. If Not Recordset.EOF And Not Recordset.BOF Then 177. Actual = Recordset.AbsolutePosition 178. End If 179. 180. ' Busca en cualquier parte de la cadena 181. If Check1.Value = 0 Then 182. Recordset.Find Combo1.Text & " LIKE '*" & Text1.Text & "*'", , adSearchForward 183. ' Busca la Cadena completa 184. ElseIf Check1.Value = 1 Then 185. Recordset.Find Combo1.Text & "='" & Text1.Text & "'", , adSearchForward 186. End If 187. 188. ' Color del fondo del textbox 189. If Not Recordset.EOF And Not Recordset.BOF Then 190. Text1.BackColor = COLOR_TEXTBOX_FOUND 191. Else 192. Text1.BackColor = COLOR_TEXTBOX_NO_FOUND 193. End If

194. 195. 196. 197. 198.

If Recordset.BOF Or Recordset.EOF Then Recordset.AbsolutePosition = Actual End If ' Si el textbox est vaco, posiciona el recordset en el primer

registro 199. Else 200. 201. Command1.Enabled = False 202. Command2.Enabled = False 203. 204. Recordset.MoveFirst 205. 206. Set DataGrid1.DataSource = Recordset 207. ' Color de fondo del textbox cuando est vaco 208. Text1.BackColor = COLOR_TEXTBOX_NORMAL 209. 210. End If 211. 212. End Sub 213. 214. ' Evento que se dispara cuando se cambia de posicin en el recordse t 215. Private Sub Recordset_MoveComplete(ByVal adReason As ADODB.EventRea sonEnum, _ 216. ByVal pError As ADODB.Error, adStat us As ADODB.EventStatusEnum, _ 217. ByVal pRecordset As ADODB.Recordset ) 218. 219. ' Muestra en el caption del formulario el nmero registro actual 220. on) 221. 222. 223. 224. Me.Caption = " Registro actual: " & CStr(Recordset.AbsolutePositi End Sub ' Cuando se produce un error en el recordset se dispara este evento

225. Private Sub Recordset_Error(ByVal ErrorNumber As Long, Description As String, _ 226. ByVal Scode As Long, ByVal Source As Strin g, _ 227. ByVal HelpFile As String, ByVal HelpContex t As Long, _ 228. fCancelDisplay As Boolean) 229. ' Mostramos el error 230. MsgBox " Descripcin del Error :" & Description, vbCritical 231. End Sub 232. 233. ' Cierra el recordset y Descarga la referencia 234. Private Sub Form_Unload(Cancel As Integer) 235. 236. ' Cierra 237. If Recordset.State = adStateOpen Then 238. Recordset.Close 239. End If 240. 241. ' descarga 242. If Not Recordset Is Nothing Then 243. Set Recordset = Nothing 244. End If 245. End Sub

Ejemplo 2
Otro ejemplo ( de la ayuda de vb )
Este cdigo fuente de ejemplo es mas simple que el anterior, y est sacado de la ayuda de visual basic. El formulario , usa ado y un control datagrid. El DataGrid se conecta a la base de datos Biblio.mdb para cargar los registros de la tabla Authors en la grilla. Al presionar un commandbutton, se pide mediante un inputbox, que se ingrese un valor para el nombre del campo "author" a buscar con el mtodo Find .

Descargar proyecto y artculo original 1. Dim Recordset As Recordset 2. 3. '*************************************************************************** 4. '*

Name : Seleccionar la fila completa en un control DataGrid _

5. Agregar la referencia a Ado y un control Datagrid llamado Datagrid1 6. '*************************************************************************** 7. 8. Private Sub Form_Load() 9. Dim db As Connection 10. 11. ' Nueva conexin Ado 12. Set db = New Connection 13. 14. db.CursorLocation = adUseClient 15. 16. ' Base de datos de visual basic NWIND 17. db.Open "PROVIDER=Microsoft.Jet.OLEDB.3.51;Data Source=" & _ 18. "C:\Archivos de programa\Microsoft Visual Studio\" & _ 19. "VB98\NWIND.MDB;" 20. 21. ' Crea un nuevo recordset 22. Set Recordset = New Recordset 23. 24. ' Lo abre 25. Recordset.Open "select IdCategora,NombreCategora,Descripcin from Cat egoras", _ 26. db, adOpenStatic, adLockO ptimistic 27. 28. ' Asigna el recordset al DataGrid 29. Set DataGrid1.DataSource = Recordset 30. 31. ' Esta propiedad es la que selecciona _ 32. toda la fila del dataGrid usando la propiedad MarqueeStyle

33. DataGrid1.MarqueeStyle = dbgHighlightRowRaiseCell 34. 35. 36. End Sub 37. 38. Private Sub Form_Resize() 39. On Error Resume Next 40. ' Redimensiona el datagrid 41. DataGrid1.Height = Me.ScaleHeight - 300 42. DataGrid1.Width = Me.ScaleWidth 43. DataGrid1.Left = 0 44. DataGrid1.Top = 0 45. End Sub 46. 47. Private Sub Form_Unload(Cancel As Integer) 48. 49. ' Cierra el recordset 50. If Not Recordset.State = adStateOpen Then 51. Recordset.Close 52. End If 53. 54. ' Elimina la referencia 55. If Not Recordset Is Nothing Then 56. Set Recordset = Nothing 57. End If 58. End Sub

Formulario con el Datagrid a exportar

Para realizar el ejemplo colocar en un formulario un control Datagrid llamado Datagrid1. Luego desde el men referencias marcar Activex Data Object para poder usar ADO Crear una base de datos Access llamada bd1.mdb. Dentro de esta crear una tabla llamada Tabla1 con algunos campos y registros. La base de datos debe estar en la carpeta donde est el proyecto de vb.

Importante: Por defecto se exporta a un nuevo libro de Excel. Si se desea exportar


a uno existente, colocar la ruta del libro en el parmetro Open del objeto Workbooks, por ejemplo

Set Obj_Libro = Obj_Excel.Workbooks.Open(La ruta )


Por ltimo agregar un botn que ser el que ejecuta la funcin llamada Exportar_DataGrid. A esta funcin se le debe enviar como parmetro el control Datagrid y un segundo parmetro que especifica la cantidad de filas a exportar. Por defecto se exportan todas las filas, indicando la propiedad AproxCount que devuelve dicho nmero.

Nota. Este ejemplo ha sido probado con Microsoft Access 2000 y Excel 2000.
Cdigo fuente del formulario: Texto planoImprimir 1. ' ---------------------------------------------------------------------------------------2. ' \\ -- Descripcin : Exportar DataGrid a Excel 3. ' \\ -Controles : Un Datagrid, un CommandButton y la referencia a ADO 4. ' \\ -- Autor : Luciano Lodola -http://www.recursosvisualbasic.com.ar/ 5. ' ---------------------------------------------------------------------------------------6. 7. ' -- Variables para la base de datos 8. Dim cnn As Connection 9. Dim rs As Recordset 10. ' -- Variables para Excel 11. Dim Obj_Excel As Object 12. Dim Obj_Libro As Object 13. Dim Obj_Hoja As Object 14. 15. ' ---------------------------------------------------------------------------------------16. ' \\ -- Sub para exportar 17. ' ---------------------------------------------------------------------------------------18. Private Sub exportar_Datagrid(Datagrid As Datagrid, n_Filas As Long) 19. 20. On Error GoTo Error_Handler 21. 22. Dim i As Integer 23. Dim j As Integer 24. 25. ' -- Colocar el cursor de espera mientras se exportan los datos 26. Me.MousePointer = vbHourglass 27. 28. If n_Filas = 0 Then 29. MsgBox "No hay datos para exportar a excel. Se ha indicado 0 en e l parmetro Filas ": Exit Sub 30. Else 31. 32. ' -- Crear nueva instancia de Excel 33. Set Obj_Excel = CreateObject("Excel.Application") 34. ' -- Agregar nuevo libro

35. 36. 37.

Set Obj_Libro = Obj_Excel.Workbooks.Open(Path)

' -Referencia a la Hoja activa ( la que aade por defecto Excel ) 38. Set Obj_Hoja = Obj_Excel.ActiveSheet 39. 40. iCol = 0 41. ' -- Recorrer el Datagrid ( Las columnas ) 42. For i = 0 To Datagrid.Columns.Count - 1 43. If Datagrid.Columns(i).Visible Then 44. ' -- Incrementar ndice de columna 45. iCol = iCol + 1 46. ' -- Obtener el caption de la columna 47. Obj_Hoja.Cells(1, iCol) = Datagrid.Columns(i).Caption 48. ' -- Recorrer las filas 49. For j = 0 To n_Filas - 1 50. ' -- Asignar el valor a la celda del Excel 51. Obj_Hoja.Cells(j + 2, iCol) = _ 52. Datagrid.Columns(i).CellValue(Datagrid.GetBookmark(j) ) 53. Next 54. End If 55. Next 56. 57. ' -- Hacer excel visible 58. Obj_Excel.Visible = True 59. 60. ' -Opcional : colocar en negrita y de color rojo los enbezados en la hoja 61. With Obj_Hoja 62. .Rows(1).Font.Bold = True 63. .Rows(1).Font.Color = vbRed 64. ' -- Autoajustar las cabeceras 65. .Columns("A:Z").AutoFit 66. End With 67. End If 68. 69. ' -- Eliminar las variables de objeto excel 70. Set Obj_Hoja = Nothing 71. Set Obj_Libro = Nothing 72. Set Obj_Excel = Nothing 73. 74. ' -- Restaurar cursor 75. Me.MousePointer = vbDefault 76. 77. Exit Sub 78. 79. ' -- Error 80. Error_Handler: 81. 82. MsgBox Err.Description, vbCritical 83. On Error Resume Next 84. 85. Set Obj_Hoja = Nothing 86. Set Obj_Libro = Nothing 87. Set Obj_Excel = Nothing 88. Me.MousePointer = vbDefault 89. 90. End Sub 91. 92. ' -----------------------------------------------------------------------------93. ' \\ -Botn para Ejecutar la funcin que exporta los datos del datagrid a exce l

94. ' -----------------------------------------------------------------------------95. Private Sub Command1_Click() 96. Call exportar_Datagrid(DataGrid1, DataGrid1.ApproxCount) 97. End Sub 98. ' -----------------------------------------------------------------------------99. ' \\ -- Inicio 100. ' -----------------------------------------------------------------------------101. Private Sub Form_Load() 102. 103. On Error GoTo Error_Handler 104. 105. ' -- Crear nueva conexin a la base de datos 106. Set cnn = New Connection 107. 108. ' -- Abrir la base de datos. 109. cnn.Open "PROVIDER=Microsoft.Jet.OLEDB.4.0;Data Source=" & App. Path & "\data\bd1.mdb" 110. 111. ' -- Crear nuevo objeto Recordset 112. Set rs = New Recordset 113. ' -- Configurar recordset 114. With rs 115. .CursorLocation = adUseClient 116. End With 117. ' -- Cargar el recordset ( ESPECIFICAR LA CONSULTA SQL ) 118. rs.Open "Select * From tabla1", cnn, adOpenStatic, adLockOptimi stic 119. 120. ' -- Enlazar el datagrid con el recordset anterior 121. Set DataGrid1.DataSource = rs 122. 123. 124. Command1.Caption = " Exportar datagrid a Excel " 125. 126. ' -- Errores 127. Exit Sub 128. Error_Handler: 129. MsgBox Err.Description, vbCritical, "Error en Form Load" 130. End Sub 131. ' -----------------------------------------------------------------------------132. ' \\ -- Fin 133. ' -----------------------------------------------------------------------------134. Private Sub Form_Unload(Cancel As Integer) 135. 136. On Error Resume Next 137. ' -- Cerrar y eliminar recordset 138. If rs.State = adStateOpen Then rs.Close 139. If Not rs Is Nothing Then Set rs = Nothing 140. ' -- cerrar y Eliminar la conexin 141. If cnn.State = adStateOpen Then cnn.Close 142. Set cnn = Nothing 143. End Sub

Nombre

Descripcin

AutoSizeMode

Obtiene o establece el modo mediante el cual la columna ajusta automticamente su tamao. (Se hereda de DataGridViewColumn).

CellTemplate

Reemplazado. Obtiene o establece la plantilla utilizada para crear las nuevas celdas.

CellType

Obtiene el tipo en tiempo de ejecucin de la plantilla de celda. (Se hereda deDataGridViewColumn).

ContextMenuStrip

Obtiene o establece el men contextual para la columna. (Se hereda de DataGridViewColumn).

DataGridView

Obtiene el control DataGridView asociado a este elemento. (Se hereda de DataGridViewElement).

DataPropertyName

Obtiene o establece el nombre de la columna de base de datos o la propiedad del origen de datos a la que se enlaza DataGridViewColumn. (Se hereda de DataGridViewColumn).

DefaultCellStyle

Reemplazado. Obtiene o establece el estilo predeterminado de celda de la columna.

DefaultHeaderCellType

Obtiene o establece el tipo de la celda de encabezado predeterminada en tiempo de ejecucin. (Se hereda de DataGridViewBand).

Displayed

Obtiene un valor que indica si la banda se

muestra actualmente en la pantalla. (Se hereda deDataGridViewBand).

DisplayIndex

Obtiene o establece el orden de presentacin de la columna respecto de las columnas actualmente mostradas. (Se hereda de DataGridViewColumn).

DividerWidth

Obtiene o establece el ancho, en pxeles, del divisor de columna. (Se hereda deDataGridViewColumn).

FalseValue

Obtiene o establece el valor subyacente que corresponde a un valor de celda de false, que aparece como una casilla de verificacin desactivada.

FillWeight

Obtiene o establece un valor que representa el ancho de la columna cuando se encuentra en modo de relleno, respecto del ancho de las dems columnas del control que estn en modo de relleno. (Se hereda de DataGridViewColumn).

FlatStyle

Obtiene o establece la apariencia de estilo plano de las celdas de casilla de verificacin.

Frozen

Obtiene o establece un valor que indica si la columna se va a mover cuando el usuario se desplace horizontalmente por el control DataGridView. (Se hereda de DataGridViewColumn).

HasDefaultCellStyle

Obtiene un valor que indica si la propiedad DefaultCellStyle se ha establecido. (Se hereda deDataGridViewBand).

HeaderCell

Obtiene o establece el objeto DataGridViewColumnHeaderCell que representa el encabezado de columna. (Se hereda de DataGridViewColumn).

HeaderText

Obtiene o establece el texto de ttulo en la celda de encabezado de columna. (Se hereda deDataGridViewColumn).

IndeterminateValue

Obtiene o establece el valor subyacente que corresponde a un valor de celda indeterminado o referencia null (Nothing en Visual Basic), que aparece como una casilla de verificacin desactivada.

Index

Obtiene la posicin relativa de la banda dentro del control DataGridView. (Se hereda deDataGridViewBand).

InheritedAutoSizeMode

Obtiene el modo de ajuste de tamao en vigor para la columna. (Se hereda deDataGridViewColumn).

InheritedStyle

Obtiene el estilo de celda aplicado actualmente a la columna. (Se hereda de DataGridViewColumn).

IsDataBound

Obtiene un valor que indica si la columna est enlazada a un origen de datos. (Se hereda deDataGridViewColumn).

MinimumWidth

Obtiene o establece el ancho mnimo, en pxeles, de la columna. (Se hereda deDataGridViewColumn).

Name

Obtiene o establece el nombre de la columna. (Se hereda de DataGridViewColumn).

ReadOnly

Obtiene o establece un valor que indica si el usuario puede editar las celdas de la columna. (Se hereda de DataGridViewColumn).

Resizable

Obtiene o establece un valor que indica si se puede cambiar el tamao de la columna. (Se hereda de DataGridViewColumn).

Selected

Obtiene o establece un valor que indica si la banda est en un estado seleccionado de la interfaz de usuario (UI). (Se hereda de DataGridViewBand).

Site

Obtiene o establece el sitio de la columna. (Se hereda de DataGridViewColumn).

SortMode

Obtiene o establece el modo de ordenacin de la columna. (Se hereda de DataGridViewColumn).

State

Obtiene el estado de la interfaz de usuario del elemento. (Se hereda de DataGridViewElement).

Tag

Obtiene o establece el objeto que contiene datos para asociar a la banda. (Se hereda deDataGridViewBand).

ThreeState

Obtiene o establece un valor que indica si las celdas de casilla de verificacin alojadas permitirn tener tres estados de verificacin en lugar de dos.

ToolTipText

Obtiene o establece el texto que se utiliza como informacin sobre herramientas. (Se hereda deDataGridViewColumn).

TrueValue

Obtiene o establece el valor subyacente que corresponde a un valor de celda de true, que aparece como una casilla de verificacin activada.

ValueType

Obtiene o establece el tipo de datos de los valores de las celdas de la columna. (Se hereda deDataGridViewColumn).

Visible

Obtiene o establece un valor que indica si la columna es visible. (Se hereda deDataGridViewColumn).

Width

Obtiene o establece el ancho actual de la columna. (Se hereda de DataGridViewColumn).

Arriba

Propiedades protegidas

Nombre

Descripcin

HeaderCellCore

Obtiene o establece la celda de encabezado de DataGridViewBand. (Se hereda deDataGridViewBand).

IsRow

Obtiene un valor que indica si la banda representa una fila. (Se hereda de DataGridViewBand).

Arriba

Potrebbero piacerti anche