Archivo de la categoría: Access

Vistas SQL ASOFT

Para poder usar las tablas de A3ERP desde Access con ODBC es necesario crear unas vistas, dado que las tablas de A3ERP tienen mas de 10 indices y esto no lo puede manejar Access.

Este es el script para crear las vistas

Abra el SQL management studio

Vaya a la base de datos que interese conectar

Pulse el botón Nueva consulta

Pegue este script de creación de vistas

Y ejecutelo

CREATE
VIEW [dbo]. [ASOFT_ARTICULO] AS
SELECT
*
FROM ARTICULO

GO

CREATE
VIEW [dbo]. [ASOFT_CLIENTES] AS
SELECT
*
FROM CLIENTES

GO

CREATE
VIEW [dbo]. [ASOFT_PROVEED] AS
SELECT
*
FROM PROVEED

GO

CREATE
VIEW [dbo]. [ASOFT_CABEALBC] AS
SELECT
*
FROM CABEALBC

GO

CREATE
VIEW [dbo]. [ASOFT_CABEALBV] AS
SELECT
*
FROM CABEALBV

GO

CREATE
VIEW [dbo]. [ASOFT_CABEDEPC] AS
SELECT
*
FROM __CABEDEPC

GO

CREATE
VIEW [dbo]. [ASOFT_CABEDEPV] AS
SELECT
*
FROM __CABEDEPV

GO

CREATE
VIEW [dbo]. [ASOFT_CABEFACC] AS
SELECT
*
FROM CABEFACC

GO

CREATE
VIEW [dbo]. [ASOFT_CABEFACV] AS
SELECT
*
FROM CABEFACV

GO

CREATE
VIEW [dbo]. [ASOFT_CABEOFEC] AS
SELECT
*
FROM CABEOFEC

GO

CREATE
VIEW [dbo]. [ASOFT_CABEOFEV] AS
SELECT
*
FROM CABEOFEV

GO

CREATE
VIEW [dbo]. [ASOFT_CABEPEDC] AS
SELECT
*
FROM CABEPEDC

GO

CREATE
VIEW [dbo]. [ASOFT_CABEPEDV] AS
SELECT
*
FROM CABEPEDV

GO

CREATE
VIEW [dbo]. [ASOFT_LINEALBA] AS
SELECT
*
FROM LINEALBA

GO

CREATE
VIEW [dbo]. [ASOFT_LINEDEPO] AS
SELECT
*
FROM __LINEDEPO

GO

CREATE
VIEW [dbo]. [ASOFT_LINEFACT] AS
SELECT
*
FROM LINEFACT

GO

CREATE
VIEW [dbo]. [ASOFT_LINEOFER] AS
SELECT
*
FROM LINEOFER

GO

CREATE
VIEW [dbo]. [ASOFT_LINEPEDI] AS
SELECT
*
FROM LINEPEDI

GO

CREATE
VIEW [dbo]. [ASOFT_CARTERA] AS
SELECT
*
FROM CARTERA

GO


ERROR ODBC fallo la llamada, el nombre de columna no es valido

Si al abrir alguna tabla o consulta del programa se produce el error

No esta indicando que esta columna ha desaparecido de la tabla original o de la vista ASOFT_ que la usa

Esto es debido a que al crearse las vistas en SQL con *, de hecho NO se guarda el *, sino que el SQL pone todos los nombres de campos en la lista.

Hay que ir al SQL Management studio

Buscar la base de datos

Buscar la vista

Editarla

Quitar todos los campos

Poner el *

Y guardar

ODBC SQL ASOFT de 32 bits

Para conectar el programa en Access a las bases de datos de A3ERP en MS-SQL se usa un ODBC que hay que definir previamente a la instalación del programa.

También en el caso que la aplicación de Asoft este contra base de datos SQL en lugar de Access

El ODBC tiene que ser de 32 o 64 bits en función de la versión de Access que tenga instalado.

Previamente hay que hacer creado en el SQL un usuario ASOFT con su contraseña y permisos de administrador.

Si tenemos A3ERP esto se puede hacer desde el menú de seguridad del A3ERP

En equipos de 64 bits, podemos buscar el ODBC de 32 bits en el menú inicio

O ir a la ruta C:\Windows\SysWOW64

Y allí tenemos el fichero odbcad32.exe

Entramos en el gestor de ODBC y vamos definiendo

Recomiendo crear DNS de sistema, así nos vale para cualquier usuario del ordenador

Pulsamos el botón Agregar y en la pantalla de configuración ponemos

Nombre: SQL ASOFT

Servidor: el que estemos usando. Al desplegar salen los servidores disponibles

Pulsamos a siguiente

Marcamos con autenticación SQL y ponemos la Id de inicio de sesión y la contraseña

Esto lo hacemos como precaución y para verificar que realmente funciona y conecta con el servidor SQL

Pulsamos a siguiente

Y en esta pantalla no es preciso indicar nada más. NO hace falta poner una base de datos predeterminada.

Pulsamos siguiente

En esta pantalla tampoco hay que poner nada más, así que pulsamos finalizar

Ahora es importante probar el origen de datos

Nos tiene que responder que las pruebas se han completado correctamente

Si todo está bien, adelante. Si hay algún error hay que revisar los pasos hasta subsanarlo.

Sobre todo verificar que el servicio de SQL esta iniciado. Y que el usuario ASOFT y contraseña están existen.

 

 

 

Al abrir el programa éste que queda colgado y no muestra nada

O da el mensaje de error

Error:3044.Seguridad mal definida en el fichero ini

Lo más seguro es que haya perdido alguna de las conexiones de red

Vaya a la carpeta del programa (c:\Asoft\asoftsql), busque el fichero .INI y haga doble clic para editarlo

Verifique las unidades de red que tiene definidas

En este ejemplo se buscan los datos en la unidad T:

Y compruebe en el explorador de archivos que tiene todas estas unidades y permiso TOTAL para acceder a dichas carpetas y subcarpetas

Y por lo que vemos en el explorador de archivos la unidad T: no existe.

Por lo tanto hable con el administrador de sus sistema para que le reconecte las unidades de red

También podría ser que estuviera marcada en rojo con un aspa: haga doble clic sobre la unidad para refrescar la conexión.

Si no se refresca, hable con el administrador de sistemas.

La licencia de este programa caduca

El mantenimiento de este programa caduca

Ambos mensaje indican que el periodo de licencia o mantenimiento va a caducar

Si caduca el mantenimiento no pasa nada, el programa seguirá funcionando.

Si caduca la licencia, NO podrá usar el programa

Para solucionar esto, hay que entrar en el programa con el usuario administrador

Hacer doble clic sobre el número de licencia que está en la parte inferior izquierda

Y se mostrara la pantalla de licencias, donde hay unos campos que el administrador puede llenar con los días de duración e la licencia o mantenimiento

El formulario de registro Nuevo

Para probar todo nuestro sistema necesitamos adecuar el formulario SQL Nuevo

Para un formulario sencillo se muestra así

Para un formulario de cabecera y líneas, con campo de serie y número se muestra así

Y en modo diseño

Este es un formulario base, al cual hay que asignar código para determinar que controles se hacen visibles, según el formulario que lo llama, y que hay que hacer al aceptar.

En la parte superior del código declaramos dos variables que usaremos

El procedimiento Form_Load()

Asignamos valor al variable fichero, dependiendo si el nuevo se ha pulsado desde el formulario de selección o desde el de edición

Y también valor al variable campo, según el Tag del fichero. Por eso es importante llenar este campo en los formularios de edición: nos dice cuál es el campo clave, principal y único

Y ponemos título al campo principal

Ahora dependiendo del tipo de formulario deberemos hacer visibles algunos campos

Si es el de facturas, necesitamos hacer visible la serie, el número y el almacén

