Problema DBusq

Tengo un problema con la función DBusq, tengo en un formulario llamado Pedidos con un cuadro combinado del que selecciono los nombres de clientes que provienen de una tabla llamada Clientes, en ese mismo formulario tengo un cuadro de texto que quisiera que me muestre los teléfones de los clientes que selecciono en el cuadro, pero a pesar de hacer mil intentos me da error...

1 respuesta

Respuesta
1
En la página:
http://angelessebas.es/
En el apartado Cuadros Combinados, supuesto: Seleccionar datos mediante un Cuadro Combinado y visualizarlos en Cuadros de Texto
Tienes un ejemplo de como hacerlo.
Cualquier duda, me consultas.
Ante todo muchas gracias por responder, pero lamentablemente aún no lo consigo...
Yo tengo un formulario llamado Pedidos donde tengo el cuadro combinado que en su origen de fila dice lo siguiente (ya que lo cree con asistente):
SELECT [Clientes].[Id], [Clientes].[Nombre Comercial] FROM Clientes ORDER BY [Nombre Comercial];
Si realizo un nuevo cuadro combinado poniendo en origen de fila siguiendo si mal no entendí tus instrucciones:
select Nombre Comercial from Clientes order by Nombre Comercial
El mismo me aparece vacío, sin ninguna opción para seleccionar, y he tratado de adaptar las instrucciones que me indicaste, para que en el cuadro de texto me aparezca el teléfono del cliente según lo que selecciono en el cuadro combinado y siempre me marca error...
Nuevamente mil gracias por tu tiempo
Saludos...
Primero: cuando un nombre de campo tiene espacios en blanco como el Nombre Comercial, lo tienes que poner entre [], es decir `Nombre Comercial]
Segundo, ten en cuenta que el valor del cuadro combinado lo define, tanto el orden del Select en origen de la fila como el elegido en columna dependiente.
Por ejemplo, si pones en el origen de la fila:
Select Id, [Nombre Comercial] from clientes
Y en columna dependiente pones: 1
El valor del cuadro combinado será el Id
Si en columna dependiente pones: 2
El valor del cuadro combinado será Nombre Comercial
Supongamos que el teléfono lo quieres seleccionar según el Nombre Comercial, entonces harías:
En el cuadro combinado para seleccionar el Nombre Comercial (cuadro que llamaré selNombre, en origen de la fila:
Select [Nombre Comercial] from clientes order by [nombre comercial]
Al hacer clic ---> Procedimiento de evento ---> Me. Refresh
En el cuadro de texto dónde quieres visualizar el teléfono:
Origen del registro: =DBúsq("[Telefono]";"[Clientes]";"[Nombre comercial]=Form!selNombre.value")
Es decri, búscame en el campo teléfono de la tabla clientes el registro dónde el nombre comercial sea igual al seleccionado en el cuadro combinado.
Me cuentas.
Mil gracias por la paciencia, pero lamentablemente sigo con problemas...
1- Si utilizo el cuadro combinado que tenía originalmente y uso la expresión que me explicaste, en el cuadro de texto me sale: #¿Nombre?
2- Si creo un nuevo cuadro combinado según me explicaste de lo del origen de las columnas, si selecciono la 2 (que corresponde al Nombre Comercial), me muestra el nombre Comercial pero aunque lo seleccione nunca se "queda" en el cuadro, si en cambio selecciono la 1, me muestra todos los códigos de los clientes y si quedan seleccionados, pero en ningún caso logro sincronizarlos con el teléfono...
Nuevamente muchísimas gracias!
La verdad es que no se lo que puede pasar, si te parece, me mandas la BD (en access 2003) y la echo un vistazo, a ver si puedo ayudarte.
Te agradezco muchísimo la intención, pero no me permite hacerlo, pero cuando intento guardar la base en 2003 (ya que uso 2010) para enviártela me dice que no se puede guardar la base en una versión anterior...
De todos modos muchas gracias por tu tiempo, veré si encuentro la vuelta a esto... ´
Gracias de nuevo!
Copia y pega lo que tienes en origen de la fila del cuadro combinado y en origen del registro del cuadro de texto.
En el cuadro combinado creado como me explicaste:
SELECT [Nombre Comercial] FROM Clientes;
En el cuadro de texto:
[DBúsq("Teléfono]";"Clientes";"[Nombre Comercial=Form]!selNombre2.[value")
El cuadro combinado que tenía originalmente:
SELECT [Clientes].[Id], [Clientes].[Nombre Comercial] FROM Clientes ORDER BY [Nombre Comercial];
De paso aprovecho y te pregunto, si yo hiciese el cuadro combinado como me indicas, ¿cómo hago para que cada nombre seleccionado corresponda a ese pedido y si lo cambio no cambie en todos?, ¿Como hago para que se grabe en lo que ingreso en la tabla pedidos, fundamentalmente el nombre comercial.
Muchísimas gracias!
Vamos por partes, creo que para lo que quieres es mejor un formulario independiente, es decir, no lo bases en ninguna tabla o consulta.
Primero, vamos a conseguir ver el teléfono en el cuadro de texto, después haremos el insertar registro.
En el origen del registro del cuadro de texto, tienes que poner:
=DBúsq("[Telefono]";"[Clientes]";"[Nombre comercial]=Form!selNombre.value")
En lo que has pegado, los corchetes y los paréntesis están mal y te falta el =
No te olvides de poner, en las propiedades del cuadro combinado, en el procedimiento de evento Al hacer clic (picas en el cuadrado de la derecha, el de los ...) poner el código Me. Refresh (esto es para actualizar el formulairio y que el cuadro combinado coja el valor seleccionado).
Me cuentas.
Cuando intento poner el nuevo código que me mandas me dice que estoy intentando poner una expresión que contiene una cadena no valida...
Lamento traerte tantos inconvenientes...
De verdad, no se que puede pasar. Si me mandas tú correo te envío una BD para que veas como se hace.
Muchas gracias... mi correo es: [email protected]
De paso te comento.. he logrado hacer funcionar los códigos que me pasaste en un nuevo formulario, pero mi problema ahora es que necesito que los datos queden guardados para cada cliente, ya que es un formulario de Pedidos, y del modo que tengo el cuadro combinado como amablemente me has explicado, a medida que avanzo por los formularios el nombre cambia en todos al mismo tiempo...
Antes de mandarte la BD dime una cosa. En la tabla Clientes tienes el Id del cliente, el nombre y el teléfono y es en otra tabla, Pedidos, ¿es en la que quieres guardar el registro? ¿O es en la misma tabla Clientes dónde tienes el pedido y por tanto es en la tabla clientes dónde guardas el registro?
Acláramelo y mañana te envío la BD (estoy de vacaciones y ahora me voy a dar una vuelta)
Primero muchísimas gracias por el tiempo que me dedicas, fundamentalmente estando de vacaciones, las cuales espero que estés disfrutando mucho (al menos mientras no estas tratando de sacarme las papas del fuego jajaja)
Ahora paso a comentarte un poquito mi BD para ver si estoy haciendo las cosas más o menos bien y puedes ayudarme (más aún de lo que lo has hecho)
Yo tengo una tabla llamada clientes con los campo Id, Nombre Comercial, Dirección, Teléfono, etc.
Una Tabla llamada Pedidos con los campos Id Pedidos, Id Clientes, Fecha, Teéfono, Email, Vendedor, etc.
Luego tengo un formulario de Pedidos, en donde tengo los campos Número de Pedido, que se guarda tanto en el formulario como en la tabla, lo mismo pasa con Vendedor, fecha, etc. y ahora estaba buscando que el cuadro del teléfono se autocomplete en el formulario, que debería ser tomado de la tabla Clientes.
El formulario Pedidos a su vez contiene un SubFormulario que guarda los datos de los pagos realizados por el cliente para el trabajo.
Bueno, con esto espero haberte dado un panorama aproximado de la base de datos, contiene otras tablas pero no creo que necesites que las describa...
Muchísimas gracias por tu tiempo y disfruta tus vacaciones!
Saludos
Espero que hayas tenido un buen fin de semana.
Te he enviado una BD con 2 formularios para insertar datos en distintas tablas.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas