El uso de proyectos de Access (ADP) la configuración de DefaultMaxRecords y la instrucción Set Rowcount de T-SQL


Avanzado: Requiere conocimientos avanzados de codificación, interoperabilidad y multiusuario.


En este artículo sólo se aplica a un proyecto de Microsoft Access (.adp).


Resumen


Cuando se crea una aplicación, es una buena práctica de diseño para limitar el número de registros que se transfieren de una red desde un servidor de base de datos a los equipos cliente. Cuando se utiliza un proyecto (.adp) de Access 2002, Access utiliza varios métodos en segundo plano para controlar el número de registros procesados por SQL Server, incluidos SQL Server 2000 Desktop Edition, para evitar el tráfico de red innecesario. En este artículo se describe algunos de los métodos que utiliza Access para este propósito y algunos de los objetos y las acciones que pueden verse afectados en distintos escenarios.

Más información


La configuración de MaxRecords y DefaultMaxRecords

Vistas, procedimientos almacenados, funciones, formularios y páginas de acceso a datos en un proyecto de Access, se pueden tener una propiedad MaxRecords asociada. El valor de MaxRecords valor de un objeto se utiliza Access para limitar el número de registros procesados por SQL Server.

Si no se ha especificado el valor de MaxRecords para un objeto determinado, Access utiliza la propiedad DefaultMaxRecords . Este valor se establece en 10.000 registros cuando está creando un nuevo archivo, pero puede cambiar el valor a cualquier número entero válido. Para modificar esta configuración, utilice uno de los métodos siguientes.

Nota: Utilice el método 1 si es de la versión de Access que utiliza Access 2003 o una versión anterior de Access. Si utiliza Access 2007, utilice el método 2.

Método 1

  1. Abra el proyecto de Access (.adp) que desea cambiar la configuración de.
  2. En el menú Herramientas, haga clic en Opciones.
  3. Haga clic en la ficha Opciones avanzadas.
  4. Establecer la opción DefaultMaxRecords en el cuadro configuración de servidor y el cliente a un número superior o establecerla en 0 para no limitar el número de registros afectados. La configuración que elija afecta sólo al proyecto de Access que está abierto actualmente.
  5. Haga clic en Aceptar para cerrar el cuadro de diálogo Opciones.

Método 2

  1. Abra el proyecto de Access (.adp) que desea cambiar la configuración de.
  2. Haga clic en el Botón Officey, a continuación, haga clic en Opciones de Access.
  3. En el cuadro de diálogo Opciones de Access , haga clic en Avanzadas.
  4. En la sección Opciones avanzadas , establezca el valor en el cuadro Nº máximo de registros de predeterminado a un número superior o establezca el valor a 0 para no limitar el número de registros afectados. La configuración que elija afecta sólo al proyecto de Access que está abierto actualmente.
  5. Haga clic en Aceptar para cerrar el cuadro de diálogo Opciones de Access .
Cuando se cambia el valor de la propiedad DefaultMaxRecords , todas las vistas existentes, procedimientos almacenados y funciones que no tienen un valor de MaxRecords individual se ven afectadas por la nueva configuración predeterminada. Formularios y páginas, sin embargo, no se cambian automáticamente. Cuando se crean formularios y páginas, la propiedad MaxRecords individual para cada objeto se establece en el valor de DefaultMaxRecords.

Para modificar la propiedad MaxRecords individual de un objeto, siga estos pasos.

Para tablas, vistas, funciones y procedimientos almacenados:
  1. Abra el objeto en la vista Hoja de datos.
  2. En el menú registros , haga clic en el Número máximo de registros.
  3. En el cuadro de diálogo de Número máximo de registros , escriba el número máximo de registros que desea que se muestren.
  4. Haga clic en Aceptar.
Nota: esta configuración sólo permanecerá si está conectado a SQL Server 2000 o posterior. Las versiones anteriores de SQL Server no permite para propiedades de objeto extendido; por lo tanto, Access no puede guardar esta configuración.

Páginas de acceso a datos:
  1. En la vista Diseño de la página, haga clic en la página y, a continuación, haga clic en Propiedades de página.
  2. Haga clic en la ficha datos y, a continuación, establezca la propiedad MaxRecords en el valor que desee.
  3. Guarde la página.
Para los formularios:

Puede seguir los mismos pasos que las tablas en la vista formulario de un formulario. Además, se puede también establecer la propiedad MaxRecords en la vista Diseño de un formulario como sigue:

  1. En la vista Diseño del formulario, haga clic en el formulario y, a continuación, haga clic en Propiedades para mostrar la hoja de propiedades.
  2. En el menú Edición , haga clic en Seleccionar formulario para asegurarse de que está viendo la hoja de propiedades del formulario.
  3. En la hoja de propiedades del formulario, haga clic en la ficha datos y, a continuación, establezca la propiedad MaxRecords en el valor que desee.
  4. Guarde el formulario.

