viernes, 20 de septiembre de 2013

Can Grow no funciona

Supongamos que tenemos un reporte en Access que tiene configurada la opción CanGrow en Yes, pero no está funcionando. Bien, pueden ser muchas las causas del problema. Una de ellas es que en realidad el campo (de tipo memo) esté siendo truncado en el query.

¿Cómo saberlo? 

Leyendo esto: http://allenbrowne.com/ser-63.html (Truncation of Memo fields)

En mi caso el problema erá que estaba usando UNION. Tal como dice el artículo, se resolvió al utilizar UNION ALL. Más info en http://msdn.microsoft.com/en-us/library/office/bb208962(v=office.12).aspx.

Nuevo problema

Sin embargo, apareció un nuevo problema. De pronto para Access, mi query resultó Muy Complejo. Así que opté por lo que debería haber hecho desde un principio. Armar directamente la vista en SQL Server, lo cual es válido en mi proyecto porque Access es sólo el Front End.

Y listo, problema solucionado: reporte sin campos truncados.
Hasta la próxima!

jueves, 19 de septiembre de 2013

¿Cómo cerrar Access desde VBA?

i = MsgBox("No tiene permiso para utilizar esta aplicación. Contacte a su administrador.", vbOKOnly, "Error")
Application.Quit

¿Cómo crear usuarios en SQL Server con TSQL?

Imaginemos que en nuestro proyecto de Access con SQL Server como base de datos, queremos crear usuarios usando scripts. Simplemente ejecutamos:


CREATE LOGIN ezequiel WITH PASSWORD = 'blablabla'

Y dentro de nuestra base de datos:

CREATE USER ezequiel FROM LOGIN ezequiel
GO
SP_ADDROLEMEMBER 'db_datawriter', 'ezequiel';
GO
SP_ADDROLEMEMBER 'db_datareader', 'ezequiel';
GO


¿Cómo obligar al pedido de credenciales al conectar Access con SQL Server?

Supongamos el siguiente escenario:

  • Access como front end, SQL Server como base de datos
  • Trabajamos en un ambiente de desarrollo con un usuario administrador
  • Al abrir nuestra aplicación Access no nos pide credenciales
¿Por qué?

La razón es simple. Nuestro usuario de Windows tiene acceso directo a SQL Server, con lo cual está ignorando el pedido de credenciales del ODBC. Está almacenado dentro de nuestra aplicación.

¿Cómo resolverlo?

Configuramos el ODBC así:


[ODBC]
DRIVER=SQL Server
UID=blabla
DATABASE=blabla
WSID=blabla
APP=Microsoft Office 2010
SERVER=blabla

Pero no funciona, aún así no nos pide las credenciales

¿Cómo solucionarlo?
  1. Cambiamos el driver de SQL Server a SQL Native Client
  2. Volvemos a configurar las vinculaciones desde 
    1. External Data
    2. Link Table Manager
    3. Opción "allways prompt for new location"
Veremos luego que nos pedirá las credenciales cada vez que ingresemos a Access.

viernes, 23 de agosto de 2013

The Default 'DF_XXX' does not exist on the server.

En SQL Server Management Studio se obtiene el siguiente mensaje de error al tratar de eliminar un constraint:

The Default 'DF_Certificados_Observaciones' does not exist on the server.

La solución es sencilla, intentar borrarlo con una instrucción ALTER:

ALTER table Certificados drop DF_Certificados_Observaciones

Esto funcionará sin problemas.

jueves, 22 de agosto de 2013

There isn't enough free memory to update the display. Close unneeded programs and try again.

¿Qué hacer ante el siguiente error?

There isn't enough free memory to update the display. 
Close unneeded programs and try again.

La solución que al menos a mi me ha funcionando es utilizar menos formularios u organizarlos de otra forma para que no se abran muchos al mismo tiempo.

jueves, 8 de agosto de 2013

¿Cómo agregar un parámetro como filtro en una DataSheet view?

Supongamos que queremos tener un filtro ingresado por el usuario en una vista de hoja de datos, tal como se ven en la siguiente imagen:



Una forma simple de resolverlo es agregando entre corchetes el nombre del parámetro en la vista SQL o en la vista de Diseño:

WHERE (((dbo_Reporte.[Vencimiento])>DateAdd('d',-[Ingrese la cantidad de días anteriores a la Fecha de Vencimiento:],Now())));


Fuente: http://office.microsoft.com/en-us/access-help/using-parameters-with-queries-and-reports-HA001117077.aspx