El Blog de Alex Borrás » Posts in 'Microsoft Access 2000' category

Error Eliminado en ODBC Mysql-Access

Al vincular una tabla de MySQL en una base de datos Access al abrir la tabla todos los campos de todas las filas dan el mensaje #eliminado.

Una manera de poder trabajar por lo datos es crear un consulta basada en la tabla poniendo el * para que seleccione todos los campos.

Ir a propiedades de la Consulta y en las Propiedades poner como Tipo Recordet: Archivo Snapshot.

Después abrir la consulta y ya se ven todos los datos.

VN:F [1.4.6_730]
Rating: 0.0/5 (0 votes cast)
Posted in Microsoft Access 2000
Tags: ,

Desplegable en Access combinando dos campos, uno de ellos nulo

Típico caso en Microsoft Access en el que tenemos que poner una desplegable para personas con el código oculto y visualizando nombre  apellidos o apellidos,  nombre el problema con el sistema normal es que si uno de los dos campos es nulo no se muestra nada.

La solución es poner esto en la columna de la consulta SQL de la que depende el campo de descripción:

Visual Basic:
Paciente: [apellidos]+SiInm(EsNulo([nombre propio]);"";", "+[nombre propio])

Ejemplo en CAGI0101_1

VN:F [1.4.6_730]
Rating: 0.0/5 (0 votes cast)
Posted in Microsoft Access 2000
Tags: ,

Barra de Menú Contextual en Access

Paso a paso para crear una barra de menus contextual y utilizarla en un formulario Access.

Como crear la barra de Menus Contextuales:

  1. Ir Ver-> Barra de Herramientas -> Personalizar
  2. Seleccionar la pestaña Barra de Herramientas y pulsa el Boton Nueva
  3. Poner un nombre (yo las suelo empezar por ctx) y MenuContextual y verás que aparece una barra flotante.
  4. Añadir las funciones o macros que se quiera o no pongas ninguna
  5. Una vez creada la barra de Herramientas, selecciona Propiedades de la Barra de Herramientas nueva e indica que es de tipo emergente, verás que desaparece de la lisa de Barra de Herramientas, no pasa nada.

Como modificar las opciones de un Menú Contextual

  1. Ir Ver-> Barra de Herramientas -> Personalizar
  2. Marcar la barra Menús Contextuales y aparece una barra que contiene todos los menús contextuales de Access.
  3. El último Menú es Personalizada y allí podemos, de la forma habitual, añadir, modificar o eliminar opciones de la barra de Menús

Una forma de Utilizar los Menús Contextuales

Es habitual tener un formulario con una lista de registros y que queramos añadirle una serie de opciones a los mismos via menú contextual de una forma sencilla, aquí os pongo un ejemplo posible, para utilizar este ejemplo son necesarios conocimientos básicos de VBA.

Partimos de la base de que tenemos un formulario que nos muestra una lsita de clientes y cada cliente tiene su formulario de mantenimiento de datos: frmClientes

  1. Creamos una barra de menú contextual llamada ctxCliente
  2. Creamos una variable global llamada gblCliente
  3. Creamos una función VBA por cada acción de la Barra de Menús (Ejemplo 1)
  4. Añadidimos en nuestra barra de menús la acción para acceder a la función pública poniendo en Acción = pfuCompeticionFicha()

Ejemplo 1:

Visual Basic:
Public Function pfuClienteFicha()
On Error Resume Next
DoCmd.OpenForm "frmCliente", , , "[ClienteID]='" & gblCliente & "'"
End Function

VN:F [1.4.6_730]
Rating: 0.0/5 (0 votes cast)
Posted in Microsoft Access 2000
Tags:

Consulta de Referencias cruzadas en Access con parámetros

Es frecuetne hacer una consulta SQL de referencias cruzadas en Access basada en una primera consulta que prepara los datos y los filtra en función de unos parámetros.

La 1ª consulta con parámetros funciona bien pero la 2ª da error al ejecutarse.

