Damoin Web Services

Blog de Social Media y Desarrollo Web

Aspx Access to the path is denied

Español:
Esto sucede porque el usuario con el que se esta ejecutando el código aspx no tiene permisos de escritura al directorio que se muestra en el fallo.

Para arreglarlo usaremos la orden <%= Environment.UserName %> en nuestro código aspx, esto nos da el usuario que esta ejecutando el código y al cual debemos dar permisos de escritura en el directorio.

English:
This is because the user that is running on aspx code does not have write permissions to the directory shown in the error log.

To fix this use the command <% = Environment.UserName%> in our aspx code, this gives the user who is running the code and to which we must give write permissions on the server folder.

Access: Resolver conflicto de escritura en tabla vinculada a SQL Server

Trabajando con SQL Server es común programar una interfaz en Access dadas las posibilidades de hacer una aplicación en poco tiempo y con opciones suficientes para un amplio perfil de usuarios.

Al trabajar en Access sobre SQL Server siempre es interesante el hacerlo sobre tablas vinculadas y aunque no suelen dar problemas de vez en cuando surge el famoso conflicto de escritura, desde Damoin os ofrecemos dos posibles causas y opciones para resolver este problema.

Causa 1: Campos tipo bit no inicializados. En este caso el problema surge al introducir un campo bit en la tabla sql server y vincularlo en Access sin haberle puesto un valor predeterminado a 0 ó 1. En el caso de una tabla vacia el problema surgira el intertar meter cualquier registro y en el caso de una tabla ya usada anteriormente el error dara tanto en inserciones como en updates, tiene sentido ya que Access necesita mostrar un valor para ese campo y SQL no se lo puede dar (no lo tiene) con lo que intenta escribir los dos valores al mismo tiempo.

Solución: Asignarle un valor predeterminado al campo bit , hacer en SQL Server un UPDATE a toda la tabla con el valor que queramos(0/1) y por último volver a vincular la tabla o actualizar la vinculación desde Herramientas>>Administrador de tablas vinculadas.

Causa 2: Tablas con campos float ,real, decimal, etc con valores dependientes de formulas. Este es un error menos común que el anterior pero puede ocurrir.

El caso típico es el de una aplicación de gestión donde existe un campo calculado (cantidad*precio), al intentar escribir en otro campo del registro nos da el conflicto de escritura, en este caso dado que el campo calculado recoge el valor posteriormente al update si intentamos registrar cambios en otro campo access no sabe cual ha sido la primera modificacion.

Solución: Crear en la tabla afectada un campo de tipo TIMESTAMP, entendemos que este campo almacena información sobre el momento de la ultima actualización para evitar colisiones y detectar precisamente conflictos de escritura. Despues de crear el campo hay que actualizar la informacion de la tabla vinculada o volver a vincularla.

Dejad un comentario para saber si os ha servido de ayuda.

Filtrar en Formulario Access con VBA

Abrimos la programacion VBA en el evento que queramos que desencadene el filtro (en este caso es un campo de texto al escribir algo).

Guardamos la condicion a filtrar en una variable, luego la asignamos a la propiedad Filter del formulario (si el filtro fuese en otro habria que especificar el nombre Form_nombre).

Luego activamos el filtro poniendo la propiedad FilterOn en true.

Private Sub filtro_txt_AfterUpdate()
Filter = “[CODIGO] like ‘*” & Me.filtro_txt & “*’”
Me.Filter = Filter
Me.FilterOn = True
End Sub

Enviar correo desde Access usando SMTP

Si queremos enviar correos personalizados desde una aplicacion en Access u otro programa que haga uso de VBA lo haremos de la siguiente manera, este ejemplo en particular hace uso de un servidor SMTP externo con autentificacion.

Primero creamos una funcion para leer la plantilla (en el caso de que la tengamos) que va a contener el html de nuestro email, logicamente devolvera un string.

Para que el objeto Scripting.FileSystemObject pueda ser usado primero debemos añadir la referencia “Microsoft Scripting Runtime” , sino nos dara algun fallo como que no reconoce el tipo.

Public Function LeeFichero() As String
Dim fso As Scripting.FileSystemObject, fil1 As File, ts As TextStream
Dim strPath2 As String
strPath2 = “C:\html_email.txt”
Set fso = New Scripting.FileSystemObject
Set fil1 = fso.GetFile(strPath2) ‘ strPath2 contiene el nombre completo del fichero
Set ts = fil1.OpenAsTextStream(ForReading, TristateUseDefault)
Do Until ts.AtEndOfStream
Dim sTexto As String
sTexto = sTexto & vbCrLf & ts.ReadLine
Loop
ts.Close
LeeFichero = sTexto
Set ts = Nothing
Set fil1 = Nothing
Set fso = Nothing
End Function
Luego creamos un procedimiento que recibira por parametros el remitente, destinatario y texto que queremos enviarle
Sub envia_correo(remitente, destinatario, texto)

Exportar de Access a Excel con VBA

Si queremos exportar una consulta de Access directamente a Excel se puede hacer con este comando desde VBA:

DoCmd.TransferSpreadsheet acExport, acSpreadsheetTypeExcel9, “NOMBRE_CONSULTA”, nombre_ARCHIVO, True

DoCmd.TransferSpreadsheet acExport, esta es la orden para exportar a una hoja de calculo.

acSpreadsheetTypeExcel9 , esto identifica la version de excel que vamos a usar para hacer la exportación, el numero final dependera de la version de excel que tengamos instalada en nuestro ordenador.

El “NOMBRE_CONSULTA” sera el nombre de la query que hayamos diseñado previamente en el panel de base de datos de Access.

El nombre_archivo sera la ruta donde queramos guardar el xls, hay que especificar la ruta completa “C:\informes\informe1.xls” , el nombre normalmente se crea con parámetros como el nombre de consulta + la fecha en la cual se hace la exportación.

Te ayudamos a integrar esta solución en tu aplicación de Access [ click aquí]