Y a la serie, como es un cuadro combinado hay que asignarle valores, cosa de la que se encarga la función seriesdeSQL(sFichero)

Que devuelve una cadena con las series asignadas en los contadores

Por ejemplo A;Verdadero;B;Falso;

Si el formulario es sencillo, y no tiene series basta hacer visible el campo Valor, ponerle etiqueta y asignar el foco

Aquí tenemos todo el código

El procedimiento BtnAceptar_Click()

Declaramos las variables que necesitamos

Y hay una instrucción Case para decidir lo que hacemos con cada tipo de formulario

Formulario Facturas ventas

Verificamos que haya almacén

Abrimos el fichero de facturas, para que si hemos entrado valores podamos buscar el que hemos entrado, y si no crear el registro nuevo

Si hemos entrado valores, lo buscamos y si ya existe, avisamos, pues no se puede crear. No podemos duplicar valores del campo principal

Si no hemos entrado valores los calculamos

La número se obtiene con la función contadoressql(sFichero, sCampo, Me.Serie)

A la que hay que pasar el fichero, el campo a buscar y la serie.

En nuestro caso sería un contadoressql(“Facturas ventas”, “Factura”, Me.Serie)

Y por definición ajustamos la serie y el numero con 6 ceros a la izquierda

Me.Valor = Me.Serie & ceros(Me.Numero, 6)

Por ultimo creamos el registro nuevo asignado los valores del campo principal y los demás que necesitemos

Para los ficheros estándar, que solo tienen un campo principal de tipo texto usamos el código del Else

Abrimos el fichero

Para buscar si el valor entrado existe

En cuyo caso informamos que no se puede crear el registro pues no admitimos valores duplicados

Si no existe, lo asignamos con la función contadoressql(sFichero, sCampo, “”)

Y creamos el registro con el campo principal y los valores por defecto que queramos asignar

Por ultimo necesitamos cerrar el formulario nuevo y mostrar el formulario que nos interesa en el registro que hemos creado

La función IraConDatoSQL(sFichero, sCampo, sValor), muestra un formulario en el registro que le indicamos.

En nuestro ejemplo de facturas sería un

IraConDatoSQL(“Facturas ventas”, “Factura”, sValor)

Y como sValor tiene el número de factura, nos lleva a esa factura.

NOTA: en este código también está la parte de creación de una empresa nueva, que no se ha explicado aquí.

 

 

 

Formulario de edición con cabecera y líneas

Para los formularios que tienen cabecera y líneas, disponemos del modelo base facturas ventas

Formulario de líneas

Primero diseñamos la parte de las líneas, con un formulario en modo hoja de datos

Donde ponemos los campos que nos interesen, sin olvidar los formatos y si es necesario algún Cuadro combinado, como el de artículos.

Dado que al poner el artículo, necesitamos obtener el precio y la descripción, hay que poner algo de código en el evento Después de actualizar

Private Sub Articulo_AfterUpdate()

Dim rst As Recordset

Set rst = CurrentDb().OpenRecordset(“SELECT * FROM Articulos WHERE Articulo='” & Me.Articulo & “‘”)

Me.Descripcion_larga = rst![Descripcion larga]

Me.Precio = rst!PVP

End Sub

En nuestro caso abrimos un recordset con una SQL que nos devuelve el artículo que hemos puesto y asignamos a los campos los valores que necesitamos

El formulario de cabecera

Tiene unas medidas de 27 x 16,5 y 1 cm. de pie

En la cabecera ponemos los campos identificativos de la factura:

Y añadimos un control de pestaña para poner las distintas partes restantes.

Dos pestañas, una para los artículos y otra para las observaciones

Pestaña con las líneas

Donde hemos insertado el formulario de líneas previamente creado

Al pie del mismo ponemos el total de la factura, que posteriormente vemos la técnica que usamos para calcularlo

Pestaña con observaciones

Pie del formulario

Aquí esta insertado como en los casos anteriores el formulario SQL edición botones