Hay que hacer lo siguiente:

  1. Suponemos que la 1ª consulta se basa en dos campos de fecha que están en un formulario llamado CGTI0037, los campos se llaman: [Desde Fecha] y [Hasta Fecha]
  2. La primera consulta, la de selección, usa este dos campos para filtrar los datos
  3. En la segunda consulta una vez construida y estando en el modo de diseño se debe ir a la barra de  menús superior e ir a la opción Consulta->Parámetros y aparece una tabla de doble entrada donde pone Par´maetro y Tipo de datos.
  4. Insertaremos tantas filas como parámetros tengamos, en nuestro caso serán dos:
    • [Desde Fecha], tipo de datos Fecha/Hora
    • [Hasta Fecha], tipo de datos Fecha/Hora
  5. Ahora podremos ejecutar la consulta sin que de errores.

Si los parámetros no están en un formulario si no directamente en la primera consulta el procedimient en la 2ª consulta es el mismo.

VN:F [1.4.6_730]
Rating: 0.0/5 (0 votes cast)
Posted in Microsoft Access 2000
Tags:

Como ver todos los comandos de Microsoft Access

Código VBA para ver todos los comandos de las barras de menú de Access 2000:

Visual Basic:
Sub EnumerarComandos()
    Dim cb  As CommandBar
    Dim cbc As CommandBarControl
    For Each cb In Application.CommandBars
        Debug.Print cb.Name
        For Each cbc In cb.Controls
            Debug.Print cbc.Caption
        Next
    Next
End Sub

VN:F [1.4.6_730]
Rating: 0.0/5 (0 votes cast)
Posted in Microsoft Access 2000
Tags:

Como ver todos los iconos de Microsoft Access

Con esta secuencia creamos una barras de menús para ver todos los iconos que lleva incorporados Access y desde personalizar podemos copiar y pegar.

Comprobado en Access 2000 y 2003

Visual Basic:
Sub EnumerarIconosAccess()
    Dim cb  As CommandBar
    Dim cb1 As CommandBar
    Dim cbc As CommandBarControl
    Dim cbc1 As CommandBarControl
    Dim cbc2 As CommandBarButton
    Dim cbb As CommandBarButton
    Dim cbx As CommandBarComboBox
    Dim cbp As CommandBarPopup
    Dim cbp1 As CommandBarPopup
    Dim ind1 As Integer
    Dim ind2 As Integer
    For ind1 = 1 To 4
        Set cb = Application.CommandBars.Add("Botones" + Str(ind1))
        For ind2 = ((ind1 - 1) * 1000) + 1 To (ind1 * 1000)
            Set cbc2 = cb.Controls.Add(msoControlButton)
            cbc2.Style = msoButtonIcon
            cbc2.FaceId = ind2
            cbc2.Caption = ind2
            cbc2.Tag = ind2
        Next ind2
    Next ind1
    MsgBox "Barra Creada"
End Sub

VN:F [1.4.6_730]
Rating: 0.0/5 (0 votes cast)
Posted in Microsoft Access 2000
Tags: ,

Como validar el tamaño de un campo de texto en Access 2000

Suponiendo que el campo se llame Texto1 y sea independiente, es decir no esté ligado a una tabla se hace de la siguiente forma:

En la propiedad Regla de Validación de la pestaña Datos entramos la siguiente expresión:

Longitud([Texto1])<=10

Siendo 10 el número de caracteres máximos que queremos permitir.

Se recomienda también introducir un mensaje explicativo debajo en la propiedad Texto de Validación que se visualiza en caso de infringir la propiedad, por ejemplo:

Texto demasiado largo, máximo 10 caracteres.

VN:F [1.4.6_730]
Rating: 0.0/5 (0 votes cast)
Posted in Microsoft Access 2000
Tags:

Ejemplos de Alter Table para Microsoft Access

Ejemplos de Alter Table con ADD Column, CONSTRAINT , CREATE TABLE, etc. para Microsoft Access

