Access - Busqueda de registros

 
Vista:

Busqueda de registros

Publicado por EquisDe (24 intervenciones) el 27/01/2012 11:11:51
Buenas,

Estoy realizando un proyecto y me asalta una duda ya que no consigo solucionarlo (cabe comentar que soy un iniciado en Access)

Imaginaos que quiero hacer una consulta de un registro llamado "COD" de una "Tabla1". He creado un formulario donde hay un campo llamado "Texto8" y un boton.
- en el campo "Texto8" introduzco el registro "COD" a buscar.
- en el boton tengo una macro de evento (con generador de macros) al hacer click que es la siguiente:
- "AbrirFormulario" donde: En nombre de formulario pongo el formulario a abrir, en condicion "Where" pongo lo siguiente:
--- [CONSULTA1]![COD]=[Formularios]![NOMBREFORMULARIO1]![Texto8]
--- El formulario que quiero abrir está basado en una consulta que a partir de el registro "COD" me devuelve una serie de registros de diferentes tablas (todas previamente relacionadas).

entonces yo creia que creando un formulario a partir de una consulta y creando en otro formulario una búisqueda con un boton que me abra el formulario que contiene la consulta, con el codigo anterior me buscaria todos los datos necesarios y me los mostraria en funcion del codigo introducido en [texto8].

Sabeis porque no me funciona?

Puede sonar un poco "enrrebasado" todo esto pero espero haberme explicado.

Muchas gracias.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

Busqueda de registros

Publicado por angelessebas (208 intervenciones) el 27/01/2012 12:44:10
Hola,

En la página: http://angelessebas.es/

en el apartado Supuestos y soluciones ---> Formularios ---> Seleccionar un código en un formulario y que nos abra otro formulario con los detalles de ese código

tienes un ejemplo que te puede servir.

Cualquier duda, me consultas.

Saludos, Angeles
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Busqueda de registros

Publicado por EquisDe (24 intervenciones) el 27/01/2012 13:01:26
bUENAS,

Me surge un error "3464" en la siguiente linea:

Form.RecordSource = "SELECT * FROM TIENDAS WHERE CODIGO='" & vCodigo & "'"

He seguido tu tutorial.... a que puede ser debido el error????

Gracias
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Busqueda de registros

Publicado por JOSE (830 intervenciones) el 27/01/2012 13:19:25
si escribes ésto Form.RecordSource me da que no esta bien


o escribes me.RecordSource=

o bien Forms![nombreformulario].RecordSource


si = vCodigo es un numero

= "SELECT * FROM TIENDAS WHERE CODIGO= & str$( vCodigo)


si = vCodigo es un campo texto

= "SELECT * FROM TIENDAS WHERE CODIGO= '" & vCodigo & '" "

para que lo veas lo voy a poner separado, pero va junto

' " & vCodigo & " ' "


un saludo

jose Manuel - desde el astillero
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Busqueda de registros

Publicado por EquisDe (24 intervenciones) el 27/01/2012 13:31:40
Muchas gracias, he probado lo que dices (mi codigo es un NUMERO):

Forms![ModifTiendas].RecordSource = "SELECT * FROM Tiendas WHERE codigo= & str$( vCodigo)"

Pero ahora me salta un error que me "falta un operador" en: & str$( vCodigo)"

Que puede estar mal? muchas gracias
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Busqueda de registros

Publicado por EquisDe (24 intervenciones) el 27/01/2012 13:41:37
Cabe comentar que vcodigo es una variable publica de tipo Integer......
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Busqueda de registros

Publicado por equisDe (1 intervención) el 27/01/2012 13:43:18
Ok, solucionado, al final habia que poner esto:

" & vCodigo & "

gracias!!!!!!!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Busqueda de registros

Publicado por angelessebas (208 intervenciones) el 27/01/2012 14:18:45
Hola,

Me alegro de que lo hayas solucionado.

Una aclaración, el error 3464 (No coinciden los tipos en la expresión de criterios) es porque en mi tutorial el campo es de texto, efectivamente si es numérico hay que quitar la comilla simple en la variable.

En el Recordsource, como te refieres al formulario que estás abriendo, no hace falta poner su nombre, con Form.Recordsource es suficiente, también con Me.RecordSource

Saludos, Angeles
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Busqueda de registros

Publicado por EquisDe (24 intervenciones) el 27/01/2012 15:25:13
Buenas,

Ante todo, gracias por todo. Me surge una duda a raiz de este tema. si quisiera cargar más de una tabla (es decir, diferentes registros relacionados con "codigo") pero pertenecientes a otra tabla. Como deberia modificar la consulta SQL???

Gracias!! con "comas" en la consulta? con punto y coma? de otro modo?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Busqueda de registros

Publicado por angelessebas (208 intervenciones) el 27/01/2012 17:16:57
Hola,

