2012-07-19 8 views
9

Chiedo se è possibile ospitare un modulo di Microsoft Access all'interno di un modulo .Net.È possibile ospitare un modulo di Microsoft Access all'interno di un modulo Windows .Net?

No Non sono impazzito, stiamo mantenendo un sistema enorme scritto interamente in VBA da qualcuno che non conosceva un sacco di VBA che tentava di utilizzare Microsoft Access come IDE. Sono fondamentalmente migliaia di righe di codice spaghetti e mentre ci piacerebbe recuperarle e ricominciare da zero, questa non è un'opzione.

Stiamo quindi provando a migliorare ciò che è presente, e in questo particolare scenario sarebbe davvero utile se potessimo in qualche modo ospitare i moduli di Microsoft Access all'interno di un .Net Windows Form poiché possiamo interagire con l'hardware proprietario da .Net molto più efficacemente che possiamo da VB6.

Attualmente disponiamo di un'applicazione .Net che viene eseguita sul computer insieme ai numerosi database MS-Access che gli utenti hanno aperto in qualsiasi momento e l'applicazione .Net interagisce con questi utilizzando l'interoperabilità di MS Access con vari gradi di successo . Questo perché utilizza i titoli dei moduli e i nomi dei file/posizioni per ottenere un handle sul database per fare ciò che deve fare, e fa anche affidamento sull'utente che non interferisce/spegne l'applicazione/sposta i database sui loro desktop ecc. È un un po 'di confusione.

Pertanto, sto chiedendo se è possibile in qualche modo ospitare un modulo di Microsoft Access all'interno di un modulo di Windows .Net, magari aggiungendo il modulo stesso come un controllo o una sottomaschera, in un modo che mi dia accesso diretto a tutti i controlli sul modulo da .Net?

+0

Ci va il tumbleweed! –

+3

È un po 'come legare i motori a razzo all'Hindenburg. – BIBD

+0

Sei persino in grado di aggiungere un riferimento ad Access in .NET? Se è così, guarda il browser degli oggetti e controlla se ci sono dei controlli. Sono stato in grado di aggiungere un riferimento denominato Access ma nessun controllo dell'interfaccia utente è stato incluso. – Paparazzi

risposta

3

Come poco a parte, prima di cominciare, se ...

  • si sta chiedendo come ospitare solo un singolo accesso forma senza l'applicazione chrome; e
  • si sta utilizzando la versione runtime di Access

... si sta eseguendo violano l'Access Runtime EULA:

2. REQUISITI AGGIUNTIVI PER LE LICENZE E/O DIRITTI DI UTILIZZO .

...

II. Requisiti di distribuzione. Per qualsiasi codice distribuibile che distribuisci, devi ...

  • mantenere la barra di stato contenente l'istruzione "Powered by Microsoft Office Access" visualizzata nell'interfaccia utente per essere visualizzata dagli utenti in qualsiasi momento;

Potrebbe pagare per leggere l'EULA (non è così a lungo) solo per vedere cosa si può e non si può utilizzare il Runtime Accesso.

Pertanto, chiedo se è possibile ospitare in qualche modo una maschera di Microsoft Access all'interno di un modulo di Net Windows, forse aggiungendo la forma stessa come un controllo o una sottomaschera, in modo che possa dare a me diretta accesso a tutti i controlli sul modulo da .Net?

È possibile invertire lo scenario: run your .NET code inside Access.

Questo in sostanza comporta la creazione di un componente aggiuntivo condiviso in Visual Studio che Access può caricare e manipolare. Da lì puoi collegare controlli ed eventi.

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; 
} 

richiede una certa cooperazione dalla vostra applicazione di accesso:

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 

Disclaimer: io volevo provare questo, ma in Visual Studio 2012 sembra la possibilità di creare uno Shared aggiuntivo che manca . YMMV. C'è references to Shared Add-ins in the documentation, tuttavia, quindi forse mi manca qualcosa o la funzionalità non è in VS 2012 RC.

+0

Sorprendente risposta, grazie! –

3

La risposta breve è "sì", la risposta lunga è "... ma potrebbe non valerne la pena."

È possibile pubblicare un database di Access, inclusi moduli e report tramite SharePoint. Non l'ho ancora fatto, ma ho ricercato l'opzione per un progetto e siamo andati in un'altra direzione.

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

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

+2

Abbiamo avuto la stessa idea per un database Access legacy, ma le limitazioni su VBA e simili erano troppo per noi. Non che la nuova funzionalità che hanno aggiunto per aiutare a mitigare la perdita di funzionalità VBA non era appropriata. Piuttosto, c'era troppa VBA. –

Problemi correlati