Access - Conteo-Consulta en Informe Access

 
Vista:

Conteo-Consulta en Informe Access

Publicado por Jordi (2 intervenciones) el 19/10/2007 12:07:35
Hola!
Querría saber qué código debería escribir en el orígen del control de una etiqueta en informe Access para que me cuente el número de Nombres de la Tabla Personas que tienen más de 16 años y tienen correo electrónico.

Estoy probando con el código de abajo y sólo consigo que la aplicación se cuelgue saliendo a windows.

=CONT([Nombre];"Tabla_Personas";[EDAD]= >16 Y [EMAIL]="*@*.*")

¡¡¡¡¡Muchísimas 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

RE:Conteo-Consulta en Informe Access

Publicado por Enrique (1299 intervenciones) el 19/10/2007 22:22:03
Hola Jordi:
Para esto puedes utilizar la librería de ADO marcando la Referencia: Microsoft ActiveX Data Objects 2.1 Library, porque creo que de la forma que lo intentas solo tendrás problemas. Pega esto en el editor VBA del Informe:

Option Compare Database
Private cnn As ADODB.Connection
Private WithEvents rst As ADODB.Recordset
Option Explicit

Private Sub Report_Open(Cancel As Integer)
Set rst = New ADODB.Recordset
Set cnn = Application.CurrentProject.Connection
rst.Open "SELECT Nombre, Edad, Email FROM Personas WHERE Edad>=16 AND Email Like '%" & "@" & "%'", cnn, adOpenStatic
Etiqueta1.Caption = "Registros con + de 16 años y Email: " & rst.RecordCount
End Sub

No se puede usar la librería de DAO porque con esta, la propiedad RecordCount no devuelve correctamente el nº de registros que cumplen una condición. Fíjate tambien que en la condición Where se usa el caracter porcentaje ( % ) en lugar del asterisco ( * ) como comodín, debido a que el signo arroba ( @ ) es un caracter especial y no funciona si lo encerramos entre asteriscos.

Esto está debidamente probado y funciona. Espero que te sirva

Saludos
Enrique
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

RE:Conteo-Consulta en Informe Access

Publicado por Enrique (1299 intervenciones) el 20/10/2007 10:52:18
Se me olvidó indicar que al fnal del Evento es conveniente cerrar el Recordset y la Conexión, de esta forma:
................
................
Etiqueta1.Caption = "Personas con + de 16 años y Email: " & rst.RecordCount
rst.Close: Set rst = Nothing
cnn.Close: Set cnn = Nothing
End Sub

Saludos
Enrique
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

RE:Conteo-Consulta en Informe Access

Publicado por Jordi (2 intervenciones) el 22/10/2007 15:34:30
Muchísimas gracias Enrique. Por desgracia aunque he pegado el código,no me funciona Me da este error:

-2147217904 (80040e10) en tiempo de ejecución
No se han especificado valores para algunos de los parámetros requeridos.

ya que no sé como "Para esto puedes utilizar la librería de ADO marcando la Referencia: Microsoft ActiveX Data Objects 2.1 Library, ".
En herramientas he comprobado que tengo instalado Microsoft ADO data Control 6.0 (SP4). No sé si por ahí va la cosa.

El código que tengo es:

Option Compare Database

Private cnn As ADODB.Connection
Private WithEvents rst As ADODB.Recordset
Option Explicit

Private Sub Report_Open(Cancel As Integer)
Set rst = New ADODB.Recordset
Set cnn = Application.CurrentProject.Connection
rst.Open "SELECT EMPRESA, FAX, E-MAIL FROM Empresaprov WHERE Fax>1 AND Email Like '%" & "@" & "%'", cnn, adOpenStatic
Etiqueta1.Caption = "Registros con Fax y Email: " & rst.RecordCount
rst.Close: Set rst = Nothing
cnn.Close: Set cnn = Nothing
End Sub

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

RE:Conteo-Consulta en Informe Access

Publicado por Enrique (1299 intervenciones) el 22/10/2007 21:09:13
Hola Jordi:
Para empezar aquí hay aparentemente algunos fallos, primero veo que en el Select un campo se llama E-MAIL pero después de Where has dejado Email (no son iguales); otra cosa que veo: Fax > 1 puede que sirva si es un campo numérico, pero no me convence esa comparación.
rst.Open "SELECT EMPRESA, FAX, E-MAIL FROM Empresaprov WHERE Fax>1 AND Email Like '%" & "@" & "%'", cnn, adOpenStatic

Por otra parte la librería necesaria es: Microsoft ActiveX Data Objects 2.x Library, donde la x de 2.x puede ir de 1 a 7 quizás más, pero con la 1 es suficiente. La otra que indicas puede que no esté de sobra pero NO es la necesaria. Desde Access 2000 en adelante, esa Referencia entra marcada por defecto al crear una base de datos nueva, por lo que seguro que la tienes marcada, salvo que la hayas desmarcado expresamente.

Un saludo
Enrique
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