Programación General > Visual Basic 6.0 e inferiores

 Como Buscar En Una Base ?????

(1/3) > >>

neorent:
hola a todos amigos espero que esten muy bien bueno aqui estoy de nuevo haciendo consultas jejeje :P , lo que pasa es que estoy tratando de hacer una busqueda por un campo determinado pero encuentro que el codigo es demasiado grande y ademas busca por un solo registro, mi pregunta es como puedo hacer una busqueda pero que busque en la base por un dato especifico y que me muestre ese dato. ej.
nombre  depto       ciudad  fono.
carlos     los paltos lillos     133
esa es la base con esos registros ya y por ejemplo esta carlos y quiero buscar por ejemplo por "los", y deberia o buscar cualquiera que empiece o termine o incluso entre medio de la palabra "los", alguien sabe como se hace. yo tengo un codigo pero no se si funciona les muestro.

option explicit
Dim a As Database  'base datos
Dim b As Recordset 'maestro atenciones
Dim c As Recordset 'direeciones
Dim d As Recordset 'tabla_tecnicos
Dim e As Recordset 'equipamiento_atendido


Private Sub Cmdbuscar_Click()
Do While b.EOF = False
    If Text1.Text = b("folio_atencion") Then
        Text2.Text = b("fecha_llamado") & ""
        Text3.Text = b("hora_llamado") & ""
        Text4.Text = b("usuario_atencion") & ""
        Combo1.Text = b("direccion_depto") & ""
        Text5.Text = b("n_oficina") & ""
        Text6.Text = b("fono_anexo") & ""
        Text7.Text = b("problema_descrito") & ""
        Combo2.Text = b("tipo_problema") & ""
        Combo3.Text = b("tecnico_asignado") & ""
        Text8.Text = b("fecha_atencion") & ""
        Text9.Text = b("hora_salida_atencion") & ""
        Text10.Text = b("hora_inicio_atencion") & ""
        Text11.Text = b("hora_termino_atencion") & ""
        Text12.Text = b("hora_llegada_atencion") & ""
        Text13.Text = Text1.Text
        Text26.Text = b("problema_detectado") & ""
        Text25.Text = b("solucion_atencion") & ""
        Text22.Text = b("obs_atencion") & ""
        Combo4.Text = b("estado_atencion") & ""
        Text23.Text = b("derivado") & ""
        Text24.Text = b("fecha_cierre_atencion") & ""
        If b("mti") & "" = True Then
        Check1.Value = True
        Else
        Check1.Value = False
        End If
        b.MoveNext
    Else
        b.MoveNext
    End If
Loop
Do While e.EOF = False
    If Text1.Text = e("folio_de_atencion") Then
        Text13.Text = e("folio_de_atencion")
        Text14.Text = e("numero_serie") & ""
        Combo5.Text = e("tipo_equipo") & ""
        Text16.Text = e("marca_equipo") & ""
        Text17.Text = e("modelo_equipo") & ""
        Text18.Text = e("nombre_tecnico") & ""
        Text19.Text = e("problema_detectado") & ""
        Text20.Text = e("tipo_falla") & ""
        Text21.Text = e("estado_falla") & ""
        e.MoveNext
    Else
        e.MoveNext
    End If
Loop
If Text2.Text = "" Then
    MsgBox "No se Encontro Folio", vbInformation, "Busque Nuevamente"
    Call limpiar
    Call cargar
    b.MoveFirst
    c.MoveFirst
    d.MoveFirst
    e.MoveFirst
    Text1.SetFocus
Else
    Text4.SetFocus
End If

End Sub

Private Sub Form_Load()'aqui esta la base donde me conecto
Set a = OpenDatabase("\\Obiwan\soporte\bd1.mdb")
Set b = a.OpenRecordset("maestro_atenciones")
Set c = a.OpenRecordset("CCOSTOS")
Set d = a.OpenRecordset("tabla_tecnicos")
Set e = a.OpenRecordset("equipamiento_atendido")
End Sub


esto es lo unico que se me ocurrio hacer pero es muy fome pk busca por un solo regitro y ademas completo y yo quiero que busque en cualquier registro y que busque lo que yo escribo no se si se entiende, bueno si alguno de ustedes me puede mostrar como hacerlo no que me lo hagan o me explique como hacerlo con algun ejemplo seria genial bueno si es que alguien puede hacer algo para echarme la manito con esto se lo agradeceria mucho cuidense que esten muy bien adios y muchas gracias :smartass:  :comp:

Angel38:
Hola Neorent.

Te envio una busqueda inteligente para que la estudies y la adaptes, no es lo que quieres especificamente pero tal vez te de una idea o quien sabe, tal vez te parezca mejor :comp:

Private Sub txtBuscar_KeyUp(KeyCode As Integer, Shift As Integer)
Dim SQL As String
Dim mySnap As Recordset

   On Error GoTo ManejoError
   gri.Clear
   SQL = "select Nombres, Apellidos from CLIENTE where str(id_vendedor)='" + Str(Codigo) + "' and Nombres like '" + txtBuscar + "*' "

'Espero te des cuenta del * en (Nombres like '" + txtBuscar + "(*)' ")
'Es la pieza clave de la instruccion SQL

   Set mySnap = Dbcliente.OpenRecordset(SQL, dbOpenSnapshot)
   mySnap.MoveFirst
   i = 1

 Do While Not mySnap.EOF
    gri.Text = "Nombres"
    gri.CellBackColor = &HE0E0E0
    gri.Col = 1
    gri.Text = "Apellidos"
    gri.CellBackColor = &HE0E0E0
    gri.Col = 0
    gri.Rows = i
    texto = mySnap!nombres + Chr(9) + mySnap!Apellidos + Chr(9)
    gri.AddItem texto, i
    mySnap.MoveNext
    i = i + 1
   If txtBuscar.Text = "" Then
      griClientes.Clear
   End If
 Loop

 
ManejoError:
   griClientes.Text = "Nombres"
   griClientes.CellBackColor = &HE0E0E0
   griClientes.Col = 1
   griClientes.Text = "Apellidos"
   griClientes.CellBackColor = &HE0E0E0
   griClientes.Col = 0
Exit Sub

'Este es una busqueda desde un textbox con un MSflexGrid el cual al introducir
'una letra enseguida se llena el grid con los nombres que comiencen por
'esa letra
'Nota: Esta en DAO pero lo puedes adaptar :hola:

neorent:

--- Cita de: "Angel38" --- Hola Neorent.

Te envio una busqueda inteligente para que la estudies y la adaptes, no es lo que quieres especificamente pero tal vez te de una idea o quien sabe, tal vez te parezca mejor :comp:

Private Sub txtBuscar_KeyUp(KeyCode As Integer, Shift As Integer)
Dim SQL As String
Dim mySnap As Recordset

   On Error GoTo ManejoError
   gri.Clear
   SQL = "select Nombres, Apellidos from CLIENTE where str(id_vendedor)='" + Str(Codigo) + "' and Nombres like '" + txtBuscar + "*' "

'Espero te des cuenta del * en (Nombres like '" + txtBuscar + "(*)' ")
'Es la pieza clave de la instruccion SQL

   Set mySnap = Dbcliente.OpenRecordset(SQL, dbOpenSnapshot)
   mySnap.MoveFirst
   i = 1

 Do While Not mySnap.EOF
    gri.Text = "Nombres"
    gri.CellBackColor = &HE0E0E0
    gri.Col = 1
    gri.Text = "Apellidos"
    gri.CellBackColor = &HE0E0E0
    gri.Col = 0
    gri.Rows = i
    texto = mySnap!nombres + Chr(9) + mySnap!Apellidos + Chr(9)
    gri.AddItem texto, i
    mySnap.MoveNext
    i = i + 1
   If txtBuscar.Text = "" Then
      griClientes.Clear
   End If
 Loop

 
ManejoError:
   griClientes.Text = "Nombres"
   griClientes.CellBackColor = &HE0E0E0
   griClientes.Col = 1
   griClientes.Text = "Apellidos"
   griClientes.CellBackColor = &HE0E0E0
   griClientes.Col = 0
Exit Sub

'Este es una busqueda desde un textbox con un MSflexGrid el cual al introducir
'una letra enseguida se llena el grid con los nombres que comiencen por
'esa letra
'Nota: Esta en DAO pero lo puedes adaptar :hola:
--- Fin de la cita ---
hola angel:


    sorry pero no entendi mucho el codigo sorry :P , bueno como lo puedo hacer tal como indicas en el codigo te lo agradesco lo voy a probar y de a poco a mejorar o ver que se puede hacer ya te lo agradesco muchisimo gracias por tu tiempo :D  adios y que estes muy bien

Angel38:
Se me paso un errorsito :D estaba a la carrera, intenta estudiarlo otra vez a ver si lo entiendes mejor.(Olvidate de lo primero y mira este).
Trabajas con DAO o ADO???

Private Sub txtBuscar_KeyUp(KeyCode As Integer, Shift As Integer)
Dim SQL As String
Dim mySnap As Recordset

On Error GoTo ManejoError
gri.Clear
SQL = "select Nombres, Apellidos from CLIENTE where str(codigo_cliente)='" + codigo + "' and Nombre like '" + txtBuscar + "*' "

'Espero te des cuenta del * en (Nombre like '" + txtBuscar + "(*)' ")
'Es la pieza clave de la instruccion SQL

Set mySnap = Dbcliente.OpenRecordset(SQL, dbOpenSnapshot)
mySnap.MoveFirst
i = 1

Do While Not mySnap.EOF
     gri.Text = "Nombres"
     gri.CellBackColor = &HE0E0E0
     gri.Col = 1
     gri.Text = "Apellidos"
     gri.CellBackColor = &HE0E0E0
     gri.Col = 0
     gri.Rows = i
     texto = mySnap!nombre + Chr(9) + mySnap!Apellidos + Chr(9)
     gri.AddItem texto, i
     mySnap.MoveNext
     i = i + 1
    If txtBuscar.Text = "" Then
       gri.Clear
    End If
Loop


ManejoError:
gri.Text = "Nombres"
gri.CellBackColor = &HE0E0E0
gri.Col = 1
gri.Text = "Apellidos"
gri.CellBackColor = &HE0E0E0
gri.Col = 0
Exit Sub

Angel38:
Otra cosa fijate que el textbox esta en el evento KeyUp

Navegación

[0] Índice de Mensajes

[#] Página Siguiente

Ir a la versión completa