2009-07-09 17 views
5

Sono uno sviluppatore di ruby ​​80% su rails, ma devo ancora eseguire alcuni lavori di Access VBA.Come essere produttivi nello sviluppo di Access VBA + SQL?

Alcuni di questi sono sistemi molto merda, sono stati costruiti anni fa, utilizzati dalla grande azienda a livello globale, così che la maggior parte dei lavori non fa altro che migliorare il vecchio sistema.

Le tecniche sono fondamentalmente MS Access come front-end, tabella collegata che collega al server SQL tramite ODBC come back-end.

Ora, penso davvero che ho bisogno di aiuto, voglio solo sapere c'è qualcuno in grado di costruire l'elegante applicazione VBA seguire il patten orientato agli oggetti?

Ancora meglio se puoi mostrarmi un frammento di codice per dimostrare quanto può essere buono, grazie.

+0

Sono un utente di Access che ha cercato di intromettersi nella progettazione OO. Potresti essere intrattenuto dalla mia richiesta su http://www.tek-tips.com/viewthread.cfm?qid=1552745&page=1 Penso di poterti aiutare a rispondere, ma ho bisogno di sapere su cosa stai lavorando: un utente interfaccia, manutenzione dei dati, dati gerarchici o cosa? Come dice Rik Garner, OO non è naturale per Access e VBA. Le tecniche OO sono ancora valide, ma questo è un grande margine per un frammento. – Smandoli

+0

Uso tecniche OO per gestire più moduli, mantenere il codice riutilizzabile e, soprattutto, per gestire i dati ricorsivi. La risposta di David Fenton è pertinente al mio commento sopra. Gli aspetti di OO sono applicabili e puoi usare la tua esperienza per raggiungere prontamente qualcosa di simile all'eleganza.Ma aiuta a sapere dove OO non si applica, come descritto da David. – Smandoli

+0

È ancora una domanda interessante, sei anni dopo: come sei andato avanti con queste risposte? –

risposta

8

Bene, il primo problema da tenere a mente è che non esiste una scorciatoia magica per l'apprendimento degli accessi MS. Nel corso degli anni ho appreso un sacco di piattaforme di sviluppo che vanno dai sistemi mainframe, ai sistemi di dati, fino all'assemblaggio codificato a mano su un PC. Ho scritto due sistemi di buste paga da zero (con le formule di reddito Canada per le tasse incluse in quei sistemi). Un sistema è stato da zero scritto Pascal in cui ho persino scritto il mio motore di dati.

Non commettere errori, ms-access è un complesso sistema di sviluppo.

È possibile creare applicazioni drop dead dall'aspetto meraviglioso in accesso. dare un'occhiata a queste schermate:

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

Nota nastri fresco nelle schermate di cui sopra.

Il problema è che non puoi imparare Unix in un giorno e non puoi imparare Oracle in un giorno. Inoltre, non puoi imparare l'accesso MS in un giorno. Se quelle applicazioni che ti sono state date da mantenere sono complesse, assumere uno sviluppatore con 4-5 anni di esperienza è quello che ti serve qui. L'idea che in qualche modo stai andando ad accelerare in ms-access più veloce di dire vb.net, o C# è davvero un concetto falso qui.

In effetti, direi che puoi imparare Oracle più velocemente di quanto tu possa imparare l'accesso MS. Mentre la curva di apprendimento nell'accesso alla SM non è così ripida, è molto lunga.

VB6 è una passeggiata nel parco rispetto all'accesso. I moduli VB6 sono estremamente semplici, ma le forme in accesso sono molto complesse (abbiamo circa 3 volte il numero di eventi e proprietà per il modulo specificato). Ad esempio, in accesso abbiamo due eventi che si attivano quando un modulo viene caricato (on-open e on-load). I moduli VB6 (e anche i moduli .net) hanno solo un evento. L'evento on-open ha un'opzione di annullamento. Se si imposta cancel = true, il modulo non verrà caricato e non verrà visualizzato.

