hacker


Ingresar con nombre de usuario, contraseña y duración de la sesión
| Portal Hacker | Editorial | Descargas | Ezine |
Inicio Ayuda Ingresar Registrarse
08 de Julio de 2008, 10:36:29
Noticias:
Para ver este enlace Registrate o Inicia Sesion
No te llega el mail de CONFIRMACION? (leer esto)

+  Foros pOrtal Hacker
|-+  Programacion
| |-+  Programación en general
| | |-+  Visual Basic (Moderadores: ranefi, crypto136, ziBboh, >> s E t H <<)
| | | |-+  ayuda en base de datos
0 Usuarios y 1 Visitante están viendo este tema. « anterior próximo »
Páginas: [1] Ir Abajo Imprimir
Autor Tema: ayuda en base de datos  (Leído 432 veces)
k64
Recien llegado
*
Desconectado Desconectado

Mensajes: 2


Ver Perfil
« : 21 de Abril de 2007, 01:46:47 »

hola nesesito una code q busq en una base de datos y alguno
que ordene alnfabeticamen te los nombres q aparesen el control grild
En línea
happy-word
NZ2
**
Desconectado Desconectado

Mensajes: 166


Visiten mi foro foro-bauldelcodigo.tk


Ver Perfil WWW
« Respuesta #1 : 23 de Abril de 2007, 06:21:24 »

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




 Smiley toma-xD
Código fuente en el formulario

 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 ) _
             6 - Un CheckBox _
             7 - Indicar en la constante s_CONNECTION_S TRING la _
                cadena de conexión para la base de datos _
             8 - Indicar en el FormLoad, la consulta Sql para el recordset



'***********************************************************************************

'***********************************************************************************

' ConnectionStri ng
Private Const s_CONNECTION_S TRING As String = "Provider=Microsoft.Jet.OLEDB.4.0;" & _
                                             "Data Source=C:\Archivos de programa" & _
                                             "\Microsoft Visual Studio\VB98\" & _
                                             "NWIND.MDB;Persist Security Info=False"

' Colores de fondo para los textbox mientras se busca
Private Const COLOR_TEXTBOX_ NO_FOUND As Long = &H8080FF
Private Const COLOR_TEXTBOX_ FOUND As Long = &HC0FFFF
Private Const COLOR_TEXTBOX_ NORMAL As Long = vbWhite
'***********************************************************************************


' Variable de tipo Recordset y con evento
Private WithEvents Recordset As ADODB.Recordse t
'Botón para buscar hacia atrás
Private Sub Command1_Click()
    
    ' Si llega al final posiciona el recordset en el último registro
    If Recordset.EOF Then
       Recordset.Move Last
    End If
    ' Habilita y deshabilita los command de buscar
    If Recordset.BOF Or Recordset.Abso lutePosition <= 1 Then
       Command1.Enabl ed = False
       Command2.Enabl ed = True
       Command2.SetFo cus
       Exit Sub
    End If
    
    Dim Anterior As Long
    ' guarda la posición del Registro anterior
    Anterior = Recordset.Abso lutePosition
    ' Mueve el cursor
    Recordset.Move 0, Recordset.Book mark - 1
    
    ' Busca en cualquier parte de la cadena
    If Check1.Value = 0 Then
        Recordset.Find Combo1.Text & " LIKE '*" + Text1.Text + "*'", , adSearchBackwa rd
    ' Busca la cadena completa
    ElseIf Check1.Value = 1 Then
        Recordset.Find Combo1.Text & "='" + Text1.Text + "'", , adSearchBackwa rd
    End If
    
    Command2.Enabled = True
    ' Si llega al principio , selecciona la última fila encontrada
    If Recordset.BOF Then
       Recordset.Abso lutePosition = Anterior
       Command1.Enabl ed = False
       Command2.SetFo cus
    End If
    
End Sub
'Botón para buscar hacia adelante
Private Sub Command2_Click()
    ' Si llega al principio posiciona el recordset en el primer registro
    If Recordset.BOF Then
       Recordset.Move First
    End If
    ' Habilita y deshabilita los botones para buscar
    If Recordset.EOF Or Recordset.Abso lutePosition >= Recordset.Reco rdCount Then
       Command2.Enabl ed = False
       Command1.Enabl ed = True
       Command1.SetFo cus
       Exit Sub
    End If
    
    Dim Anterior As Long
    ' Almacena la fila actual
    Anterior = Recordset.Abso lutePosition
    ' Mueve un registro hacia atrás
    Recordset.Move 0, Recordset.Book mark + 1
    
    ' Busca en cualquier parte de la cadena
    If Check1.Value = 0 Then
        Recordset.Find Combo1.Text & " LIKE '*" + Text1.Text + "*'", , adSearchForwar d
    ' Busca la cadena completa
    ElseIf Check1.Value = 1 Then
        Recordset.Find Combo1.Text & "='" + Text1.Text + "'", , adSearchForwar d
    End If
    
    Command1.Enabled = True
    
    If Recordset.EOF Then
       Command2.Enabl ed = False
       Command1.SetFo cus
       Recordset.Abso lutePosition = Anterior
    End If
    
End Sub


Private Sub Form_Load()
    
    ' Variable para la conexión de Ado
    Dim db As ADODB.Connecti on
    
    ' Nuevo objeto Connection
    Set db = New ADODB.Connecti on
    
    db.CursorLocation = adUseClient
    
    ' Abre la base de datos pasando la cadena de conexión
    db.Open s_CONNECTION_S TRING
    
    ' crea un Recordset
    Set Recordset = New Recordset
    
    ' Abre el Recordset con la consulta Sql
    Recordset.Open "Select [NombreContacto]," & _
                          "[NombreCompañía]," & _
                          "[CargoContacto] " & _
                          "From Proveedores Order By NombreContacto Asc", _
                          db, adOpenStatic, adLockOptimist ic
    
    Dim i As Integer
    
   'Recorre los campos del recordset para añadirlos al combobox
   'Nota: los campos deben ser de tipo String
    For i = 0 To Recordset.Fiel ds.Count - 1
        Combo1.AddItem Recordset.Fiel ds.Item(i).Name
    Next i
    
    ' Selecciona el campo 1
    Combo1.ListIndex = 0
    
    
    ' Engancha el recordset al datagrid
    Set DataGrid1.Data Source = Recordset
    
    ' Opcional . esto hace que se seleccione la fila completa en el DataGrid
    DataGrid1.MarqueeStyle = dbgHighlightRo wRaiseCell
    
    Text1 = ""
    'caption de los controles
    Command1.Caption = "Quitar Filtro"
    Command1.Caption = " << Buscar Anterior "
    Command2.Caption = " Buscar Siguiente >> "
    Check1.Caption = " Buscar palabra completa"

End Sub


Private Sub Text1_Change()
    
    If Text1 <> "" Then
                
        ' Habilita los botones para buscar hacia atrás y hacia adelante
        Command1.Enabled = True
        Command2.Enabled = True
        
        Dim Actual As Long
        ' almacena la fila actual, por si no so se encontró vuelve a posicionar _
          el recordset en dicha fila
        If Not Recordset.EOF And Not Recordset.BOF Then
            Actual = Recordset.Abso lutePosition
        End If
        
        ' Busca en cualquier parte de la cadena
        If Check1.Value = 0 Then
            Recordset.Find Combo1.Text & " LIKE '*" & Text1.Text & "*'", , adSearchForwar d
        ' Busca la Cadena completa
        ElseIf Check1.Value = 1 Then
            Recordset.Find Combo1.Text & "='" & Text1.Text & "'", , adSearchForwar d
        End If
        
        ' Color del fondo del textbox
        If Not Recordset.EOF And Not Recordset.BOF Then
            Text1.BackColor = COLOR_TEXTBOX_ FOUND
        Else
            Text1.BackColor = COLOR_TEXTBOX_ NO_FOUND
        End If
        
        If Recordset.BOF Or Recordset.EOF Then
            Recordset.AbsolutePosition = Actual
        End If
    ' Si el textbox está vacío, posiciona el recordset en el primer registro
    Else
        
        Command1.Enabled = False
        Command2.Enabled = False
    
        Recordset.MoveFirst
        
        Set DataGrid1.Data Source = Recordset
        ' Color de fondo del textbox cuando está vacío
        Text1.BackColor = COLOR_TEXTBOX_ NORMAL
        
    End If
    
End Sub

' Evento que se dispara cuando se cambia de posición en el recordset
Private Sub Recordset_Move Complete(ByVal adReason As ADODB.EventRea sonEnum, _
                                ByVal pError As ADODB.Error, adStatus As ADODB.EventSta tusEnum, _
                                ByVal pRecordset As ADODB.Recordse t)
  
  ' Muestra en el caption del formulario el número registro actual
  Me.Caption = " Registro actual: " & CStr(Recordset.Abso lutePosition)
  
End Sub

' Cuando se produce un error en el recordset se dispara este evento
Private Sub Recordset_Erro r(ByVal ErrorNumber As Long, Description As String, _
                         ByVal Scode As Long, ByVal Source As String, _
                         ByVal HelpFile As String, ByVal HelpContext As Long, _
                         fCancelDisplay As Boolean)
  ' Mostramos el error
  MsgBox " Descripción del Error :" & Description, vbCritical
End Sub

' Cierra el recordset y Descarga la referencia
Private Sub Form_Unload(Cancel As Integer)
    
    ' Cierra
    If Recordset.Stat e = adStateOpen Then
        Recordset.Close
    End If
    
    ' descarga
    If Not Recordset Is Nothing Then
        Set Recordset = Nothing
    End If
End Sub

espero que te sirva de algo- toma-xD kool
En línea


Para ver este enlace Registrate o Inicia Sesion
::::: Apoyenme para ser moderador de diseño grafico para animar el foro. . :::::

bauldelcodigo[/ce
happy-word
NZ2
**
Desconectado Desconectado

Mensajes: 166


Visiten mi foro foro-bauldelcodigo.tk


Ver Perfil WWW
« Respuesta #2 : 23 de Abril de 2007, 06:37:50 »

Código:
[color=red][glow=red,2,300]Buscar en una base de datos[/glow].[/color]

En esta ocasión vamos a añadir un botón buscar y buscar siguiente, para que podamos seguir buscando a partir del último registro encontrado.
En el ejemplo anterior, se buscaba al pulsar Intro en la caja de textos, pero ahora vamos a crear un procedimiento Buscar, el cual, según el parámetro recibido, buscará la primera coincidencia o seguirá buscando desde el último dato hallado.

Antes de añadir un nuevo botón, vamos a modificar el código actual para usar el nuevo procedimiento Buscar.

Crea un nuevo procedimiento, en el menú Herramientas (Tools), selecciona Añadir procedimiento..., llámalo Buscar y haz que sea privado, ya que no tiene ningún sentido que sea público, porque sólo se usará desde el formulario.
También puedes copiar y pegar el siguiente código:

'
Private Sub Buscar()
    ' Procedimiento para buscar el dato indicado                    (12/Feb/01)
    Dim nReg As Long
    '
    ' Buscar la primera coincidencia en el recordset del Data1
    '
    If Option1.Value Then    ' en el campo Au_ID
        ' Convertir el contenido de TextBox en un número
        nReg = Val(Text4)
        '
        Data1.Recordset.FindFirst "Au_ID = " & nReg
    End If
    If Option2.Value Then   ' en el campo Author
        '
        Data1.Recordset.FindFirst "Author Like '" & Text4.Text & "'"
    End If
End Sub

Ahora hay que modificar el evento KeyPress del control Text4, para que llame al nuevo procedimiento.
Borra el código que había anteriormente en ese evento y sustitúyelo por este otro:

'
Private Sub Text4_KeyPress(KeyAscii As Integer)
    ' Se buscará sólo cuando pulsemos INTRO
    '
    ' Comprobar si la tecla pulsada es Intro: vbKeyReturn o 13 que es lo mismo
    If KeyAscii = vbKeyReturn Then
        ' Esta asignación evita que suene un BEEP
        KeyAscii = 0
        ' Llamamos al procedimiento Buscar:
        Buscar
    End If
End Sub

Pruébalo, para que veas que todo funciona como antes.


Ahora, vamos a añadir un botón para que busque el primer registro que coincida con lo escrito, esto es para hacer lo mismo que cuando pulsas Intro en el Text4, pero para el usuario será más lógico que el hecho de tener que pulsar Intro.
Por tanto, añade un nuevo botón, (no te preocupes por ahora dónde colocarlo en el formulario, ya lo haremos dentro de poco), cámbiale el nombre a cmdBuscar y el Caption a Buscar, (por defecto será Command1) y escribe o añade este código (también puedes hacerlo copiando y pegando):

'
Private Sub cmdBuscar_Click()
    ' Simplemente llamamos al procedimiento Buscar:
    Buscar
End Sub

 toma-xD kool
espero que te sirva este ejmplo con dao
En línea


Para ver este enlace Registrate o Inicia Sesion
::::: Apoyenme para ser moderador de diseño grafico para animar el foro. . :::::

bauldelcodigo[/ce
happy-word
NZ2
**
Desconectado Desconectado

Mensajes: 166


Visiten mi foro foro-bauldelcodigo.tk


Ver Perfil WWW
« Respuesta #3 : 23 de Abril de 2007, 06:39:24 »

tambien te recominendo que tu busqueda la agas a travez de sql para personalizarla mejor y poder organizarla como quieres
En línea


Para ver este enlace Registrate o Inicia Sesion
::::: Apoyenme para ser moderador de diseño grafico para animar el foro. . :::::

bauldelcodigo[/ce
Páginas: [1] Ir Arriba Imprimir 
« anterior próximo »
Ir a:  


Ingresar con nombre de usuario, contraseña y duración de la sesión

Powered by SMF 1.1.5 | SMF © 2006-2008, Simple Machines LLC hacker

Juegos gratis - Articulos PHP - Juegos - Trucos - Letras - Juegos - Juegos Online