La instrucción SET ROWCOUNT

SET ROWCOUNT es una instrucción de Transact-SQL que utiliza SQL Server para limitar el número de registros afectados al recuperar o manipular datos. Cuando se envían al servidor SQL como un comando propio, la configuración se aplica a la conexión actualmente en ejecución o proceso y no afecta a otros procesos que se ejecutan de forma simultánea. Se trata de los usos de acceso principal mecanismo entre bastidores para implementar la configuración de DefaultMaxRecords para el proyecto.


Antes de enviar cualquier comando para manipular o recuperar registros de servidor SQL, Access envía una instrucción SET ROWCOUNT X para limitar el número de registros que se devuelven (o no limitar). Si Access determina que el valor actual de SET ROWCOUNT de la conexión ya está en el nivel deseado, puede que no envíe otra instrucción. El valor de X que se utilizan en la instrucción SET ROWCOUNT que se envía a SQL Server depende de varios factores que pueden variar, como sigue.

Cuando se abre una tabla, ver o función

Access comprueba primero un individuales MaxRecords extendido el valor de la propiedad para el objeto que se abre. Si se ha establecido específicamente ninguno, Access utiliza el valor de DefaultMaxRecords .

Al abrir un procedimiento almacenado

Un procedimiento almacenado se ve afectado al igual que cualquier otra consulta con una diferencia importante: puede especificar su propia instrucción SET ROWCOUNT en el procedimiento almacenado. Al hacerlo, la configuración puede reemplazar la propiedad MaxRecords , pero sólo en el contexto del procedimiento almacenado. Por ejemplo, cuando intenta ejecutar un procedimiento almacenado con una instrucción SET ROWCOUNT incrustada, ocurre lo siguiente:
  1. Access enviará una instrucción SET ROWCOUNT según la propiedad MaxRecords descrita anteriormente en este artículo.
  2. Access enviará un comando para ejecutar el procedimiento almacenado.
  3. El procedimiento almacenado envía su propia instrucción SET ROWCOUNT.
  4. El procedimiento almacenado continúa procesando comandos y está limitado sólo por el valor de SET ROWCOUNT en el paso 3.
  5. Cuando el procedimiento almacenado termine el procesamiento, los registros que se van son entregados a SQL Server.
  6. SQL Server aplica el valor de SET ROWCOUNT de la conexión del paso 1 y pasa los registros restantes al acceso.
Si es el único propósito del procedimiento almacenado ejecutar una consulta de selección, sería inútil tener una instrucción SET ROWCOUNT dentro del procedimiento almacenado que es mayor que el valor del objeto MaxRecords porque el valor de MaxRecords limitará aún el número de registros devueltos. Sin embargo, esta técnica es especialmente útil para las consultas de acción cuando desee actualizar un número ilimitado de registros sin que se vean afectados por el valor de SET ROWCOUNT de la conexión.
Para obtener más información acerca de cómo las consultas de acción se ven afectadas por la configuración de DefaultMaxRecords y la instrucción SET ROWCOUNT de SQL, haga clic en el número de artículo siguiente para verlo en Microsoft Knowledge Base:

287429 consulta de acción no afecta a todos los registros válidos en un proyecto de Access

Al abrir un formulario o página de acceso a

Access utiliza el valor de la propiedad MaxRecords individual para el formulario. Todos los formularios y páginas de Access 2002 tienen una propiedad MaxRecords individual establecida en DefaultMaxRecords al crear el objeto. Access no tiene en cuenta el valor de cualquier propiedad MaxRecords asociado con el origen de datos subyacente del formulario, como una tabla o una consulta.

Cuando se abre un informe

Acceso envía una instrucción SET ROWCOUNT 0 para permitir un número ilimitado de registros va a devolver. No hay ninguna propiedad MaxRecords individual para los informes. Access también no tiene en cuenta el valor de cualquier propiedad MaxRecords asociado con el origen de datos subyacente del informe o la propiedad DefaultMaxRecords .

Cuando se utiliza ADO para ejecutar un procedimiento almacenado o para abrir un objeto Recordset en una tabla o consulta

Acceso envía una instrucción SET ROWCOUNT 0 para permitir un número ilimitado de registros devueltos o transformadas. Access no tiene en cuenta el valor de cualquier propiedad MaxRecords asociado con el origen de datos subyacente o la propiedad DefaultMaxRecords .

Referencias


Para obtener más información acerca de los comandos de programación de SQL Server como SET ROWCOUNT, visite Microsoft SQL Server Developer Center en el siguiente sitio Web de Microsoft: