Вы находитесь на странице: 1из 5

Contar Registros en Access

En Access podemos necesitar realizar un recuento de registros que cumplan unos criterios determinados, y ofrecer la informacin en formularios e informes. Para ello contamos con el mtodo DCount que se puede emplear en formularios, informes, consultas, e incluso en el mdulo VBA. La ayuda que Access nos ofrece a este respecto es bastante completa, y aqu vamos a intentar desarrollar su contenido y ampliarla. METODO DCOUNT Se Puede usar la funcin DCont (DCount) para determinar el nmero de registros incluidos en un conjunto de registros especificado (un dominio). Utilice la funcin DCont (DCount) en Visual Basic, en una macro, en una expresin de consulta o en un control calculado. Variant. expresin.DCount(Expr, Domain, Criteria) expresin Requerida. Expresin que devuelve uno de los objetos de la lista Aplicar a. Expr String requerida. Una expresin que identifica el campo del cual desea contar registros. Puede ser una expresion de cadena que identifica un campo de una tabla o consulta, o bien una expresin que realiza un calculo usando los datos de ese campo. En expresin, puede incluir el nombre de un campo en una tabla, un control de un formulario, una constante o una funcin. Si expresin incluye una funcin, puede ser integrada o definida por el usuario, pero no puede ser ninguna otra funcin agregada de dominio ni agregada de SQL. Domain String requerida. Una expresin de cadena que identifica el conjunto de registros que constituyen el dominio. Puede ser un nombre de tabla o un nombre de consulta. Criteria Variant opcional. Una expresin de cadena opcional que se utiliza para restringir el intervalo de datos sobre el que se ejecuta la funcin DCont (DCount). Por ejemplo, criterios suele ser equivalente a la clusula WHERE en una expresin SQL, sin la palabra WHERE. Si se omite criterios, la funcin DCont (DCount) evala expresin para todo el dominio. Cualquier campo que se incluya en criterios debe ser tambin un campo de dominio; de lo contrario la funcin DCont (DCount) devuelve el valor Nulo. Comentarios Utilice la funcin DCont (DCount) para contar el nmero de registros en un dominio cuando no necesita saber sus valores particulares. Aunque el argumento expresin puede realizar un clculo en un campo, la funcin DCont (DCount) sencillamente cuenta el nmero de registros. Ninguno de los valores de los clculos realizados por expresin est disponible. Independientemente de si usa la funcin DCont (DCount) en una macro, mdulo, expresin de consulta o control calculado, debe crear el argumento criterios con cuidado para garantizar que se evaluar correctamente. Use la funcin DCont (DCount) en un control calculado cuando necesite especificar criterios para restringir el intervalo de datos sobre el que se ejecuta la funcin. Por ejemplo, para presentar el nmero de pedidos que se van a enviar a California, establezca la propiedad OrigenDelControl (ControlSource) de un cuadro de texto en la siguiente expresin: =DCount("[OrderID]", "Orders", "[ShipRegion] = 'CA'") Si slo desea contar todos los registros del dominio sin especificar ninguna restriccin, utilice la funcin Cuenta (Count). Sugerencia La funcin Cuenta (Count) se ha optimizado para acelerar el recuento de registros en las consultas. Utilice la funcin Cuenta (Count) en una expresin de consulta en vez de la funcin DCont (DCount), y establezca criterios opcionales para aplicar restricciones a los resultados. Utilice la funcin DCont (DCount) cuando deba contar registros en un dominio desde dentro de un mdulo o macro de cdigo, o en un control calculado. Puede utilizar la funcin DCont (DCount) para contar el nmero de registros que contienen un campo particular que no est en el origen de registros en que se basa el formulario o informe. Por ejemplo, puede mostrar el nmero de pedidos en la tabla Pedidos en un control calculado de un formulario basndose en la tabla Productos. La funcin DCont (DCount) no cuenta registros que contienen valores Nulo en el campo a que hace referencia expresin, a menos que expresin sea el asterisco (*), es decir, el caracter comodn. Si utiliza un asterisco, la funcin DCont (DCount) calcula el nmero total de registros, incluyendo los que contienen campos Null. En el ejemplo siguiente se calcula el nmero de registros en una tabla Pedidos. intX = DCount("*", "Orders") Si dominio es una tabla con una clave principal, tambin puede contar el nmero total de registros estableciendo como expresin el campo de clave principal, puesto que nunca va a haber un valor Nulo en el campo de clave principal. Si expr identifica varios campos, separe los nombres de los campos con un operador de concatenacin, ya sea & o el signo ms (+). Si utiliza la y comercial "&" para separar los campos, la funcin DCont (DCount) devuelve el nmero de registros que contienen datos en uno cualquiera de los campos enumerados. Si utiliza el signo ms (+), la funcin DCont (DCount) devuelve slo el nmero de registros que contienen datos en todos los campos enumerados. En el ejemplo siguiente se demuestran los efectos de cada operador cuando se utilizan en un campo que contiene datos en todos los registros (NombreEnvo) y con un campo que no contiene datos (ReginDestinatario).

intW = DCount("[ShipName]", "Orders") ' Returns 831.intX = DCount("[ShipRegion]", "Orders") ' Returns 323.intY = DCount("[ShipName] + [ShipRegion]", "Orders") ' Returns 323.intZ = DCount("[ShipName] & [ShipRegion]", "Orders") ' Returns 831. Nota El signo & es el operador preferido para concatenar cadenas. Debe evitar la utilizacin del signo ms (+) para cualquier cosa diferente de la suma de nmeros, a menos que desee propagar especficamente valores Nulo en una expresin. Los cambios no guardados realizados en los registros del dominio no se incluyen al usar esta funcin. Si desea que la funcin DCont (DCount) se base en los valores modificados, debe guardar primero los cambios haciendo clic en Guardar registro en el men Archivo, moviendo el enfoque a otro registro o usando el mtodo Update. Pueden ampliar informacin en la Ayuda de Access XP. (c) ngel Prez Daz. 1.993 - 2.003. Todos los Derechos Reservados.

______________________________________________________________

Convertir Nmeros a Texto vs Conversor de Euros


Una de las utilidades que los usuarios de Access demandan con mas insistencia es la relativa a una funcin que les convierta nmeros a texto. Ademas, ahora con la introduccin del Euro, el problema se complicaba por la aparicin de los centimos. Desde este boletn queremos ofrecer una funcin bastante sencilla que obtiene el texto correspondiente a partir de una cantidad, y que se puede implementar facilmente en cualquier objeto de Access (Formularios, Informes, Modulos, etc.). La funcionalidad de este aplicativo esta dividida en tres funciones. ConvertNText(Cantidad,Moneda,Genero) Esta Funcin puede ser llamada desde cualquier Objeto de Access, y solo tenemos que darle tres valores, la cantidad que queremos convertir, la moneda en la que deseamos nos devuelva la cadena, y el genero de esa moneda. Convertidor(Cantidad, Genero) Funcin Auxiliar que divide la cantidad en tres unidades para tratar millares, centenas y unidades. ConvertidorMatricial(Unidad,Convertir,Genero) Funcin Principal de traduccin a texto. Ademas se deben declarar algunas variables en el modulo para evitar repeticiones, y mantenerlas activadas durante el proceso. El cdigo que a continuacin se expone puede ser copiado y pegado en un mdulo nuevo de Access, para posterior mente llamar a la funcin principal ConvertNText(). '******************************************************** ' MODULO: Conversor a Euros. ' DECLARACION DE VARIABLES ' (C) Angel Prez Daz. Ao 2002. Todos los Derechos Reservados. '******************************************************** Option Compare Database Option Explicit Global Const FEMENINO = 0 ' Definicin de Genero Femenino Global Const MASCULINO = 1 ' Definicin de Genero Masculino Global Const NEUTRO = 2 ' Definicin de Genero Neutro Global Const Titulo = "Conversor Euros" '******************************************************** ' Funcin: ConvertNText

' Descripcin: Convierte un nmero a Texto (Control de la moneda y los decimales). ' (C) Angel Prez Daz. Ao 2002. Todos los Derechos Reservados. '******************************************************** Function ConvertNText(Cantidad, Moneda, Genero) As String On Error GoTo Error_ConvertNText Dim ParteEntera As Long, ParteDecimal As Long ParteEntera = Fix(Cantidad) If ParteEntera > 999999999 Then MsgBox "Este Conversor solo admite hasta 999 Millones de Euros.", 16, "Conversor Euros" Exit Function End If ParteDecimal = Right(Cantidad, Len(Cantidad) - InStr(1, Cantidad, ",")) ConvertNText = Convertidor(ParteEntera, Genero) & " " & Moneda ConvertNText = ConvertNText & " con " & Convertidor(ParteDecimal, Genero) & " cents." Exit Function Error_ConvertNText: MsgBox Error$, 48, Titulo Exit Function End Function '******************************************************** ' Funcin: Convertidor ' Descripcin: Convierte un nmero a Texto (Funcin Auxiliar de divisin de unidades). ' (C) Angel Prez Daz. Ao 2002. Todos los Derechos Reservados. '******************************************************** Function Convertidor(Cantidad, Genero) As String On Error GoTo Error_Convertidor Dim CantidadUnitaria As String CantidadUnitaria = Right(Format(Cantidad / 1000000, "000"), 3) If Val(CantidadUnitaria) <> 0 Then Convertidor = ConvertidorMatricial(1, CantidadUnitaria, Genero) End If CantidadUnitaria = Right(Format(Cantidad / 1000, "000"), 3) If Val(CantidadUnitaria) <> 0 Then Convertidor = Convertidor & ConvertidorMatricial(2, CantidadUnitaria, Genero) End If CantidadUnitaria = Right(Format(Cantidad, "000"), 3) If Val(CantidadUnitaria) <> 0 Then Convertidor = Convertidor & ConvertidorMatricial(3, CantidadUnitaria, Genero) End If Exit Function Error_Convertidor: MsgBox Error$, 48, Titulo Exit Function End Function '******************************************************** ' Funcin: ConvertidorMatricial ' Descripcin: Convierte un nmero a Texto (Funcin Auxiliar de traduccin a Texto). ' (C) Angel Prez Daz. Ao 2002. Todos los Derechos Reservados. '******************************************************** Function ConvertidorMatricial(Unidad As Integer, Convertir As String, Genero) As String On Error GoTo Error_ConvertidorMatricial Static Convertir1(16) As String Static Convertir2(10) As String Static Convertir3(10) As String Dim i As Integer Dim TextoObtenido As String If i = 0 Then Convertir1(1) = "UNA" Convertir1(2) = "DOS" Convertir1(3) = "TRES" Convertir1(4) = "CUATRO" Convertir1(5) = "CINCO" Convertir1(6) = "SEIS" Convertir1(7) = "SIETE" Convertir1(8) = "OCHO" Convertir1(9) = "NUEVE" Convertir1(10) = "DIEZ" Convertir1(11) = "ONCE" Convertir1(12) = "DOCE" Convertir1(13) = "TRECE" Convertir1(14) = "CATORCE" Convertir1(15) = "QUINCE" Convertir2(1) = "DIECI" Convertir2(2) = "VEINTI" Convertir2(3) = "TREINTA" Convertir2(4) = "CUARENTA" Convertir2(5) = "CINCUENTA" Convertir2(6) = "SESENTA" Convertir2(7) = "SETENTA" Convertir2(8) = "OCHENTA"

