Programación General > Visual Basic 6.0 e inferiores
Como Buscar En Una Base ?????
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
[#] Página Siguiente
Ir a la versión completa