Logicamente, ciò significa che il modulo ha due eventi distinti per due scopi distinti quando si chiama il modulo. L'evento on-open avrà quindi il codice utilizzato per la verifica e il test di alcune condizioni di dati (e consente di annullare). Se l'evento on-open non viene annullato, allora l'evento on-load si attiva e il modulo viene caricato.

Logicamente, a questo punto ciò significa che il codice che imposta le variabili oi valori iniziali dei controlli sul modulo deve essere inserito nell'evento on-load (infatti i controlli non possono essere modificati ma esaminati solo nell'evento on open). Quindi c'è una granularità e una distinzione molto buone tra i due processi che si verificano in un tipico caricamento del modulo. È anche interessante notare che la maggior parte dei prodotti sul mercato non ha questi due eventi separati.

Come sviluppatore, quindi si inserisce il codice appropriato e si utilizza l'evento corretto per un determinato scopo. Ci vorrà un po 'di esperienza nell'usare l'accesso per capire quale evento usare per queste cose. Potresti chiedere se c'è un libro che spiega questo problema, ma è come chiedere c'è un libro che ti dice quando usare una casella combinata su quella di una lista? Non penso che ci sia un libro del genere.

La documentazione per una casella combinata spiegherà cos'è una casella combinata e come utilizzarla. Lo stesso vale per l'accesso alla documentazione per l'evento on open. Puoi leggere cosa fa on-open, ma poi tu come sviluppatore dovresti capire quando è appropriato usare quell'evento. Lo stesso vale quando è opportuno utilizzare una casella combinata o quella di una casella di riepilogo. Alla fine della giornata, l'unica soluzione e come conoscere questi problemi sarà la tua esperienza come sviluppatore del prodotto.

ho un articolo che parla di utilizzare gli oggetti di classe in MS Access, e quando usarli qui:

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

Se siete alla ricerca di esempi di codice da tutto per forme di rapporti di utilizzare API di Windows, un grande riferimento è qui:

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

1

Hai la mia comprensione - Accesso VBA non è orientato agli oggetti in alcun senso come Ruby. Dovrai cambiare idea quando affronti lo sviluppo in Access; tali applicazioni sono quasi sempre orientate al concetto di righe e insiemi di dati anziché di oggetti. L'interfaccia utente è spesso associata a righe e insiemi di dati in un modo che nasconde un sacco di tubature.

Detto questo, è possibile creare con cura e attenzione applicazioni manutenzionabili decenti in Access. In bocca al lupo.

+0

Grazie per la tua risposta, fantastico !! È doloroso fare l'Access VBa, hai qualche idea su come imparare alcuni suggerimenti? come un sito web di screencast? –

0

Dai un'occhiata alla dichiarazione Implements cioè il polimorfismo tramite interfacce. Questo è come OO come VBA ottiene.

+0

Grazie, daremo un'occhiata ora. –

1

una cosa che proprio futzing giro in Access non vi insegnerà è come creare e utilizzare moduli di classe standalone. Questi hanno alcuni aspetti dell'orientamento agli oggetti, ma non molto, ma possono essere estremamente utili per rendere il tuo codice più gestibile, in quanto puoi racchiudere molte operazioni in un modulo di classe standalone e quindi trattarlo come un oggetto che può avere più istanze. Non hai ereditarietà e polimorfismo e molte altre parole d'ordine che si accompagnano al vangelo OO, ma vale la pena dare un'occhiata a quello che possono fare se non le hai mai usate ampiamente.

+1

"Non ottieni ... il polimorfismo" - certo che fai: mai usato la parola chiave Implements? – onedaywhen

+0

Gli "oggetti" sono stati aggiunti molto tempo dopo che ho imparato a utilizzare i moduli di classe in Access, motivo per cui non sono a conoscenza di ciò che fa. Questo è uno dei problemi legati all'esperienza a lungo termine con Access: spesso non si apprezzano le nuove funzionalità. –

+1

Anche così, vale la pena dare un'occhiata a ciò che gli attrezzi possono fare - mai troppo tardi per imparare qualcosa di nuovo :) – onedaywhen

Problemi correlati