Asignación de consulta a un texto dentro de un informe con VBA

Quiero preguntarle por que el siguiente código no me sirve:

Aclaro que el informe que tengo toma como origen de datos una consulta llamada:

"ConsultaSSSSUUUPPPERRRR PRRUEBBAAA 7ABRIL", le di ese nombre muy extraño para diferenciarla de otras consultas:

En el evento "Al cargar" asigno con código lo sigiiuente:

Dim base As Database
Dim Nota_ciencias1 As Recordset
Set base = CurrentDb
Set Nota_ciencias1 = base.OpenRecordset("SELECT Nota FROMConsultaSSSSUUUPPPERRRR PRRUEBBAAA 7ABRIL WHERE Nombre_materia='Ciencias'")
Nota_ciencias1.Edit
Me.Nota_Ciencias.Value = Nota_ciencias1
'Nota_ciencias es el objeto cuadro de texto dentro del informe
Nota_ciencias1.Update

Pero al correr el código me aparece un error indicando que en la linea de código base. OpenRecordset Tiene pocos parámetros se esperaban 3, la idea de este código es que me asigne a un cuadro dde texto los valores que provienen de una consulta pero no lo logro, ¿si esto no se puede hacer con este código que es lo que deseocomo hago para que se me asigne a un cuadro de texto los valores que provienen de la consulta de origen de datos?.

2 Respuestas

Respuesta
2

Me parece a mi que te estás complicando sin necesidad.

Me explico: dices que el informe tiene como origen de datos esa consulta. Además, en la consulta supongo que existe el campo Nota_materia. Y es el valor de ese campo el que intentas darle a Nota_ciencias1.

Pues bien, sin ver tu informe, y sin saber exactamente tus necesidades, yo haría esto:

En origen del informe, en vez de la consulta, le pegaría el código SQL de esa misma consulta. Luego, le das al botón de los 3 puntos de la derecha, y la modificas para que ya te filtre por Nombre_materia.

Luego, en el origen de Nota_ciencias1, le pones Nota_materia y ya está.

Si así no te va, necesitaria ver tu bd (puedes subir una copia sin datos que sean confidenciales, con las tablas, la consulta y el informe que intervienen en tu pregunta, a filebig.net o web similar, y me pegas aqui el enlace de descarga)

Hola muchas gracias..

El problema consiste es que dentro de la consulta de origen aparece no solo las notas de la materia llamada Ciencias sino las notas de todas las materias y en el informe que le comentaba aparece los cuadros de texto en donde el objetivo es que aparezcan el nombre de las materias y las Notas correspondientes a todas las materias, pero el programa que estoy haciendo me piden que aparezcan las notas de todos los alumnos y de todas las materias.

En el archivo que le envío en el siguiente vinculo:

http://www.filebig.net/files/L8vCATX8DS

Aparece la base de datos llamada Consolid1.mdb el reporte en el que deseo hacer dicha consulta es llamado

REPORTE MATERIAS SEXTO,SÉPTIMO Y OCTAVO

Muchas gracias por su colaboración.

Att, Hernán Camilo

Tu consulta tiene mucha más miga de lo que parecía... Te comento, a mi parecer, la mejor opción para tu formulario es ésta:

Modificas la consulta "ConsultaSSSSUUUPPPERRRR PRRUEBBAAA 7ABRIL", eliminando los campos Nombre_Materia, Nombre_docente, Nota, Intensidad_horaria y ÁREA.

Añades, los siguientes campos:

NDocente_Ciencias: SiInm([Nombre_materia]="Ciencias";[Nombre_docente];Nulo)

Nota_Ciencias: SiInm([Nombre_materia]="Ciencias";[Nota];Nulo)

IntHoraria_Ciencias: SiInm([Nombre_materia]="Ciencias";[Intensidad_horaria];Nulo)

AREA_Ciencias: SiInm([Nombre_materia]="Ciencias";[Nota]*[Intensidad_horaria;Nulo)

Esto lo tienes que hacer para cada una de las materias.

Y para acabar la consulta, la conviertes a una consulta de totales, indicando en todos los campos "Agrupar por" en la fila de Total (es el valor por defecto).

Luego en el informe, tienes que hacer los siguientes cambios:

Todos los campos que tienes como independientes, les asignas su correspondiente nuevo campo de la consulta, de este modo: campo Nota_Ciencias del informe-> nuevo campo Nota_Ciencias, y así con todos.

Y en el pie del informe, en el numero de estudiantes, le pones como origen del control, en la pestaña Datos, lo siguiente: =Cuenta([Codigo_estud])

Y para acabar, le borras los códigos a los eventos del informe: form_load, y los de notas_ciencias.

Con esto, te debería salir el informe como tu quieres.

Hola muchas gracias estoy trabajando en adecuar lo que me dijo a mi proyecto, mas tarde te califico :)

Ok.

Respuesta
2

Estas haciendo una consulta de una consulta, cuales son los parámetros que necesitas para la consulta original. Porque es por eso que te esta dando el problema y es porque la consulta ConsultaSSSSUUUPPPERRRR PRRUEBBAAA 7ABRIL necesita tres parámetros o criterios para que esta pueda ser ejecutada.

Ahora bien, no es necesario colocarle nombres tan exóticos a las consultas, basta con llamarlas, cn_01, cn_A, etc. da igual.

Segundo puedes ejecutar una consulta directamente a través de código

Así.

CurrentDb. Execute "DELETE clientes.* FROM clientes"

De esta forma podrás ejecutar consultas directamente.

Ahora bien no sé que es lo que hace tu consulta principal pero creo que es la que tiene el problema con los tres criterios que necesita para ser ejecutada.

Gracias por tu atención y paciencia, pero como le asigno a un cuadro de texto el valor de unna consulta, me explico quisiera hacer algo así:

Dim x1 As String
x1=CurrentDb.Execute "SELECT Nota FROM Consulta11ABRIL='Ciencias'"

Me.Nota_Ciencias.Value = x1

Para que en el informe el campo de texto llamado Nota_Ciencias me muestre el valor de las notas de ciencias.

Gracias de nuevo.

Me.Nota_Ciencias.Value = x1(0) corresponde a la columna 0 del resultado recordset. Recuerda que los resultados de una consulta es una tabla con todos.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas