Mayo 27, 2018, 11:37:03 am

Autor Tema: ayuda en base de datos  (Leído 2159 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado k64

  • Me das tu IP?
  • *
  • Mensajes: 15
    • Ver Perfil
    • servitec24hs
ayuda en base de datos
« en: Abril 21, 2007, 03:46:47 pm »
hola nesesito una code q busq en una base de datos y alguno
que ordene alnfabeticamente los nombres q aparesen el control grild
Seguid hambrinetos. Seguid alocado.
You are not allowed to view links. Register or Login

Desconectado happy-word

  • Me das tu IP?
  • *
  • Mensajes: 145
  • Sexo: Masculino
    • Ver Perfil
Re: ayuda en base de datos
« Respuesta #1 en: Abril 23, 2007, 08:21:24 am »
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




 :) :toma:
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_STRING la _
                cadena de conexión para la base de datos _
             8 - Indicar en el FormLoad, la consulta Sql para el recordset



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

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

' ConnectionString
Private Const s_CONNECTION_STRING 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.Recordset
'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.MoveLast
    End If
    ' Habilita y deshabilita los command de buscar
    If Recordset.BOF Or Recordset.AbsolutePosition <= 1 Then
       Command1.Enabled = False
       Command2.Enabled = True
       Command2.SetFocus
       Exit Sub
    End If
    
    Dim Anterior As Long
    ' guarda la posición del Registro anterior
    Anterior = Recordset.AbsolutePosition
    ' Mueve el cursor
    Recordset.Move 0, Recordset.Bookmark - 1
    
    ' Busca en cualquier parte de la cadena
    If Check1.Value = 0 Then
        Recordset.Find Combo1.Text & " LIKE '*" + Text1.Text + "*'", , adSearchBackward
    ' Busca la cadena completa
    ElseIf Check1.Value = 1 Then
        Recordset.Find Combo1.Text & "='" + Text1.Text + "'", , adSearchBackward
    End If
    
    Command2.Enabled = True
    ' Si llega al principio , selecciona la última fila encontrada
    If Recordset.BOF Then
       Recordset.AbsolutePosition = Anterior
       Command1.Enabled = False
       Command2.SetFocus
    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.MoveFirst
    End If
    ' Habilita y deshabilita los botones para buscar
    If Recordset.EOF Or Recordset.AbsolutePosition >= Recordset.RecordCount Then
       Command2.Enabled = False
       Command1.Enabled = True
       Command1.SetFocus
       Exit Sub
    End If
    
    Dim Anterior As Long
    ' Almacena la fila actual
    Anterior = Recordset.AbsolutePosition
    ' Mueve un registro hacia atrás
    Recordset.Move 0, Recordset.Bookmark + 1
    
    ' Busca en cualquier parte de la cadena
    If Check1.Value = 0 Then
        Recordset.Find Combo1.Text & " LIKE '*" + Text1.Text + "*'", , adSearchForward
    ' Busca la cadena completa
    ElseIf Check1.Value = 1 Then
        Recordset.Find Combo1.Text & "='" + Text1.Text + "'", , adSearchForward
    End If
    
    Command1.Enabled = True
    
    If Recordset.EOF Then
       Command2.Enabled = False
       Command1.SetFocus
       Recordset.AbsolutePosition = Anterior
    End If
    
End Sub


Private Sub Form_Load()
    
    ' Variable para la conexión de Ado
    Dim db As ADODB.Connection
    
    ' Nuevo objeto Connection
    Set db = New ADODB.Connection
    
    db.CursorLocation = adUseClient
    
    ' Abre la base de datos pasando la cadena de conexión
    db.Open s_CONNECTION_STRING
    
    ' 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, adLockOptimistic
    
    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.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 DataGrid
    DataGrid1.MarqueeStyle = dbgHighlightRowRaiseCell
    
    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.AbsolutePosition
        End If
        
        ' Busca en cualquier parte de la cadena
        If Check1.Value = 0 Then
            Recordset.Find Combo1.Text & " LIKE '*" & Text1.Text & "*'", , adSearchForward
        ' Busca la Cadena completa
        ElseIf Check1.Value = 1 Then
            Recordset.Find Combo1.Text & "='" & Text1.Text & "'", , adSearchForward
        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.DataSource = 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_MoveComplete(ByVal adReason As ADODB.EventReasonEnum, _
                                ByVal pError As ADODB.Error, adStatus As ADODB.EventStatusEnum, _
                                ByVal pRecordset As ADODB.Recordset)
  
  ' Muestra en el caption del formulario el número registro actual
  Me.Caption = " Registro actual: " & CStr(Recordset.AbsolutePosition)
  
End Sub

' Cuando se produce un error en el recordset se dispara este evento
Private Sub Recordset_Error(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.State = 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: :koolCPH:
You are not allowed to view links. Register or Login[/img]

Desconectado happy-word

  • Me das tu IP?
  • *
  • Mensajes: 145
  • Sexo: Masculino
    • Ver Perfil
Re: ayuda en base de datos
« Respuesta #2 en: Abril 23, 2007, 08:37:50 am »
Código: You are not allowed to view links. Register or Login
[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: :koolCPH:
espero que te sirva este ejmplo con dao

Desconectado happy-word

  • Me das tu IP?
  • *
  • Mensajes: 145
  • Sexo: Masculino
    • Ver Perfil
Re: ayuda en base de datos
« Respuesta #3 en: Abril 23, 2007, 08:39:24 am »
tambien te recominendo que tu busqueda la agas a travez de sql para personalizarla mejor y poder organizarla como quieres


resuelto
[Solucionado] ayuda principiante (guardar datos en base de datos en access)

Iniciado por miguel-in

5 Respuestas
1703 Vistas
Último mensaje Junio 04, 2010, 05:00:38 pm
por EddyW
xx
Ayuda en modificar datos de una base de datos

Iniciado por Deathmaker

3 Respuestas
1868 Vistas
Último mensaje Marzo 26, 2009, 09:32:38 am
por alex19910218
xx
Ayuda base de datos

Iniciado por marcosjp88

2 Respuestas
1257 Vistas
Último mensaje ſeptiembre 04, 2007, 08:01:51 pm
por marcosjp88
xx
Ayuda con una base de datos

Iniciado por orochimaru

3 Respuestas
1364 Vistas
Último mensaje Diciembre 29, 2009, 03:06:30 pm
por orochimaru
question
Ayuda con base de datos en VB6

Iniciado por YuusukE_UchihA

4 Respuestas
1456 Vistas
Último mensaje Diciembre 15, 2009, 09:13:14 pm
por EddyW
exclamation
ayuda penetrando a la base de datos

Iniciado por b4dm4st3r

8 Respuestas
1827 Vistas
Último mensaje Julio 19, 2012, 04:31:48 pm
por b4dm4st3r
resuelto
Ayuda Base de Datos(SOLUCIONADO)

Iniciado por DarkProgrammer

4 Respuestas
1423 Vistas
Último mensaje Noviembre 03, 2009, 09:17:39 am
por DarkProgrammer
question
Ayuda con base de datos en VB.net 2008

Iniciado por jojo5716

4 Respuestas
1957 Vistas
Último mensaje Junio 16, 2010, 01:42:43 pm
por olmos5630
question
Ayuda base de datos acces en C#

Iniciado por Relieve

0 Respuestas
1179 Vistas
Último mensaje Julio 30, 2015, 04:31:13 pm
por Relieve
xx
Ayuda al cargar la base de datos

Iniciado por andres88_

0 Respuestas
1095 Vistas
Último mensaje Noviembre 25, 2009, 07:23:14 pm
por andres88_