Para relacionar 2 o más tablas en una consulta se utiliza la expresión INNER JOIN.

Suponemos una tabla Tabla1 con los campos: codigo, campo1, campo2 y otra Tabla2 con los campos: codigo, campo3. El Select sería:

SELECT Tabla1.codigo, Tabla1.campo1, Tabla1.campo2, Tabla2.campo3 FROM Tabla1 INNER JOIN Tabla2 ON Tabla1.codigo=Tabla2.codigo WHERE Tabla1.codigo=" & vCodigo &"

Me cuentas, saludos Angeles
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Busqueda de registros

Publicado por EquisDe (24 intervenciones) el 30/01/2012 10:31:42
Gracias por tu ayuda!

No obstante, modifico la consulta y a la hora de cargar el formulario, los campos existentes en el fo4rmulario que se abre de las tablas "TABLA1" y "TABLA2" me aparecen rellenos así: "#¿Nombre?". Supongo que hay algo de la consulta que no está bien:

Forms![ModifTiendas].RecordSource = "SELECT TIENDAS.codigo, ESTADO.codigo
FROM TIENDAS INNER JOIN ESTADO ON TIENDAS.codigo=ESTADO.codigo
WHERE TIENDAS.codigo= " & vCodigo & " "

Que puede estar mal?

voy a seguir investigando haber si doy con la solucion mientras me dices algo.

Gracias de nuevo :-)
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Busqueda de registros

Publicado por EquisDe (24 intervenciones) el 30/01/2012 10:36:48
Vale, he econtrado el problema. Resulta que en el selct devbia poner TIENDAS.* y ESTADO.* ya que necesito todos los valores de amnbas tablas :p

No obstante, el campo codigo me sigue saliendo con #¿Nombre? pero el resto de campos ya me aparecen bien. Voy a ver si consigo resolverlo. :?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Busqueda de registros

Publicado por angelessebas (208 intervenciones) el 30/01/2012 11:34:36
Hola,

¿Que tienes puesto en origen del registro del cuadro de texto del codigo?

Saludos, Angeles

Página supuestos y soluciones en access: http://angelessebas.es/
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Busqueda de registros

Publicado por EquisDe (1 intervención) el 30/01/2012 11:51:29
Origen del control = CODIGO (A secas ^_^)
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Busqueda de registros

Publicado por angelessebas (208 intervenciones) el 30/01/2012 17:20:37
Hola,

Creo que lo que pasa es que como el campo codigo tiene el mismo nombre en las 2 tablas no sabe a cual de las 2 se refiere, pica en la flecha de la derecha que te sale en origen del control y ahí te saldrán todos los campos disponibles, tendrás que elegir el campo codigo referido a una de las 2 tablas.

Me cuentas, saludos Angeles

Página supuestos y soluciones en access: http://angelessebas.es/
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Busqueda de registros

Publicado por EquisDe (24 intervenciones) el 31/01/2012 11:27:22
Buenas,

Pues en el origen de control tengo seleccionado el CODIGO de una de las tablas, de hecho en la flechita me salen 2 codigos, un CODIGO secas (que es el que tengo) y un codigo_estado (que es de la otra tabla). No se porque sale ese nombre cuando enr ealidad tiene el mismo nombre, supongo que será para diferenciarlo de la otra tabla.

En fin... no se porque sale lo de #¿Nombre?.... Ten en cuenta que este formulario (donde recoje código y otros campos) el código viene dado por la seleccion de una tienda en un "cuadrolista" de otro formulario. No se si tendrá algo que ver. Es decir, el código es pasado mediante variable global (tal y como pregunté en este post, al principio).

Muchas gracias por tus respuestas.

Ah! y otra cosa referente al INNER JOIN de antes, me surge problema en la siguiente consulta:

SELECT TIENDAS.*, ESTADO.*, APERTURA_TIENDA_N3.*
FROM (TIENDAS INNER JOIN ESTADO ON TIENDAS.CODIGO=ESTADO.CODIGO)
INNER JOIN APERTURA_TIENDA_N3 ON TIENDAS.CODIGO=APERTURA_TIENDA_N3.CODIGO
WHERE TIENDAS.CODIGO= " & vCodigo & " "

Ya que al abrir el formulario de esta consulta, me aparece una ventanita emergente que me indica que introduzca el valor de APERTURA_TIENDA_N3.CODIGO cuando yo lo que necesito es que me recoja como dicho codigo el de la tabla tiendas o el de la tabla estado (que debe ser el mismo). Para el inner join de estado me lo recoje bien, pero para el inner join de apertura_tienda me pide que lo introduzca. A que puede ser debido???

De nuevo, muchas gracias por toda la ayuda ofrecida y por cierto tu página me está ayudando mucho, estoy aprendiendo un monton
:-)

Un saludo,
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Busqueda de registros

Publicado por angelessebas (208 intervenciones) el 31/01/2012 17:00:03
Hola,

Como el código lo traes de otro formulario mediante la variable vcodigo, creo que lo mejor es poner en el origen del registro del cuadro de texto la función de búsqueda DLookup:

=DLookup("[Codigo]";"[Tiendas]";"Codigo=" & vCodigo & "")

es decir, búscame en el campo codigo de la tabla Tiendas el registro en el que el codigo sea igual a la variable.

en cuanto al INNER JOIN, no veo nada erronero ¿estas seguro que en las 3 tablas el campo codigo se llama CODIGO... ¿no se llamará en alguna de ellas CODIGO_ESTADO?

Saludos, Angeles

*** Me alegro de que mi página te sirva, para eso la hago... así es que cuando alguien me dice que le sirve... tan contenta!!!.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Busqueda de registros

Publicado por EquisDe (24 intervenciones) el 01/02/2012 13:00:46
Lo del INNER JOIN tenias toda la razón, vaya crack! jeje. El campo se llamaba COD en vez de CODIGO, que fallo de novato ^_^

en cuanto a la funcion de busqueda en el origen de control, me sigue saliendo lo de NOMBRe?
En la funcion aparte me salta un pequeño error (cuadrito con exclamacion desplegable típico de windows) que dice:
Propiedad control no válida: Origen de control
Referencia circular

Cabe comentar tambien que el Dlookup me cambia automatico a DBusq que supongo será el equivalente enc astellano

Muchas gracias de nuevo y perdon por tanta pregunta! ^_^

Saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Busqueda de registros

Publicado por EquisDe (24 intervenciones) el 01/02/2012 13:18:25
He conseguido que no me saliera el error, deduzco que lo de referencia circular era porque el cuadro de texto se llamaba CODIGO, igual que el campo de la tabla Tiendas. Ahora he cambiado el nombre del cuadro de texto a CODIG y no me sale el error de referencia circular pero me sigue sin aparecer el campo CODIGO, sigue saliendo #¿nombre?#.... :(
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Busqueda de registros

Publicado por angelessebas (208 intervenciones) el 01/02/2012 18:00:40
Hola,

Lo del nombre del campo... ni crack ni novato... ¡No te puedo decir la de veces que me ha pasado...! cuando te pida un parámetro, mira siempre el nombre de los campos, generalmente está ahí el error.

En cuanto al DLookup (efectivamente si el access lo tienes en castellano te lo cambia por DBúsq, pero si lo vas a poner en código, ten encuenta que siempre lo tendrás que poner en ingles y cambiar el ; por ,
No sé porque no funciona. Puedes hacer lo siguiente: dejas el origen del control vacio y en la opción al cargar del formulario (dónde le das el recordsource del formulario ) pones otra linea de código dando el valor al cuadro de texto CODIG (has acertado al cambiarlo de nombre, ya que si se llama igual que el campo access no sabe a que te refieres)
La linea sería:

Form!Codig.Value=vcodigo

Me cuentas, saludos Angeles


Página supuestos y soluciones en access: http://angelessebas.es/
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Busqueda de registros

Publicado por EquisDe (24 intervenciones) el 02/02/2012 10:47:41
Jejejeje, si la verdad es que son fallos de los que vas aprendiendo. Tontos, pero al fin y al cabo, fallos ^_^

En cuanto lo de codigo es perfecto! me ha funcionado sin problema y a la primera por lo que ya está solucionado. Ahora me corroe una cosa tonta; al cargar el formulario uno de los campos (nombre_tienda) me sale siempre "ensombrecido" es decir, como si lo seleccionaras con el ratón y quedara en negrita de fondo.... no se si me explico, una especie de focus..... como puedo hacer para que eso no salga ? es mas, que no salga en ningun campo (solo me sale en el nombre tienda)

Muchas gracias por tu estupenda ayuda! :)
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Busqueda de registros

Publicado por angelessebas (208 intervenciones) el 02/02/2012 12:20:40
Hola,

Eso pasa porque tienes el 1er punto de tabulación en ese campo. En las propiedades de los campos tienes:

Punto de tabulación: Sí
Indice de tabulación: el que sea (el indice de tabulación te dá el orden de tabulación de los campos)

Si quitar el punto de tabulación, con poner No en todos es suficiente.

Saludos, Angeles

Página supuestos y soluciones en access: http://angelessebas.es/
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Busqueda de registros

Publicado por JOSE (830 intervenciones) el 27/01/2012 19:33:54
Forms![ModifTiendas].RecordSource = "SELECT * FROM Tiendas WHERE codigo= & str$( vCodigo)"


debe ser

se me olvidaron las comillas

Forms![ModifTiendas].RecordSource = "SELECT * FROM Tiendas WHERE codigo=" & str$( vCodigo)
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar