2009-07-09 9 views
5

Soy un desarrollador de ruby ​​on Rails al 80%, pero aún necesito hacer algo de trabajo de Access VBA.¿Cómo ser productivo en el desarrollo de Access VBA + SQL?

Algunos de ellos son sistemas muy cagados, construidos hace mucho tiempo, utilizados por la gran empresa a nivel mundial, por lo que la mayoría de las obras solo mejoran el sistema anterior.

Las técnicas son básicamente MS Access como front-end, linked-table que enlazan al servidor SQL a través de ODBC como back-end.

Ahora, realmente creo que necesito ayuda, solo quiero saber si alguien puede construir la elegante aplicación VBA siguiendo el patrón orientado a objetos.

Mejor aún si me puede mostrar un fragmento de código para demostrar lo bueno que puede ser, gracias.

+0

Soy un usuario de Access que intentó entrometerse en el diseño orientado a objetos. Es posible que se entretenga con mi consulta en http://www.tek-tips.com/viewthread.cfm?qid=1552745&page=1 Creo que puedo ayudar a responder, pero necesito saber en qué está trabajando: un usuario interfaz, mantenimiento de datos, datos jerárquicos o qué? Como dice Rik Garner, OO no es natural para Access y VBA. Las técnicas OO todavía son valiosas, pero ese es un gran alcance para un fragmento. – Smandoli

+0

Utilizo técnicas relacionadas con OO para administrar formularios múltiples, mantener el código reutilizable y lo más importante para manejar datos recursivos. La respuesta de David Fenton es relevante para mi comentario anterior. Los aspectos de OO son aplicables, y puede utilizar su experiencia para lograr algo así como la elegancia.Pero ayuda saber dónde OO no se aplicará, según lo descrito por David. – Smandoli

+0

Todavía es una pregunta interesante, seis años después: ¿cómo llegaste a estas respuestas? –

Respuesta

8

Bueno, el primer problema a tener en cuenta es que no hay un atajo mágico para aprender a acceder a la EM. A lo largo de los años he aprendido muchas plataformas de desarrollo que van desde sistemas de mainframe, sistemas de databae hasta ensambladores codificados a mano en una PC. Escribí dos sistemas de nómina desde cero (con las fórmulas de ingresos de Canadá para impuestos incluidos en esos sistemas). Un sistema fue escrito desde cero Pascal donde incluso escribí mi propio motor de datos.

No se equivoque, ms-access es un complejo sistema de desarrollo.

Puede crear hermosas aplicaciones de caída de muertos en el acceso. echar un vistazo a estas capturas de pantalla:

http://www.fairsoftware.com/screenshots.aspx

Nota las cintas frías en las capturas de pantalla anteriores.

El problema es que no puede aprender Unix en un día, y no puede aprender Oracle en un día. Tampoco puedes aprender el acceso a MS en un día. Si las aplicaciones que se le han otorgado para mantener son complejas, entonces lo que necesita aquí es contratar a un desarrollador con 4-5 años de experiencia. La idea de que de alguna manera vas a ponerte al día en ms-access más rápido que vb.net, o C# es realmente un concepto falso aquí.

De hecho, iría tan lejos como para decir que puede aprender Oracle más rápido de lo que puede obtener el acceso a la MS. Si bien la curva de aprendizaje en el acceso a MS no es tan pronunciada, es muy larga.

VB6 es una caminata en el parque en comparación con el acceso. Los formularios VB6 son completamente simples, pero los formularios de acceso son muy complejos (tenemos aproximadamente 3 veces el número de eventos y propiedades para la forma dada). Por ejemplo, en el acceso tenemos dos eventos que se activan cuando un formulario se carga (abierto y en carga). Los formularios VB6 (e incluso los formularios .net) solo tienen un evento. El evento abierto tiene una opción cancelar. Si establece cancelar = verdadero, el formulario no se cargará y no se mostrará.

Lógicamente, esto significa que el formulario tiene dos eventos distintos para dos propósitos distintos cuando llama al formulario. Por lo tanto, el evento abierto tendrá un código utilizado para la verificación y prueba de ciertas condiciones de datos (y le permitirá cancelar). Si el evento abierto no se cancela, el evento en carga se dispara y se carga el formulario.

Lógicamente, en este punto esto significa que el código que configura las variables o los valores iniciales de los controles en el formulario debe colocarse en el evento con carga (de hecho, los controles no se pueden modificar, solo se examinan en el evento abierto) De modo que hay una granularidad y distinción muy buenas entre los dos procesos que ocurren en una carga de formulario típica. También es interesante observar que la mayoría de los productos en el mercado no tienen estos dos eventos por separado.

Como desarrollador, coloque el código apropiado y utilice el evento correcto para un fin determinado. Se necesitará experiencia en el uso de acceso para averiguar qué evento usar para estas cosas. Podrías preguntar si hay un libro que explique este problema, pero es como preguntar si hay un libro que te diga cuándo usar un cuadro combinado sobre el de un cuadro de lista. No creo que haya tal libro.

La documentación de un cuadro combinado explicará qué es un cuadro combinado y cómo usarlo. Lo mismo ocurre con el acceso a la documentación para el evento abierto. Puedes leer lo que ocurre al abrir, pero luego, como desarrollador, tendrás que descubrir cuándo es apropiado usar ese evento. Lo mismo ocurre cuando es apropiado utilizar un cuadro combinado o un cuadro de lista. Al final del día, la única solución y la forma de conocer estos problemas será su experiencia como desarrollador con el producto.

tengo un artículo que habla sobre el uso de objetos de clase en el acceso de MS, y cuándo usarlos aquí:

http://www.members.shaw.ca/AlbertKallal/Articles/WhyClass.html

Si usted está buscando ejemplos de código de todo a las formas de informes para el uso API de windows, es una gran referencia aquí:

http://www.mvps.org/access/

1

Tiene mi simpatía - Access VBA no está orientado a objetos en ningún sentido, como Ruby. Tendrá que cambiar su forma de pensar al abordar el desarrollo en Access; tales aplicaciones casi siempre se centran en el concepto de filas de datos y conjuntos en lugar de objetos. La interfaz de usuario a menudo está ligada a filas de datos y conjuntos de una manera que oculta una gran cantidad de plomería.

Habiendo dicho que es posible construir aplicaciones mantenibles perfectamente decentes en Access con cuidado y atención. Buena suerte.

+0

Gracias por su respuesta, genial !! Me duele hacer Access VBa, ¿tiene alguna idea sobre cómo aprender algunos consejos? como un sitio web de screencasts? –

0

Eche un vistazo a la declaración Implements es decir, polimorfismo a través de interfaces. Eso es como OO como VBA.

+0

Gracias, echaremos un vistazo ahora. –

1

una cosa que acaba de pelearse alrededor de Acceso no le enseñará es cómo crear y utilizar módulos de clase independiente. Estos tienen algunos aspectos de orientación a objetos, pero no mucho, pero pueden ser extremadamente útiles para hacer que su código sea más manejable, ya que puede ajustar muchas operaciones en un módulo de clase independiente y luego tratarlo como un objeto que puede tener Múltiples instancias. No obtienes herencia y polimorfismo y muchas de las otras palabras de moda que acompañan al evangelio de OO, pero vale la pena echar un vistazo a lo que pueden hacer si nunca las has usado extensamente.

+1

"No obtiene ... polimorfismo": seguro que sí: ¿alguna vez utilizó la palabra clave Implements? – onedaywhen

+0

"Implements" se agregó mucho después de que aprendí a usar módulos de clase en Access, por lo que no estoy al tanto de lo que hace. Este es uno de los problemas de tener una experiencia a largo plazo con Access: a menudo uno no puede apreciar las nuevas funciones. –

+1

Aún así, vale la pena echar un vistazo a lo que Implements puede hacer, nunca es tarde para aprender algo nuevo :) – onedaywhen

Cuestiones relacionadas