Extraer datos de una consulta mediante un formulario y grabarlos en otra consulta

Tengo dos consultas en acces 2007 ambas con los mismos campos y cada una de las consultas tiene un formulario al que surte de datos. Mi pregunta es: usando un campo de búsqueda, en este caso DNI (que está en las dos consultas), ¿cómo puedo hacer que en el formulario se rellenen el resto de los campos que están grabados en la otra consulta?.

1

1 Respuesta

546.675 pts. Si no valoras las respuestas, no esperes que te...

Supongo, por lo que creo entender que el DNI se "elige" en un cuadro combinado. Tanto si es así, como si es un cuadro de texto o cuadro de lista, en sus propiedades-eventos. Despues de actualizar puedes poner

cuadrodetextoA=dlookup("nombrecliente","consulta2","dni='" & me.nombredelcombinado & "'"

Y así los demás.

En caso de que el combinado(o lo quesea) estuviera en el encabezado del formulario, podrías poner

form.recordsource="select * from consulta2 where dni='" & me.nombrecontrol & "'"

Es decir, que el origen de registros del formulario sean aquellos de la consulta2 en que el campo DNI sea igual al que acabas de elegir.

¡Gracias! . Lo probaré. Has sido muy rapido. Gracias de nuevo

Hola de nuevo Icue. Creo que he hecho lo que me indicaste. Esto es lo que he puesto exactamente:

Private Sub dni_AfterUpdate()
dni = DLookup("apellidos", "consultaaltas", "dni=" & Me.dni & "")
End Sub

Cuando pulso intro después de teclear el dni (no es un cuadro combinado), recibo el siguiente error:  Se ha producido el error 3075. Error de sintaxis. Falta operador en la expresión de consulta "dni=xxxxxxxxx".

Puedes ayudarme de nuevo?. Muchisimas gracias

Has puesto una redundancia, le estás diciendo que el campo DNI sea igual a un campo apellidos cuyo dni sea igual al que acabas de escribir, pero es precisamente lo que le has dicho que busque.

Me refería, por ejemplo a:

Apellidos=dlookup("apellidos","consultaaltas","dni='" & me.dni & "'")

direccion=dlookup("dirección","consultaaltas","dni='" & me.dni & "'")

Siempre y cuando DNI sea texto, tipo 22222222B. Si sólo fuera numérico, por ejemplo 22222222 sería

....."dni=" & me.dni & ""

o sea comillas & y cierra & comillas comillas

Ahora si funciona!!!. No quiero abusar de tu amabilidad pero me gustaria hacerte una última consulta. De los 6 campos que quiero capturar, 4 son de textos, que funcionan perfectamente con lo que tu me has dicho, pero hay un quinto que es numérico que no me sale y otro que procede de un cuadro combinado que tampoco sale. Puedes ayudarme de nuevo???. Gracias otra vez

Como te decía, si es numérico o moneda, debe estar encerrado entre comillas, por ejemplo:

texto4 = dlookup("Apellidos","consultaalta","sueldo=" & me.salario & "")

No dices donde debe aparecer el valor, si en el combinado o es que el valor que va a servir de criterio está en un combinado.

En el primer caso, es exactamente igual que los demas

nombredelcombo=dlookup("......

En el segundo caso, depende de si has usado el asistente o no. Supongamos que si, probablemente te haya puesto dos columnas, una con el Idloquesea(columna clave) y otra con, por ejemplo, Nombrecliente

En ese caso la instrucción debería ser

Apellido=dlookup("apellido","consultaalta","idloquesea=" & me.nombredelcombo & "")

Si lo has hecho tú, con una única columna con NombreCliente, debería ser

Apellido=dlookup("apellido","consultaalta","NombreCliente='" & me.nombredelcombo & "'")

De todas formas, si quieres, repito, si quieres, mándame un mensaje(sólo el mensaje) a [email protected] y te mando un ejemplo. Si lo haces, en el asunto del mensaje pon tu alias Luis Miguel, ya que si no sé quien me escribe ni los abro.

Hola Icue. No sabes como agradezco tu ayuda. Lo del cuadro combinado ya está solucionado, solo me queda lo del campo numérico que no me quedó claro en tu última ayuda. Te escribo literalmente lo que tengo puesto:

socio = DLookup("socio1", "consultaaltas", "dni='" & Me.dni & "'")

Socio (consultaaltas) es el campo que quiero traspasar a la otra consulta (en esta otra consulta el campo se llama Socio1)". Dni es el campo por el que hago la busqueda y se llama igual en las dos consultas. Tanto socio, como socio1 son campos numéricos.

Esto es lo único que me queda por resolver. Gracias de nuevo

Creo que es mejor con imágenes. Tengo una tabla Tabla1 con

Tengo una tabla2 con la que hago un formulario

Da igual que sea único o continuo.

Si en DNI elijo uno.

En este caso el 4444...el resultado es

En el evento después de actualizar del cuadro combinado DNI le tengo puesto

Private Sub DNI_AfterUpdate()
Nombre2 = DLookup("nombre1", "tabla1", "dni='" & Me.DNI & "'")
Apellidos2 = DLookup("apellidos1", "tabla1", "dni='" & Me.DNI & "'")
Telefono2 = DLookup("telefono1", "tabla1", "dni='" & Me.DNI & "'")
End Sub

Sería exactamente igual si en vez de tabla1 es una consulta

Pero en tu ejemplo no hay ningún campo numérico no??. Con los de texto no tengo problemas

Tienes razón, pero es que da exactamente igual, lo único que importa es si el criterio es numérico o texto. En este caso, he puesto DNI como texto por la letra del final. Tu podrías poner, por ejemplo

Sueldo2=dlookup("sueldo1",Tabla1","dni='" & me.dni & "'")

Vamos a suponer que en el campo DNI sólo pones los números, no la letra. Entonces sería

Sueldo2=dlookup("sueldo1","tabla1","dni=" & me.dni & "")

Sin apóstrofes.

En el ejemplo que me has puesto.... Nombre2 = DLookup("nombre1", "tabla1", "dni='" & Me.DNI & "'")

cual de los dos DNI hace referencia al de la primera tabla y cual al de la segunda?. Es que como en las dos tablas se llama igual el campo....

Perdona mi insistencia pero estoy a punto de tirar la toalla. Si me ayudas una vez más....

Es que yo solo busco por el campo DNI. Localizado el registro en la otra tabla con el DNI que le doy, lo único que quiero hacer es extraer el resto de los campos, de los cuales uno es numérico y los demás de texto. Mi campo de búsqueda siempre es el dni. Igual no me explico bien, lo siento

Da igual como se llamen, lo que importa es que los datos del criterio sean coherentes, es decir, que si uno es texto, el otro sea texto( y ni eso, porque está la funcióm Val).

Supongamos que en la tabla 1 tienes DNI(texto), Nombre(texto), Edad)numérico), Telefono(numérico)

Y tienes la tabla 2 con Cedula, Alias, Tiempo, Celular

En el evento después de actualizar del cuadro de texto Cedula

Alias=dlookup("nombre","tabla1","dni='" & me.cedula & "'")

Tiempo=dlookup("Alias",""dni='" & me.cedula & "'")

Y así los demás.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas