Como realizar una busqueda

Iniciado por arts, 21 Mayo 2013, 21:37 PM

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

arts

Muy buenas, tengo un pequeño problema de concepto creo, estoy realizando una búsqueda según el texto de 4 combo box. Lo que quiero es que según lo que tenga marcado en los combo box se busque en mi archivo txt, es decir si pongo en un combobox nombre: pepe, dni: 49028334-ñ y tlf 6905677 no se si debería mostrar solo un usuario con esa coincidencia el cual debería ser solo 1 porque dni no se repiten o todos los usuarios llamados pepe ya que el dni y tlf no va a coincidir con la busqueda.

Por ahora tengo esto

Código (vbnet) [Seleccionar]

For I = 0 To 249
            If TB_A(I, 0) = curso And TB_A(I, 1) = clase And TB_A(I, 4) = asignatura And TB_A(I, 5) = instrumento Then
                For J = 0 To 8
                    TextBox1.Text += TB_A(I, J) & Chr(9)
                Next
                TextBox1.Text += Chr(13) & Chr(10)
            End If
        Next


Pero entiendo que debe dar problemas puesto que si quiero solo el campo 1 y 3 que son nombres: Paco y del 3ºcurso tal y como lo tengo no me serviría puesto que el resto de campos se me enviarían como parametros en blanco y me intentaría buscar con un and en blanco

$Edu$

No he entendido bien, podrias dar mas ejemplos tal vez. Pero creo que necesitaras hacer sobrecarga de metodos, donde tienes 3 funciones con distinta cantidad de parametros, uno que tenga solo uno, otro 2, y otro 3. Asi llamaras al que necesites.

arts

#2
Creo que el uso de funciones con varias parámetros me soluciona el problema.  Voy a probar, ¡ gracias !. El mayor problema que veo en este problema es que tengo como 5 combobox y hay muchas opciones en cada uno, por lo que no quiero tener que repetir código y mucho menos meterme en locuras de if anidados uno dentro de otro.

El tema sería por ejemplo tengo 3 combobox

1º curso que puede ser 1º,2º o Todos
2º clase: A, B Todas
3º Asignaturas:  Mates, Fisica,.... Todas

Lo que quiero es poder dar opción de mostrar al usuario si solo rellena los combobox de curso 2º y de asignatura Mates para ver todos los alumnos con la asignaturas de matemáticas sin importar la clase en la que estén.

$Edu$

Es que para esto se usan las bases de datos que funcionan perfecto para esto.

Pero de todas formas, lo podrias hacer, pero necesitamos saber como has guardado los datos en tu txt. O como piensas hacerlo.

arts

#4
Se supone que guardo: clase, curso, dni, nombre, asignatura, instrumento, nota 1, 2 y 3 todo separado por ;

En el txt queda de la siguiente forma.
2;B;03036642-Q;Irene;Historia;Ninguno;7;6;9

No se si se puede hacer un private sub listar (p1 as string,p2...p4)
y mandar los combobox 4 en total)

No se muy bien como preguntar si me ha llegado el p1 que se corresponde con el comboboxcurso.text entonces buscalo sino paso al 2ºcombobox, etc...

$Edu$

Y esa Irene no podria estar en Historia y Matematica tambien? si no podria entonces haces asi:

Verificar cuales son las opciones elegidas de los combox.

Leeria linea por linea y haria un split con " ; " quedando en la primer linea por ejemplo asi:

2 ' indice 0
B ' indice 1
03036642-Q ' indice 2
Irene ' indice 3
Historia ' indice 4
Ninguno ' sucesivamente
7
6
9


Si esta seleccionado el combox 1 y 3 tienes que saber que indice del split correspondera a cada combox, para luego verificar:

Por ejemplo, si el combox 1 es el curso, entonces es el indice 0 y si solo ha seleccionado ese combox para filtrar, entonces haces asi:

Si split[0] = textoseleccionado en el combox1, entonces, mostrar split[3] ' que es el nombre.

Si rellena el combox de curso ( el 1) y el de asignatura (el 3) entonces haces asi:

Si split[0] = textoseleccionado en el combox1 And split[2] = textoseleccionado en el combox3, entonces mostrar split[3] ' que es el nombre del estudiante.

Todo eso es en un bucle que leeras del archivo linea por linea.