SQL:
-- CAG
ALTER TABLE CAGT0001 ADD COLUMN Tratamiento   TEXT (12)
ALTER TABLE CAGT0001 ADD COLUMN SerieFactura  TEXT (2)
ALTER TABLE CAGT0001 ADD COLUMN NumeroFactura Long
-- CAGT0002: LLamadas Counter es Autonumerico
CREATE TABLE CAGT0002 ([LLamada] Counter, CONSTRAINT CAGT0002_PK PRIMARY KEY ([LLamada]))
ALTER TABLE CAGT0002 ADD COLUMN [codigo medico]  TEXT (4)
ALTER TABLE CAGT0002 ADD COLUMN [codigo paciente]  TEXT (8)
ALTER TABLE CAGT0002 ADD COLUMN fecha DATETIME
ALTER TABLE CAGT0002 ADD COLUMN hora  DATETIME
ALTER TABLE CAGT0002 ADD COLUMN texto TEXT(255)
ALTER TABLE CAGT0002 ADD COLUMN observaciones LONGTEXT
-- CAGT0105: Motivos de Alta
CREATE TABLE CAGT0105 ([MotivoAlta] TEXT (12) NOT NULL, CONSTRAINT CAGT0105_PK PRIMARY KEY ([MotivoAlta]))
ALTER TABLE CAGT0105 ADD COLUMN [Descripcion]  TEXT (50)
-- CAGT0171: Empresas
CREATE TABLE CAGT0171 ([Empresa] TEXT (12) NOT NULL, CONSTRAINT CAGT0171_PK PRIMARY KEY ([Empresa]))
ALTER TABLE CAGT0171 ADD COLUMN [NombreEmpresa]  TEXT (50)
-- CAGT0201: Otros Médicos
CREATE TABLE CAGT0201 ([Medico] TEXT (12) NOT NULL, CONSTRAINT CAGT0201_PK PRIMARY KEY ([Medico]))
ALTER TABLE CAGT0201 ADD COLUMN [Tratamiento]  TEXT (10)
ALTER TABLE CAGT0201 ADD COLUMN [Nombre]    TEXT (50)
ALTER TABLE CAGT0201 ADD COLUMN [Apellidos] TEXT (50)
--- Otros
ALTER TABLE CAGT0101 ADD COLUMN TipoEpisodio TEXT (12)
CREATE TABLE CAGT0181 ([Tratamiento] TEXT (12) NOT NULL, [Descripcion] TEXT (50) NOT NULL, [Tiempo] Date NOT NULL, [Maquina] TEXT(12), [Color] LONG, CONSTRAINT CAGT0181_PK PRIMARY KEY ([Tratamiento]))
CREATE TABLE CAGT0191 ([Maquina] TEXT (12) NOT NULL, [Descripcion] TEXT (50) NOT NULL, [NumeroMaquinas] INTEGER, CONSTRAINT CAGT0191_PK PRIMARY KEY ([Maquina]))
-- CAR
-- Parámetros
ALTER TABLE CART0001 ADD COLUMN [estado pendiente cobro] TEXT (4)
ALTER TABLE CART0001 ADD COLUMN TextoCeldaSize BYTE
ALTER TABLE CART0001 ADD COLUMN FormularioBusquedaServicios BYTE
ALTER TABLE CART0001 ADD COLUMN ServicioForzarEnCelda BIT
-- Médicos
ALTER TABLE CART0011 ADD COLUMN HoraInicioEspecial DATETIME
ALTER TABLE CART0011 ADD COLUMN VisitaSemanas BYTE NOT NULL
UPDATE CART0011 SET VisitaSemanas = 2 WHERE VisitaSemanas IS NULL;
-- Bloqueos
ALTER TABLE CART0012 ADD COLUMN Tratamiento TEXT (12)
-- Servicios
ALTER TABLE CART0021 ALTER COLUMN descripcion TEXT(200)
ALTER TABLE CART0021 ADD COLUMN   TextoCOMB   TEXT (100)
ALTER TABLE CART0021 ADD COLUMN   VerEnCelda  BIT
-- Tarifas de ervicios
ALTER TABLE CART0041 ADD COLUMN Intervencion BIT
-- CART0053: Tipos de Mutuas
CREATE TABLE CART0053 ([TipoMutua] TEXT (12) NOT NULL, CONSTRAINT CART0053_PK PRIMARY KEY ([TipoMutua]))
ALTER TABLE CART0053 ADD COLUMN [Descripcion]  TEXT (50)
-- CART0101 Pacientes
ALTER TABLE CART0101 ADD COLUMN Efectivo BIT
-- CHC
CREATE TABLE CHCT0117 ([codigo paciente] TEXT (7) NOT NULL, [episodio] LONG NOT NULL, [code] TEXT (50) NOT NULL, [Observaciones] MEMO, CONSTRAINT CHCT0113_PK PRIMARY KEY ([codigo paciente], episodio, code))
--  CGT
-- CGTT0401 Productos
ALTER TABLE CGTT0401 ADD COLUMN Efectivo BIT
ALTER TABLE CGTT0401 ADD COLUMN CodigoBarras TEXT (50)
-- CGTT0511 Movimientos de Productos
ALTER TABLE CGTT0511 ADD COLUMN Efectivo BIT
ALTER TABLE CGTT0511 ADD COLUMN SerieFactura  TEXT (2)
ALTER TABLE CGTT0511 ADD COLUMN NumeroFactura Long

VN:F [1.4.6_730]
Rating: 5.0/5 (1 vote cast)
Posted in Microsoft Access 2000
Tags: ,

Lista de campos de una tabla access

Modo resumido

Visual Basic:
Sub CamposDeTabla1()
    Dim dbs As DAO.Database
    Dim tdf As DAO.TableDef
    Dim fld As DAO.Field
    Set dbs = OpenDatabase("i:\intex winbol2000\E999\car.mdb")
    Set tdf = dbs.TableDefs("CART0001")
    For Each fld In tdf.Fields
        Debug.Print fld.Name
    Next
    Set fld = Nothing
    Set tdf = Nothing
    dbs.Close
End Sub


Modo ampliado

Visual Basic:
Sub CamposDeTabla()
    Dim dbs As DAO.Database
    Dim tdf As DAO.TableDef
    Dim fld As DAO.Field
    Set dbs = OpenDatabase("i:\intex winbol2000\E999\car.mdb")
    Set tdf = dbs.TableDefs("CART0001")
    For Each fld In tdf.Fields
        Select Case fld.Type
            Case 1 ' Boolean
                Debug.Print fld.Name
            Case 4 ' Long
                Debug.Print fld.Name
            Case 7 ' Double
                Debug.Print fld.Name
            Case 8 ' Date
                Debug.Print fld.Name
            Case 10 ' Text
                Debug.Print fld.Name
            Case 12 ' Memo
                Debug.Print fld.Name
            Case Else
                Debug.Print fld.Name
        End Select
    Next
    Set fld = Nothing
    Set tdf = Nothing
    dbs.Close
End Sub

VN:F [1.4.6_730]
Rating: 0.0/5 (0 votes cast)
Posted in Microsoft Access 2000, Visual Basic
Tags: , , ,

Sistema multi-idioma en Access

El sistema que utilizamos para el multiidioma en Access es el siguiente:

1. Primero se realiza la aplicación Access en castellano (por ejemplo)

2. Le pasamos una rutina que documenta en una tabla Access los siguientes elementos:

- Etiquetas de Formularios

- Etiquetas de Informes

- Caption's de Botonos

- Caption's de Páginas en el control ficha

- ...

Los nombres de las etiquetas quedan asociados al idioma 'es'

Ventaja

Ahorra mucho tiempo en documentar, es automático

3. Si queremos que la aplicación se presente también en Inglés copiamos la tabla de etiquetas del idioma ‘es' al 'en' y ponemos la descripción de la etiqueta en inglés

Ventaja

Si una etiqueta como 'Codigo Cliente' se repite 50 veces en una aplicación de gestión sólo es necesario traducirla una vez. Traducir una aplicación completa lleva 20 minutos.

4. Definimos los usuarios que tienen acceso a la aplicación y con que idioma quieren trabajar

5. Cada vez que se carga un formulario en el evento Form_load añadimos una línea que llama a una función donde se asigna a cada Caption de Etiquetas, botones, etc. su descripción en el idioma del usuario, cuando se presenta el formulario o informe éste ya esta traducido y no se nota ningún tiempo de espera significativo.

Ventaja

Si se cambia de usuario no es necesario reiniciar la aplicación para que cambie al idioma del usuario, ya que la traducción se realiza en tiempo de ejecución.

6. Idioma ‘pz’, éste idoma que quiere decir ‘personalizado’ está dado de alta en la tabla de idiomas y permite que las empresas usuarias de la aplicación se hagan una traducción de la misma ‘a la carta’.

Ventaja

Esto soluciona el típico problema de que en distintas empresas se llama a un mismo concepto con distintos nombres, por ejemplo al artículo se le puede decir: Artículo, Producto, Mercancía, etc. El propio usuario puede personalizarse la aplicación a su medida.

VN:F [1.4.6_730]
Rating: 0.0/5 (0 votes cast)
Posted in Microsoft Access 2000
Tags: ,