Formulario Para Buscar en Un DataGrid Mediante Un TextBox y Commandbuttons VB6
Short Description
Download Formulario Para Buscar en Un DataGrid Mediante Un TextBox y Commandbuttons VB6...
Description
Pero he encontrado lo que queria en una sola linea y ademas que funciona con DAO: Private Sub Text1_Change() Data1.RecordSource = "select * from Productos where NombreProducto like '" & Text1.Text & "*';" Data1.Refresh End Sub Esto lo uni con un datagrid, y me va limpiando el datagrid a medida que voy hallando el producto deseado, mientras escribo.
Ejemplo 1 Formulario para buscar en un DataGrid mediante un TextBox y Commandbuttons. El ejemplo para buscar , utiliza el método 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 añaden 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 método Find, por ejemplo si se busca en un campo de tipo Numérico También 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
Código fuente en el formulario Texto planoCopiar código fuenteImprimir 1. Option Explicit 2. 3. '****************************************************************** ***************** 4. ' Ejemplo para buscar en un DataGrid con el método 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 conexión 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.OLEDB.4.0;" & _ 24. "Data Source=C:\Archivos de programa" & _ 25. "\Microsoft Visual Studio\VB98\" & _
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. 'Botón para buscar hacia atrás 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 = Recordset.RecordCount 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 atrás 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 + "*'", , adSearchForward 98. ' Busca la cadena completa 99. ElseIf Check1.Value = 1 Then 100. Recordset.Find Combo1.Text & "='" + Text1.Text + "'", , adSearchForward 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 conexión 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 conexión 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. "[NombreCompañía]," & _ 133. "[CargoContacto] " & _ 134. "From Proveedores Order By NombreContacto Asc", _ 135. db, adOpenStatic, adLockOptimistic 136. 137. Dim i As Integer 138. 139. 'Recorre los campos del recordset para añadirlos al combobox
140. 'Nota: los campos deben ser de tipo String 141. For i = 0 To Recordset.Fields.Count - 1 142. Combo1.AddItem Recordset.Fields.Item(i).Name 143. Next i 144. 145. ' Selecciona el campo 1 146. Combo1.ListIndex = 0 147. 148. 149. ' Engancha el recordset al datagrid 150. Set DataGrid1.DataSource = Recordset 151. 152. ' Opcional . esto hace que se seleccione la fila completa en el DataGrid 153. DataGrid1.MarqueeStyle = dbgHighlightRowRaiseCell 154. 155. Text1 = "" 156. 'caption de los controles 157. Command1.Caption = "Quitar Filtro" 158. Command1.Caption = " > " 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 atrás y hacia adelante 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. If Recordset.BOF Or Recordset.EOF Then
196. Recordset.AbsolutePosition = Actual 197. End If 198. ' Si el textbox está vacío, 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á vacío 208. Text1.BackColor = COLOR_TEXTBOX_NORMAL 209. 210. End If 211. 212. End Sub 213. 214. ' Evento que se dispara cuando se cambia de posición en el recordset 215. Private Sub Recordset_MoveComplete(ByVal adReason As ADODB.EventReasonEnum, _ 216. ByVal pError As ADODB.Error, adStatus As ADODB.EventStatusEnum, _ 217. ByVal pRecordset As ADODB.Recordset) 218. 219. ' Muestra en el caption del formulario el número registro actual 220. Me.Caption = " Registro actual: " & CStr(Recordset.AbsolutePosition) 221. 222. End Sub 223. 224. ' 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 String, _ 227. ByVal HelpFile As String, ByVal HelpContext As Long, _ 228. fCancelDisplay As Boolean) 229. ' Mostramos el error 230. MsgBox " Descripción 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
Option Explicit '*********************************************************************************** ' Ejemplo para buscar en un DataGrid con el método Find del recordset 'Controles : 1 - La referencia a Ado _ 2 - Un control DataGrid ( DataGRid1 ) _ 3 - Un control Textbox (Text1) _ 4 - Dos CommandButon ( Command1 y Command2 ) _ 5 - Un Combobox ( Combo1 - Para los campos ) _
Ejemplo 2 Otro ejemplo ( de la ayuda de vb ) Este código 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 método Find . Descargar proyecto y artículo original
View more...
Comments