SoloCodigo
Programación General => Visual Basic 6.0 e inferiores => Mensaje iniciado por: neorent en Miércoles 1 de Febrero de 2006, 18:00
-
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:
-
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:
-
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:
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
-
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
-
Otra cosa fijate que el textbox esta en el evento KeyUp
-
Otra cosa fijate que el textbox esta en el evento KeyUp
hola angel, y gracias por ayudarme:
sabes no entiendo pk motivo ubicas el codigo en el textbox_keyup
no se para que sirve con eso creo que te digo que soy todo un basico principiante que esta intentando aprender y mejorar lo que existe en su trabajo, me imagino que el texto_keyup debe ser para para cuando uno escribe algo empezar la busqueda?, me parece que es ado sin duda alguna, lo que pasa angel debe ser que tu escribes el codigo bien pero yo no lo entiendo mucho debe ser pok no entiendo mucho como soy nuevo bueno lo que yo queria basicamente era lo siguiente:
1- tener un textbox en cual yo escribo cualquier cosa
2.- un command que cuando yo terminara de escribir en el textbox hiciera click y buscar lo que yo escribi ahi.
3.- pero no pero mi pregunta es si ya genere la busqueda por ejemplo encontro algo y yo tengo varios textbox donde supuestamente mostraba los datos una ves luego le preguntaba al usuario si queria continuar y el decia que si y el codigo pasaba a buscar el siguiente registro que encontrara creo que eso era lo primero.
pero despues me pidieron que eso mismo lo hiciera una grilla que mostrara todo lo que buscaba y que luego yo selecionara algun registro en la grilla y que me mostrara por ejemplo un reporte con ese registro selecionado.... yo me pregunto en mi trabajo no querran otra cosa mas jajajaja.
bueno lo de hacer una grilla y que muestre el informe lo hace pero lo malo es que no me despliega todo lo que yo quiero y tampoco puedo selecionar un solo registro ademas cuando presiono el boton que supuestamente imprime en un reporte me aparecen todos los registro que encontro por un lado esta bien y por el otro no pk ahi mucho campos que estan mal echo un ejemplo de ello es que el campo nombre lleva dentro de el todo el nombre completo por ej. JUANITO PERES, entonces cuando busco debo buscar JUANITO PERES con mayuscula y ademas que debe ser el campo completo y no buscar a todos lo JUANITO que existen en la base de datos mas bien ese es mi problema aun no se me enciende el foco para hacer esto se que se puede pero si mas o menos me explicaran con un codigo lo que hace cada cosa y si en esta linea que muestro aca bajo.
SQL = "select Nombres, Apellidos from CLIENTE where str(codigo_cliente)='" + codigo + "' and Nombre like '" + txtBuscar + "*' "
se pueden agragar mas campos donde buscar, otra cosa es que realmente no entiendo que hace esta linea y donde queda el resultado y como puedo pasar esos datos a una grilla o un texto jejejeje creo que me explaye demasiado pero es ese el problema que tengo no quiero que me hagan el trabajo ya que el objetivo es aprender y quiero aprender y saber que hace cada cosa no se si tu o alguien del foro me puede ayudar.
te agradesco mucho la ayuda espero que me puedan ayudar
muchas gracias y saludos a todos.
-
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
ola diganme en el parte
Set Rs = dbcliente.OpenRecordset(SQL, dbOpenSnapshot)
Rs.MoveFirst
dbcliente q es o q quiere decir
-
por lo que puedo entender dbcliente es el nombre de la base de datos el .OpenRecordset es la intruccion para que en pocas palabras habra la base o no? Angel38
-
Me enviaste un periodico :lol: :lol: :lol:
Bueno lo primero es que JuanPancho tiene razon.
Lo segundo que tambien tu al pensar que, en el momento que oprimes una letra te empieza a buscar.
La grilla se va llenando, es decir, si colocas la letra A, la grilla se llena con todos los nombres que empiezan por la letra A.
si sigues ecribiendo y colocas An, te crea un filtro y ahora busca por las letras An.
y si escribes angel38, te mostrará el cliente o los clientes que se llamen asi.
Intenta entender el codigo o enviame partes que no estiendas, es mas mi correo lo tengo a la vista del publico solo has click en Angel38 y te podre dar una ayuda mas personalizada.
mi horario es por ahora de 12:00 pm a 2:00 pm, hora colombiana.
Sino se puede sigueme haciendo preguntas que yo casi siempre ando por aqui.
Cuando logres entender el codigo te envio la jugada para que al darle doble click al nombre que esta en la grilla esta te muestre la informacion del cliente. :D
Yo también te envié un periodico jajaja :devil:
-
Me enviaste un periodico :lol: :lol: :lol:
Bueno lo primero es que JuanPancho tiene razon.
Lo segundo que tambien tu al pensar que, en el momento que oprimes una letra te empieza a buscar.
La grilla se va llenando, es decir, si colocas la letra A, la grilla se llena con todos los nombres que empiezan por la letra A.
si sigues ecribiendo y colocas An, te crea un filtro y ahora busca por las letras An.
y si escribes angel38, te mostrará el cliente o los clientes que se llamen asi.
Intenta entender el codigo o enviame partes que no estiendas, es mas mi correo lo tengo a la vista del publico solo has click en Angel38 y te podre dar una ayuda mas personalizada.
mi horario es por ahora de 12:00 pm a 2:00 pm, hora colombiana.
Sino se puede sigueme haciendo preguntas que yo casi siempre ando por aqui.
Cuando logres entender el codigo te envio la jugada para que al darle doble click al nombre que esta en la grilla esta te muestre la informacion del cliente. :D
Yo también te envié un periodico jajaja :devil:
miren este es parte del codigo q esta en este pagina
Dim SQL As String
Dim rs7 As Recordset
bus = proape.Text
On Error GoTo ManejoError
mostrar_hc.Clear
SQL = "select * from base_hc where ape_pat like'" + bus + "*' "
Set rs7 = base_hc.OpenRecordset(SQL, dbOpenSnapshot)
rs7.MoveFirst
i = 1
Do While Not rs7.EOF
'mostrar_hc.AddItem rs.Fields("ape_pat").Value
mostrar_hc.Text = "Apellido Paterno"
mostrar_hc.CellBackColor = &HE0E0E0
mostrar_hc.Col = 0
mostrar_hc.Text = "Apellido Materno"
mostrar_hc.CellBackColor = &HE0E0E0
mostrar_hc.Col = 0
mostrar_hc.Rows = i
texto = rs!ape_pat + Chr(9) + rs!ape_mat + Chr(9)
'texto = rs!ape_pat + Chr(9)
mostrar_hc.AddItem texto, i
rs7.MoveNext
i = i + 1
If proape.Text = "" Then
mostrar_hc.Clear
End If
Loop
lo pase a mi apliacacion
pero lo q pasa es q en ves de llenarse con la letra de la primera coincidencia de la b.d no sale nada se borra lo anterior y nada , pueden ayudarme entiendo algo el codigo pero no sale :(
-
Me enviaste un periodico :lol: :lol: :lol:
Bueno lo primero es que JuanPancho tiene razon.
Lo segundo que tambien tu al pensar que, en el momento que oprimes una letra te empieza a buscar.
La grilla se va llenando, es decir, si colocas la letra A, la grilla se llena con todos los nombres que empiezan por la letra A.
si sigues ecribiendo y colocas An, te crea un filtro y ahora busca por las letras An.
y si escribes angel38, te mostrará el cliente o los clientes que se llamen asi.
Intenta entender el codigo o enviame partes que no estiendas, es mas mi correo lo tengo a la vista del publico solo has click en Angel38 y te podre dar una ayuda mas personalizada.
mi horario es por ahora de 12:00 pm a 2:00 pm, hora colombiana.
Sino se puede sigueme haciendo preguntas que yo casi siempre ando por aqui.
Cuando logres entender el codigo te envio la jugada para que al darle doble click al nombre que esta en la grilla esta te muestre la informacion del cliente. :D
Yo también te envié un periodico jajaja :devil:
hola angel bueno yo soy neorent jajaja y si sorry por el diario que te envie pero es que tengo muchas dudas bueno algo he podido comprender el codigo que me enviaste y bueno claro que me gustaria que me guiaras mas o menos como hacer lo de la busqueda quizas debe ser simple pero para mi no lo es jajajaja :D :D :D pero en fin eso seria te lo agradesco mucho por tu ayuda tan pronto pueda te envio un mail o mensaje o me comunico por aqui ok gracias adios
-
y sigo esperando ayundenmeeee
-
y sigo esperando ayundenmeeee
talvez puede ser que tengas problemas con la intruccion mostrar_hc.Clear deshabilita esa opcion y prueba el codigo.
-
Bueno muchachos, no pensé que mi codigo iba a resultar tan interesante, sin echarme tanta bombas porque hay gente que lo hara mucho mejor, pero es un buen codigo para busqueda.
Intenta esto Manuel Angel:
juega con los limpiadores de la grilla ese codigo que dice mostrar_hc.clear. :kicking:
quitalos y colocalos segun el resultado que empiece a dar :whistling:
-
Bueno muchachos, no pensé que mi codigo iba a resultar tan interesante, sin echarme tanta bombas porque hay gente que lo hara mucho mejor, pero es un buen codigo para busqueda.
Intenta esto Manuel Angel:
juega con los limpiadores de la grilla ese codigo que dice mostrar_hc.clear. :kicking:
quitalos y colocalos segun el resultado que empiece a dar :whistling:
eso voy hacer , pero no trendran un codigo mas facil q haga la misma tarea