¿Cómo puedo conseguir un programa que busque todos los clientes de una calle?

Hace poco me inicie en Visual Basic, con el fin de desarrollar una aplicación que se ajuste al trabajo familiar.
El asunto es así: tenemos una extensa lista de clientes, con números de teléfono, dirección y nombre (con el único fin de cuando se llama por teléfono, preguntar por alguien, no es algo de extrema necesidad).
Pues bien, lo que yo necesito es tener la posibilidad de ingresar datos y hacer consultas, y que estas consultas utilicen como campo clave la dirección... Hasta acá nada que no pueda arreglármelas, pero mi problema se presenta cuando me piden que cuando se ingrese una calle aparezca una lista de todos los clientes en esa calle, ¿cómo puedo resolver esto? Y también tengo una pregunta de bonus track :P
A fin de que no se confunda al momento de poner las calles, las agrupe en una base de datos en el access y luego las sitúe en mi aplicación de VB en un combo box, pero yo quiero (ademas de tener la posibilidad de escoger la calle desde la lista) poder escribir las primeras letras de la calle y que directamente me vaya a la parte de esa lista donde las calles empiezan con esas letras... No se si se entiende bien... Que si por ejemplo yo apretó la "b" se saltee todas las que empiezan con "a" y vaya directamente a la "b".
Bueno, nada más, desde ya agradezco tu tiempo y espero tu respuesta.
[email protected] (o sin el .ar lo cambiaron hace poco y ahora no se cual de las dos anda :P)
Respuesta
1
A que llamas campo clave...
Porque no me parece correcto usar una dirección de calle como campo clave...
Porque si tienes 2 clientes en la misma calle no vas a poder agregarlos... salvo que uses 2 claves.. dirección y numero...
Yo usaria id_cliente o cod_cliente... si uds no usan codigo de cliente... no hay problema... lo usas pero sin mostrarlo nunca... esto ayudaria a tener una mejor estructura en la BD
Bueno la segunda pregunta.. supongo que debe ser como hacer una consulta con string porque se hacen distinto
La idea es
"select * from tabla where campo like '" & txtBuscar.text & "%'"
Ya que en SQL se usa el % en lugar del asterisco...
--------------------
3º pregunta...
Me decís que vas a usar un combo... te recomiendo que coloques
Como indice de los elementos del combo... el campo clave (DEBE SER NUMÉRICO)...
Entonces una vez seleccionada una calle directamente usamos el index del combo.. que a su vez es la clave de esa calle para todas las consultas o actualizaciones que necesites
Y para que un combo valla directamente a la intentar del primer item que empieza con la letra "b" por ejemplo
Esto se hace cambiando la propiedad STYLE del combo
con seleccionado drop down list... creo que es la ultima
si queres tengo una funcion que recibe como parametro un combo y un tipo de tabla
Y entonces automáticamente con los datos de la base de datos...
Clave y descripción
El combo
Index y itemdata

4 respuestas más de otros expertos

Respuesta
1
Podrías poner un dbgrid (Data Bound Grid Control) en el formulario, y en la propiedad datasource del dbgrid poner el data1, así tendrías todos los registros.
Bien, antes que nada gracias por responder.
Bueno el tema es así: cuando realizo una consulta, lo que me piden es que si ingreso una calle y nada más, que me aparezcan todos los registros que tienen como dirección la que yo ingrese, en una lista. El tema es que no se como hacer una lista, ¿en los text podría aparecer más de un registro del access?
Ante todo muchísimas gracias.
Bien, no entendí bien tu pregunta, pero intentaré responderte. Para hacer lo que quieres, bastará con que en el evento change del cuadro de texto dónde ingresas la dirección pongas lo siguiente:
Data1.RecordSource = "Select * from clientes where direccion like '" & Text1.Text & "*';"
Data1. Refresh
Supongo que has utilizado un control data (valdría igual para un adodc cambiando data1 por adodc1, o el nombre que le hayas dado al control) Igualmente supongo que el cuadro de texto en el que ingresas la dirección recibe el nombre de text1.
Respuesta
1
Para búsquedas en campos de texto, puedes utiliza algo como: %% en sql server, en access si no me falla la memoria se utiliza ##, la palabra o segmento de texto a buscar lo colocas entre los símbolos mencionados y generas un select, algo como:
select * from mitabla where micampo like #mi calle#
Con respecto al llenado y búsqueda en un combo box, que sería un autocompletar, autocomplete en inglés, los código los puedes localizar en la siguiente página:
Respuesta
1
Vamos por partes.
Primero, la selección de calle: aunque los ComboBox tienen varias opciones de presentación (propiedad Style) la verdad es que con ninguna se puede conseguir exactamente lo que tú deseas. Mi consejo es que en vez de un Combo utilices un TextBox y un ListBox situado debajo del TextBox.
La lista del ListBox la rellenas igual que estas haciendo con el combo, y añades el siguiente código.
En cuanto a mostrar los clientes que viven en la calle seleccionada, pondría un segundo ListBox que cargaría en el evento LostFocus del TextBox.
Private Sub Text1_Change()
If List1.ListCount > 0 Then
Dim k As Long, j As Long
j = Len(Text1.Text)
If j > 0 Then
For k = 0 To List1.ListCount - 1
If Left(List1.List(k), j) = Text1.Text Then
List1.ListIndex = k
Exit Sub
End If
Next k
End If
List1.ListIndex = -1
End If
End Sub
Private Sub Text1_LostFocus()
If List1.ListIndex = -1 Then
'Lo escrito no coincide con ningún elemento del listbox
Else
Text1.Text = List1.List(List1.ListIndex)
'Aquí pondría el código necesaria para llenar el listbox con los clientes de la calle
End If
End Sub
Espero que te sirvan de ayuda mis indicaciones. No olvides valorar la respuesta.
Respuesta
1
Para seleccionar los Registros de los clientes que viven en una calle determinada deberás hacer una consulta, algo así como:
"select * from clientes where calle like ...."
En lugar de los puntos suspensivos va el nombre de la calle.
Espero que entiendas de qué estoy hablando, de lo contrario me escribes de nuevo y te explico con más detalle.
Ahora por el bonus track ...
Estableces la propiedad Style del Combo a "2-Dropdown List" ... es todo ...
Suerte !
Rogers R.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas