2012-07-19 26 views
9

Me pregunto si es posible alojar un formulario de Microsoft Access dentro de un formulario .Net.¿Es posible alojar un formulario de Microsoft Access dentro de un formulario de .Net Windows?

No, no me he vuelto loco, estamos manteniendo un sistema masivo escrito completamente en VBA por alguien que no sabe mucho de VBA que intenta usar Microsoft Access como un IDE. Básicamente se trata de miles de líneas de código de espagueti y, si bien nos encantaría eliminarlo y comenzar de cero, esta no es una opción.

Por lo tanto, estamos tratando de mejorar lo que hay, y en este caso particular sería realmente útil si pudiéramos alojar los formularios de Microsoft Access dentro de .Net Windows Form ya que podemos interactuar con el hardware propietario de .Net mucho más efectivamente que lo que podemos de VB6.

Actualmente tenemos una aplicación .Net que se ejecuta en la computadora junto con las muchas bases de datos de MS-Access que los usuarios han abierto en un momento dado, y la aplicación .Net interactúa con MS Access Interop con diversos grados de éxito . Esto se debe a que usa títulos de formularios y nombres de archivos/ubicaciones para manejar la base de datos y hacer lo que debe hacer, y también depende de que el usuario no interfiera/apague la aplicación/mueva las bases de datos a sus escritorios, etc. un poco de un desastre.

Por lo tanto, estoy preguntando si es posible de alguna manera alojar un formulario de Microsoft Access dentro de un formulario .Net Windows, quizás agregando el formulario como control o subformulario, de una manera que me daría acceso directo a todos los controles en el formulario de .Net?

+0

¡Ahí va la planta rodadora! –

+3

Se parece un poco a los motores de cohete del Hindenburg. – BIBD

+0

¿Incluso puede agregar una referencia a Access en .NET? Si es así, mira el navegador de objetos y mira si hay algún control. Pude agregar una referencia llamada Access pero no se incluyeron controles de UI. – Paparazzi

Respuesta

3

Como un breve aparte, antes de empezar, si ...

  • que estás preguntando cómo alojar sólo un único acceso formulario sin la aplicación chrome; y
  • que está utilizando la versión de tiempo de ejecución de Acceso

... que se está ejecutando en conflicto con la EULA Access Runtime:

2. Requisitos de licencia y/o derechos de uso .

...

ii. Requisitos de distribución. Para cualquier código distribuible que distribuya, debe ...

  • mantenga la barra de estado que contiene la instrucción "Desarrollado por Microsoft Office Access" que se muestra en su interfaz de usuario para ser vista por los usuarios en todo momento;

Podría pagar para leer el EULA (que no es tan largo) sólo para ver lo que puede y no puede utilizar el tiempo de ejecución de Acceso.

Por lo tanto, estoy preguntando si es posible de alguna manera alojar un formulario de Microsoft Access dentro de un formulario .Net Windows, quizás añadiendo el formulario como control o subformulario, de una manera que me daría directa acceso a todos los controles en el formulario de .Net?

Es posible que desee invertir el escenario: run your .NET code inside Access.

Esto básicamente implica la creación de un complemento compartido en Visual Studio que Access puede cargar y manipular. Desde allí puedes conectar controles y eventos.

public void HookupControls(
    Access.CommandButtonClass button, 
    Access.ListBoxClass listBox, 
    Access.TextBoxClass textBox1, 
    Access.TextBoxClass textBox2) 
{ 
    fillProductsButton = button; 
    fillProductsButton.Click += 
     new Access.DispCommandButtonEvents_ClickEventHandler(
     fillProductsButton_Click); 
    fillProductsButton.OnClick = "[Event Procedure]"; 

    unitPriceTextBox = textBox1; 
    quantityTextBox = textBox2; 
} 

requiere un poco de cooperación por parte de la aplicación Acceso:

With COMAddIns("SharedAddIn.Connect") 
    ''// Make sure the COM add-in is loaded. 
    .Connect = True 

    ''// Hook up the desired objects. 
    .Object.HookupControls Me.fillProductsButton, Me.productsListBox, _ 
     Me.unitPriceTextBox, Me.quantityTextBox 
End With 

responsabilidad: quería probar esto, pero en Visual Studio 2012 parece que la capacidad de crear un compartido Add-in no se encuentra . YMMV. No es references to Shared Add-ins in the documentation, sin embargo, así que tal vez me falta algo o la funcionalidad no está en VS 2012 RC.

+0

¡Respuesta increíble, gracias! –

3

La respuesta corta es "sí", la respuesta larga es "... pero podría no valer la pena".

Puede publicar una base de datos de Access, incluidos Formularios e Informes a través de SharePoint. No lo hice, pero investigué la opción para un proyecto y tomamos otra dirección.

Detalles aquí: http://office.microsoft.com/en-us/sharepoint-online-enterprise-help/build-and-publish-an-access-database-to-sharepoint-HA102435342.aspx

y http://office.microsoft.com/en-us/access-help/introduction-to-integrating-data-between-access-and-a-sharepoint-site-HA010131463.aspx

+2

Teníamos la misma idea para una base de datos de Access heredada, pero las limitaciones en VBA y similares eran demasiado para nosotros. No es que la nueva funcionalidad que agregaron para ayudar a mitigar la pérdida de la funcionalidad de VBA no fuera apropiada. Por el contrario, había demasiado VBA. –

Cuestiones relacionadas