Convertir2(9) = "NOVENTA" Convertir3(1) = "CIENTO" Convertir3(2) = "DOS" Convertir3(3) = "TRES" Convertir3(4) = "CUATRO" Convertir3(5) = "QUINIEN" Convertir3(6) = "SEIS" Convertir3(7) = "SETE" Convertir3(8) = "OCHO" Convertir3(9) = "NOVE" i=1 End If If Genero = 0 Then Convertir1(1) = "UNA" Else If Unidad = 3 And Genero = 1 Then Convertir1(1) = "UNO" Else Convertir1(1) = "UN" End If End If If Val(Convertir) = 1 And Unidad = 2 Then GoTo Millares If Mid$(Convertir, 1, 1) = "0" Then GoTo Centenas If Val(Convertir) = 100 Then TextoObtenido = "CIEN" GoTo Millares End If TextoObtenido = Convertir3(Val(Mid$(Convertir, 1, 1))) Select Case Val(Mid$(Convertir, 1, 1)) Case 1 TextoObtenido = TextoObtenido & " " GoTo Centenas Case 2 To 4, 6 To 9 TextoObtenido = TextoObtenido & "CIEN" End Select If Unidad > 1 And Genero = 0 Then TextoObtenido = TextoObtenido & "TAS " Else TextoObtenido = TextoObtenido & "TOS " End If Centenas: Select Case Val(Mid$(Convertir, 2)) Case 10 TextoObtenido = TextoObtenido & "DIEZ " Case 2 To 15 TextoObtenido = TextoObtenido & Convertir1(Val(Mid$(Convertir, 2))) Case 20 TextoObtenido = TextoObtenido & "VEINTE " Case Else If Val(Mid$(Convertir, 2, 1)) > 0 Then TextoObtenido = TextoObtenido & Convertir2(Val(Mid$(Convertir, 2, 1))) End If If Val(Mid$(Convertir, 2, 1)) > 2 Then If Val(Mid$(Convertir, 3, 1)) = 0 Then GoTo Millares TextoObtenido = TextoObtenido & " Y " End If If Unidad = 1 And Mid$(Convertir, 3, 1) = "1" Then TextoObtenido = TextoObtenido & "UN" Else If Val(Mid$(Convertir, 3, 1)) > 0 Then TextoObtenido = TextoObtenido & Convertir1(Val(Mid$(Convertir, 3, 1))) End If End If End Select Millares: Select Case Unidad Case 1 Select Case Val(Convertir) Case 1 TextoObtenido = TextoObtenido & " MILLON " Case Is > 1 TextoObtenido = TextoObtenido & " MILLONES " End Select Case 2 TextoObtenido = TextoObtenido & " MIL " End Select ConvertidorMatricial = TextoObtenido Exit Function Error_ConvertidorMatricial: MsgBox Error$, 48, Titulo

Exit Function End Function Una vez copiado el cdigo, se puede hacer una llamada desde la ventana de inmediato, para comprobar la funcionalidad con el siguiente ejemplo: ?ConvertNText(125328.58,"EUROS",MASCULINO) La funcin devolver la cadena: CIENTO VEINTICINCO MIL TRESCIENTOS VEINTIOCHO EUROS con CINCUENTA Y OCHO Cents. Espero que os sirva. (c) ngel Prez Daz. 1.993 - 2.003. Todos los Derechos Reservados.

_______________________________________________________________

Вам также может понравиться