Parámetros.

Parámetros.
En access 2000, en una consulta cojo parámetros desde un formulario cargado. Pero en access 2002 me da problemas. ¿Cómo puedo solucionarlo?
Respuesta
1
Me gustaría que fueses más explícito, ¿qué tipo de problema?... En el 2002 hay con Código y el sql es más poderoso
Me explico. Desde access 2000 tengo una base de datos donde en varios formularios con cuadros combinados selecciono y hago consulta de otros datos. Estos parámetros pasan sin problemas a la consulta en el 2000 pero en el access2002 no los reconoce...
¿Comprendes?
Gracias
Trta de hacerlo mediante el Ayudante, hice una prueba y salio bien... si no te sale escríbeme y te envío el ejemplo

3 respuestas más de otros expertos

Respuesta
1
La forma de hacer referencia a los controles de un formulario, tanto desde una consulta como desde código visual basic son diferentes ligeramente en 2000 y 2002. Ahora no recuerdo las diferencias exactas, pero prueba a poner el formulario y los controles entre corchetes, y la propiedad del control tras un punto.
En access 2000 uso como criterio en un campo de la consulta lo siguiente
[formularios]![formulario1]![cuadrocombinado1]
Pero en access 2002 salta mensaje como que no encuentra esos parámetros, no puedo coger estos parámetros desde un formulario.. 0o al menos, eso parece..
Haz la consulta en visual basic desde el formulario y pásale los parámetros desde allí.
¿Si este fuera el texto sql de la consulta que tengo que poner en el formulario?
select datos.nombre, datos.a, datos.b, datos.c from datos where ((datos.nombre)=[formularios]![formulario1]![cuadro combinado0]);
¿Qué escribo desde visual? Usa esto como ejemplo si puedes. Y gracias por tu ayuda
Vamos a ver. En primer lugar, no uses nombres con espacios o caracteres no válidos para los controles de un formulario (cuadro combinado0, es mejor llamarle cuadro_combinado0, o sea sin el espacio) así no te verás obligado a usar los corchetes, que el visual basic no los trata bien.
En segundo lugar, en el botón que llama a la consulta, o el control que sea que la llama, en el código visual basic tienes que poner:
nombre_consulta.sql=select datos.nombre, datos.a, datos.b, datos.c from datos where ((datos.nombre)=cuadro_combinado0
Esto teniendo en cuenta que le has cambiado el nombre al control.
El botón abrirá un nuevo formulario ya creado a partir de la consulta ...
¿Pero entonces ahora como hago? ¿No puedes mosrtarme un ejemplo?
El formulario lo abres con docmd. Openform, y uno de los parámetros del openform es el where para la consulta en la que está basado.
Perdona, quería decir "yo NO conozco otra manera", se ve que me he comido el "no". Lo único que se me podría ocurrir es que montaras otra consulta a partir de lo que te devuelve el combo.
Al parecer al poner cuadrocombinado sin la propiedad text, solo coge el indice, no el valor del campo.
Si pongo cuadrocombinado.text entonces si coge el texto pero entonces necesita tener el foco para coger la propiedad.
El problema es que normalmente usare 3 parámetros, 3 cuadros combinados a partir de los cuales haré la consulta, ¿cómo le paso el foco a cada uno de ellos y en que momento...?
Los 3 a la vez no pueden tenerlo. O eso creo.
Y esto hacerlo en cada formulario y cada informe ... me puedo morir...
form_formulario1.cuadro_combinado1.column(cuadro_combinado)
¿Así seria no?
¿Y desde access no hay una forma más fácil de coger parámetros desde un formulario cargado? ¿Sin tener que modificar ahora todoooooooooo?
Gracias
¿Por qué pones cuadro_combinado dentro del índice de la columna?
Y yo conozco otra manera.
Solo tiene una columna el cuadro combinao. Y tengo que coger el valor del que hayamos elegido. Sino no lo reconoce...
Dices que conoces otra forma...
Je je
Ya estas tardando en contarme
Je je
¿E probado con esto y parece que funciona pero hay otra forma más fácil de hacerlo?
docmd.openform formulario, , , "[nombre]='" & " form_formulario1.cuadro_conbinado0.text & "'"
con el asistente de crear formularios no muestra ningun registro...cosa mu rara??
la diferencia es el where
con el asistente el where sería:
"[nombre]='" & Me![cuadro combinado0] & "'"
No hagas referencia a la propiedad text del combo, sino a la propiedad column. Así es como yo lo hago. De hecho suelo utilizar combos con muchas columnas (poniéndolas el ancho a 0) para ahorrarme código, directamente le digo que me coja el valor de la columna en el registro seleccionado y ya está.
Yo creo que esta es la forma correcta de hacerlo. Lo que no entiendo es que con el asistente no te aparezcan registros. Yo miraría la construcción de la consulta sql que te pone en el origen de datos, o a ver si te ha puesto la tabla o qué.
ahi q pena.
Se te ocurre montar una consulta a partir de lo que devuelve el combo. Ese es el problema. Que no puedo acceder a lo que devuelve el combo desde la consulta.
?
¿Lo de la propiedad column como la usas entonces?
La consulta la montas en visual basic "SELECT campo FROM tabla WHERE tabla.campo = " & combo.column(num_columna)
Con esto debería bastar
Este es el procedimiento con el que creo que funciona. Pero no se hacerlo como tu me indicas.
no lo entiendo.. ¿para qué quiero el numero de columna?
Private Sub Comando8_Click()
On Error GoTo Err_Comando8_Click
Dim stDocName As String
Dim stLinkCriteria As String
Dim A As String
Dim B As String
Dim C As String
Form_Formulario5.Cuadro_combinado1.SetFocus
A = Form_Formulario5.Cuadro_combinado1.Text
Form_Formulario5.Cuadro_combinado3.SetFocus
B = Form_Formulario5.Cuadro_combinado3.Text
Form_Formulario5.Cuadro_combinado5.SetFocus
C = Form_Formulario5.Cuadro_combinado5.Text
stLinkCriteria = "[IDASIGNATURA] = '" & A & "' And [IDCURSO] ='" & B & "' And [IDCONVOCATORIA] = '" & C & "'"
stDocName = "formulario Consulta 9"
DoCmd.OpenForm stDocName, , , stLinkCriteria
Exit_Comando8_Click:
Exit Sub
Err_Comando8_Click:
MsgBox Err.Description
Resume Exit_Comando8_Click
End Sub
Mis combos solo usan una columna el valor que me interesa.. no le veo yo salida a eso...
Tal como lo he echo funciona pero ni aun así consigo que todo vaya bien. Porque si después quiero hacer un filtro no me toma el filtro ya hecho sino que coge toda la consulta, sin hacer el filtro que le puse en el formulario...
¿Comprendes?
Vale, probaremos otra cosa. Te creas 3 textboxes que estarán con visible en falso. Los combos les dices que el valor del combo (no los datos, sino el valor del combo en propiedades) lo coja del textbox que tú asignes para cada uno. Entonces por código lo que cambias es el valor de los textboxes que están invisibles. Si ves que los combos no se actualizan hazles un requery.
Para evitarte que tengas que usar setfocus, simplemente haces los combos con varias columnas con los datos que necesitas, luego haces referencia directamente a las columnas correspondientes y ya esta.
Los textbox tiene que estar visibles para poder hacer un filtro. Sino a la hora de hacer la consulta esos campos es como si no existieran.
Muchas gracias.
Respuesta
1
Debes estar referenciandolo mal porque no se debería presentar esto. No utilices la ayuda que la ventana da porque ella los referencia a los forms como formulario y ese debe ser el error. Revisa si tiene la palabra formulario! (campo) y cambiala por form!(Campo).
Espero haberte podido colaborar. Henrry
Respuesta
¿Qué problemas?
[email protected]
VicMat

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas