Mensajes recientes

Páginas: 1 ... 7 8 [9] 10
81
Aplicaciones / Gestión de contactos
« Último mensaje por xavi en Julio 15, 2013, 09:31:54 am »
Nombre:Gestión de contactos
Access:2010/2013 (x86/x64)
Versión:1.01.001
Fecha primera versión:19/06/2012
Fecha última versión:20/01/2010
Estado:En uso

Haz clic aqui para solicitar más información

Descripción

En el año 2009 se desarrolló una aplicación destinada a gestionar los contactos de una entidad. La gestión de dichos contactos incluye la persona principal de la empresa, su secretaria así como la colección de contactos "satélite" que pudiera tener.

La aplicación debia mostrar las fichas de empresas y personas y permitir la generación de mailings. En este caso concreto bastaba con generar la lista de direcciones de correo que se utilizarian en el mailing puesto que el envio se realizaba mediante otra aplicación.


Menú de la aplicación STAFF



Ficha de entidad



Ubicación de entidad



Detalle de contacto



Generación de mailings



Listados de la aplicación


82
General / Re:Reiniciando...
« Último mensaje por xavi en Julio 09, 2013, 02:49:57 pm »
A petición popular he reabierto la web. De momento está muy vacia pero espero ir llenando con, más o menos, lo que habia antes.

De hecho, si no te registras no notarás la diferencia ya que no podrás acceder a (casi) nada.



Un saludo
83
Aplicaciones / Gestión de torneos
« Último mensaje por xavi en Julio 09, 2013, 01:46:30 pm »
Nombre:Gestión de torneos
Access:2007/2010/2013
Versión:1.01.001
Fecha:07/07/2013
Estado:En uso

Haz clic aqui para solicitar más información

Descripción

El pasado fin de semana (5-7 de julio de 2013) se desarrolló en las instalaciones del Club Deportiu Terrassa Hockey la 14 edición del TEEH (Torneig Europeu d'Escoles de Hockey). Es un torneo que reúne niños y niñas de 3 a 16 años durante 3 días. En ese tiempo disfrutan de las instalaciones del club y juegan a hockey hierba.

Algunos números de la edición de este año:
- 5 campos de hockey hierba
- 6 categorías (con distintos grupos)
- 16 clubs
- 82 equipos
- 234 partidos
- más de 800 participantes

Para la gestión de partidos, resultados y clasificaciones se ha realizado una aplicación que permite el control del torneo, tanto en la vertiente usuario/visitante como la de administrador/organizador.

El sistema se basa en 3 archivos:
- BackEnd con todos los datos
- FrontEnd para Staff dónde se gestiona la introducción de toda la información del torneo.
- FrontEnd para usuario dónde únicamente se puede consultar la información. Esta FrontEnd trabaja con ratón (se bloquea el uso del 99.9% del teclado) o como aplicación táctil (no para dispositivo móvil)


Menú de la aplicación STAFF



Gestión de partidos y resultados



Pantalla del usuario




84
Aplicaciones / Presentación Æ Soft Data Bases
« Último mensaje por xavi en Julio 09, 2013, 01:27:49 pm »
Æ Soft Data Bases es la empresa de Xavi Lloberas. Si bien la empresa se creó en 2011, la actividad freelance se remonta a 2006, la experiencia con bases de datos Access a 1995 y la programación a 1983 (si, con un Commodore VIC-20).

Después de mis inicios en el foro (mayo de 2005) y poder evaluar el nivel personal como programador fué cuando me decidí a dedicarme, de forma complementaria a mi trabajo, a la programación para terceros.

Empecé con la estabilización de una base para una amigo, segui con una aplicación de gestión para una empresa de Zaragoza, comencé a trabajar para una empresa de servicios sociales, me llamaron de un banco para desarrollar aplicaciones de escritorio y la cosa fué tomando forma. En 2011 me desvinculé de la empresa en que trabajaba y me establecí por mi cuenta.

En este subforo se pretende mostrar las aplicaciones que se han desarollado. Si alguna de ellas la ves interesante o adaptable a tus necesidades solo es cuestión de comentarlo.

De momento no he creado versiones demo, pero no lo descarto.

Un saludo

Enviar correo solicitando información

85
Varias / Recordset contra texto plano
« Último mensaje por xavi en Noviembre 20, 2012, 01:57:10 pm »
Palabras clave: recordset, fichero, archivo, texto, plano
Autor: Búho (sacado de Microsoft) / Agosto 2002
Extraído de: La web del Búho

Objetivo:
Abrir un recordset de un fichero de texto plano, donde se tienen registros en forma secuencial.

Cita de: Búho
Primer ejemplo:Abro simplemente el Recordset del fichero de texto.   

Código: [Seleccionar]
Option Explicit
Function TestSchema()
   Dim db As DATABASE, rs As Recordset
   Set db = OpenDatabase("c:\my documents", False, _
   False,"TEXT;Database=c:\my documents;table=contacts.txt")
   Set rs = db.OpenRecordset("contacts.txt")

   rs.MoveLast
   Debug.Print "Record count= " & rs.RecordCount
   rs.Close

End Function

'========================================

Ejemplo 2
Se crea una tabla linkada al fichero de texto:

Código: [Seleccionar]
Option Explicit
Function LinkSchema()
   Dim db As DATABASE, tbl As TableDef
   Set db = CurrentDb()
   Set tbl = db.CreateTableDef("Linked Text")

   tbl.Connect = "Text;DATABASE=c:\Mis Documentos;TABLE=contacts.txt"
   tbl.SourceTableName = "contacts.txt"
   db.TableDefs.Append tbl
   db.TableDefs.Refresh
End Function
86
Base de datos / Control de referencias
« Último mensaje por xavi en Noviembre 20, 2012, 01:52:46 pm »
Palabras clave: referencias
Autor: Búho / Agosto 2002
Extraído de: La web del Búho

Objetivo:
Objetivo

Cita de: quien
Cuando ejecuto mi MDB en mi ordenador, todo funciona bien. Sin embargo si la traslado a otro PC, el usuario me indica que se producen errores, pues faltan Referencias a DLL u OCX dentro del  proyecto. ¿Como puedo controlar este tema desde código?

Código: [Seleccionar]
'Francisco J. García Aguado (Bhuo)
'Agosto de 2002



Function MiraReferenciasVBA()
    Dim Ref As Reference


   'Sacado de la ayuda de Access para ver si se ha
   'roto alguna referencia del proyecto de VBA.
   'Bhúo, Agosto de 2002

   'Puede servir para cuando distribuyamos una aplicación
   'con referencias externas a funciones inmersas en: OCX,DLL, MDE, MDB...)
   'que nosotros en el proyecto hemos referenciado desde una determinada ubicación
   'local de nuestro PC y a la hora de ejecutar el programa el usuario, pueda dar errores
   'por no tener dichas referencias o tenerlas en otra ubicación distinta
   'y de esta forma el usuario nos pueda avisar de esta contingencia.
   'Esta función se puede poner en el formulario de inicio de la aplicación
   'para avisar al usuario de este tema.

    For Each Ref In References
       
        If Ref.IsBroken = False Then
         ' este msgbox es puramente informativo de las referencias que están OK
         ' y es para probar este código.
         MsgBox "Nombre de la Referencia: " & Ref.Name & vbCrLf _
          & "En la ruta: " & Ref.FullPath & vbCrLf _
          & "Versión de la Referencia: " & Ref.Major & "." & Ref.Minor, vbInformation + vbOKOnly, "Referencias en VBA"
        Else
         ' referencia rota
          MsgBox "Nombre de la Referencia rota:" & Ref.Name & vbCrLf _
           & "Ruta Origina: " & Ref.FullPath & vbCrLf _
           & "GUID completo de la Referencia: " & Ref.Guid, vbCritical + vbOKOnly, "AVISO: Servicio de mantenimiento del programa 95-22222222."
         'aquí la acción a seguir...
         
         'Sacado también de la ayuda de Access.
         'En este ejemplo, se podría poner ruta completa, mediante
         'un dialogo de Windows e intentar referenciar de nuevo
         'la referencia rota o bien abandonar la aplicación.
         'En este caso ponemos una ruta fija que sirva de ejemplo:
         'C:\Windows\System\Mscal.ocx
         'Recordar que el nombre y Path original de la referencia
         'sería ref.FullPath
         If CrearNuevaReferencia("C:\Windows\System\Mscal.ocx") = False Then
          MsgBox "No se ha podido regenerar la referencia.", vbCritical + vbOKOnly, "Aviso"
         Else
          MsgBox "La Referencia, " & Ref.FullPath & " se ha establecido correctamente.", vbExclamation + vbOKOnly, "Correcto"
         End If
        End If
    Next Ref
End Function

'***************************************
Function CrearNuevaReferencia(PathCompletoFichero As String) As Boolean
    Dim Ref As Reference

    On Error GoTo Error_CrearNuevaReferencia
    Set Ref = References.AddFromFile(PathCompletoFichero)
    CrearNuevaReferencia = True

Exit_CrearNuevaReferencia:
    Exit Function

Error_CrearNuevaReferencia:
    MsgBox "Aviso Nº: " & Err & "..." & Err.Description & " [" & PathCompletoFichero & "]", vbCritical + vbOKOnly, "Aviso de Error"
    CrearNuevaReferencia = False
    Resume Exit_CrearNuevaReferencia
End Function


87
Informes / Abrir reporte en primer plano
« Último mensaje por xavi en Noviembre 20, 2012, 01:50:31 pm »
Palabras clave: abrir, informe, reporte, primer, plano, modar, emergente
Autor: Búho / Agosto 2002
Extraído de: La web del Búho

Cita de: quien
Cuando abro un reporte en vista previa desde un formulario Modal o Emergente, éste se sitúa detrás del formulario y no puedo verle. ¿Como presento el reporte en pantalla, por delante del formulario?

Cita de: Búho
Esto sirve para meter un report en vista previa, llamado desde un formulario MODAL. Si se hace sin mas, el Report se queda en segundo plano y no se ve.
Búho Agosto 2002
Uso:
En vez de llamar al reporte de forma habitual, lo hacemos desde esta función. Es decir, desde cualquier formulario, que deseemos lanzar un 'reporte en vista previa, con formularios modales y para evitar que dicho 'reporte se quede 'detrás' y no se vea, deberemos llamar así: OpenReport("Mireporte", etc)

Y la funcion OpenReport que hace todo esto es:

Código: [Seleccionar]
Sub OpenReport(ReportName As String, Optional View As Integer, Optional _
    FilterName As String, Optional WhereCondition As String)
Dim loFormArray() As String
Dim loform As Form
Dim intCount As Integer
Dim intX As Integer
    For Each loform In Forms
        If loform.Visible Then
            ReDim Preserve loFormArray(intCount)
            loFormArray(intCount) = loform.Name
            loform.Visible = False
            intCount = intCount + 1
        End If
    Next
    DoCmd.OpenReport ReportName, View, FilterName, WhereCondition
    Do While IsVisible(acReport, ReportName): DoEvents: Loop
    For intX = intCount - 1 To 0 Step -1
        Forms(loFormArray(intX)).Visible = True
    Next
End Sub

Function IsVisible(intObjType As Integer, strObjName As String) As Boolean
Dim intObjState As Integer
    intObjState = SysCmd(acSysCmdGetObjectState, intObjType, strObjName)
    IsVisible = intObjState And acObjStateOpen
End Function
88
Formularios / Controlar cuando un valor no está en lista
« Último mensaje por xavi en Noviembre 20, 2012, 01:42:39 pm »
Palabras clave: al no estar en lista, NotInList, cuadro combinado, combo, combobox
Autor: Autores
Extraído de: La web del Búho

Objetivo:
Controlar un valor inexistente en un cuadro combinado para que se almacene en la tabla.

Descarga el ejemplo de la web del Búho

Mejora de Happy para controlar cuando debe insertarse más de un campo.

Cita de: Happy
Tengo un formulario Cuentas, en el cual tengo un comboCliente (basado en la tabla Clientes, con dos columnas IdCliente, NombreCompañia, solo la segunda columna es visible). Cuando creo una nueva cuenta debo asignársela a algún cliente mediante ese combo, pero cuando el cliente todavía no lo he creado se activa el evento NotInList (el cliente inexistente no está en la lista del combo).

Entonces tengo éste código:

Código: [Seleccionar]
Private Sub Cliente_NotInList(NewData As String, Response As Integer)
Dim Nuevocli As Integer, entTruncarNombre As Integer, txtTítulo As String,entMsjDiálogo As Integer
Dim nuevo As String
Nuevocli = msgbox("¿Desea agregar un nuevo cliente?", vbOKCancel)
If Nuevocli = vbOK Then
 nuevo = "nuevo" 
 DoCmd.DoMenuItem acFormBar, acEditMenu, acUndo, , acMenuVer70
 DoCmd.OpenForm "clientes", acNormal, , , acAdd, , [nuevo]
 Forms!clientes!NombreCompañia = NewData   
 Response = acDataErrContinue 
End If
End Sub

Así abro el formulario Clientes, en el cual ingreso todos los datos del cliente nuevo, al abrirse el campo NombreCompañia ya estará lleno con el dato que ingresé en el combo,  al terminar de escribir los datos cierro el formulario y en evento Unload tengo éste código:
Código: [Seleccionar]
Private Sub Form_Unload(Cancel As Integer)
 Dim ctl As Control   
 If  Me.OpenArgs = "nuevo" Then 
  Set ctl = Forms!cuentas!Cliente 
  DoCmd.SelectObject acForm, "cuentas"
  ctl = Me!IdCliente 
  ctl.Requery
  ctl.SetFocus
 End If
End Sub
89
Ejemplos / Exportar a fichero de texto plano
« Último mensaje por xavi en Noviembre 20, 2012, 01:36:43 pm »
Palabras clave: exportar, tabla. fichero, archivo, texto, plano
Autor: Búho
Extraído de: La web del Búho

Objetivo:
Exportar a un fichero de texto plano el resultado de una tabla con el objeto de poderlo utilizar en otras aplicaciones.


Descarga el ejemplo de la web del Búho
90
Base de datos / Recorrer objetos de base externa
« Último mensaje por xavi en Noviembre 20, 2012, 01:32:24 pm »
Palabras clave: recorrer, colección, objetos, base, externa, remota
Autor: Búho y Happy
Extraído de: La web del Búho


Cita de: Búho
Juan:
Me estoy haciendo un poco de lío. Se nota que estoy oxidado con Access despues de varios meses de haber dejado de forma efectiva la programación. Se notó antes de ayer con la función que me comentaste tú y Marjan.

Me planteo el siguiente caso:
Desde MDB1 deseo comprobar que en MDB2 existe un Reporte XXX
¿Como recorro los nombres de los objeto Reports de dicha MDB2?
Desde la actual, lo tengo claro con:

dbs As Object
   
Set dbs = Application.CurrentProject
'Aplicacion de esta, por ejemplo:

' Busca objetos AccessObject abiertos en la colección AllReports..
  For Each obj In dbs.AllReports
   msgbox obj.Name
  Next obj


Al hilo de todo esto, tengo en mi cabeza las siguientes referencias sobre apertura y referencias a una MDB

Dim wrk As Workspace
Dim dbs1 As Database
Set wrk = DBEngine.CreateWorkspace("", "Admin", "")
Set dbs1 = wrk.OpenDatabase("RutaDestinoBase)

Esta es la primera forma. Bien...¿Cuando se emplea? ¿Cuando es conveniente abrirla así?

   
OTRA
Dim BaseDestino As New Access.Application
Set BaseDestino = New Access.Application
BaseDestino.OpenCurrentDatabase "Destino"
BaseDestino.CloseCurrentDatabase
Set BaseDestino = Nothing

¿Esta forma anterior cuando y por qué? ¿Diferencias y analogías con la anterior?
   
OTRA
Dim obj As AccessObject, dbs As Object
   
Set dbs = Application.CurrentProject
'Aplicacion de esta, por ejemplo:

' Busca objetos AccessObject abiertos en la colección AllReports..
  For Each obj In dbs.AllReports
   msgbox obj.Name
  Next obj
 

Tengo un poco de lío al respecto. ¿Me puedes aclarar un poco el tema?

Cita de: la respuesta de Juan
Hola Francisco,

Tú dices:

"Me planteo el siguiente caso: Desde MDB1 deseo comprobar que en MDB2 existe un Reporte XXX ¿Como recorro los nombres de los objeto Reports de dicha MDB2?..."

respuesta:

Function VerReportes(BDatos As String)
Dim objAcc As New Access.Application
Dim rpt As AccessObject

  objAcc.OpenCurrentDatabase BDatos

  With objAcc
  For Each rpt In .CurrentProject.AllReports
    Debug.Print rpt.Name
  Next
  End With

  objAcc.CloseCurrentDatabase

  Set objAcc = Nothing

End Function

Tú preguntas:

"Dim wrk As Workspace
Dim dbs1 As Database
Set wrk = DBEngine.CreateWorkspace("", "Admin", "")
Set dbs1 = wrk.OpenDatabase("RutaDestinoBase)

Esta es la primera forma. Bien...¿Cuando se emplea? ¿Cuando es conveniente abrirla así?... "

Respuesta:

De esta manera estás abriendo la base de datos a través de la librería DAO y accederás a toda la jerarquía DAO (empezando con DBEngine, Workspace, Database, etc.) y todas sus propiedades, métodos y colecciones).

Tú preguntas:

"Dim BaseDestino As New Access.Application
Set BaseDestino = New Access.Application
BaseDestino.OpenCurrentDatabase "Destino"
BaseDestino.CloseCurrentDatabase
Set BaseDestino = Nothing

¿Esta forma anterior cuando y por qué? ¿Diferencias y analogías con la anterior?..."

Respuesta:

De esta otra forma abres una base de datos desde el objeto application, es decir, desde el mismo programa de Access, es como si tuvieras una ventana con la base de datos abierta (puedes tenerla o no, según quieras). De esta manera accederás a todos las colecciones, métodos, propiedades y objetos que posee el objeto application (que no son los mismos que con DAO). Tú decides en cada momento, cuál de las dos formas de abrir la base de datos te proporcionará la funcionalidad que necesitas. En el caso concreto que preguntabas es méjor acceder a la colección AllForms de CurrentProject del objeto Application, ya que contiene TODOS los informes (estén abiertos o no).

Tú preguntas:

"OTRA
Dim obj As AccessObject, dbs As Object

Set dbs = Application.CurrentProject
'Aplicacion de esta, por ejemplo:

' Busca objetos AccessObject abiertos en la colección AllReports..
  For Each obj In dbs.AllReports
   msgbox obj.Name
  Next obj..."

Respuesta:

Aquí lo único que se diferencia de la primera es que no declaras dbs como AccessObject (que sería lo correcto), y lo declaras como Object (es decir, cualquier tipo de Objeto).

Aprovechando que tiene que ver con esto último, te comento algo que ya le comenté a McPegasus el otro día. Es un detalle tonto, pero creo que muy útil.

Imagínate que quieres hacer una rutina para rellenar un documento de Word o de Excel, desde Access. Lo normal es que empezaras declarando una variable tipo Word.Application o Excel.Application. Bien. De esta manera, podrás usar a través de esta variable la librería de objetos de Word o Excel (previa señalización en el cuadro referencias, claro). La cosa vendría a ser algo
así:

Dim appWord as New Word.Application

    appWord.open Documents = "C:\doc1.doc" (o algo así, que no me acuerdo)
... ...

Pequeño truco:

Para escribir el código, hazlo como indico arriba. Será fácil y documentado por el examinador de objetos con el operador "." (punto). Una vez probado que todo funcione correctamente, rehaz la declaración de variables y añade una nueva línea al código:

Dim appWord as Object

    Set appWord = CreateObject("Word.Application")

haciendo esto, puedes quitar la referencia a la librería de objetos de Word, ahorrando una referencia al programa (se abrirá una referencia implícita sólo cuando uses esa rutina), y sin embargo todo funcionará correctamente.

Creo que esta es una de las utilidades de usar variables Object (génericas). En el resto de los casos, lo mejor es declarar las variables con su tipo correcto. Puede que hayan casos en que de lo mismo, pero es más que nada como buena costumbre de programación



Saludos desde BCN
happy
Páginas: 1 ... 7 8 [9] 10