Domanda

Ho scritto un piccolo sistema punto vendita (8-10 laptop) in esecuzione su una rete wireless, come un HTA che legge/scrive su un MDB di accesso situato su una condivisione di rete.
Devo utilizzare ADO: GetString e l'elenco degli utenti non sono disponibili con DAO.
Devo anche utilizzare DAO: l'MDB non può essere compresso con ADO.

So che:
1) Se il backend del database non è un MDB di Access, dovrei usare ADO.
2) Se il backend è un MDB, ma prima o poi desidero eseguire l'aggiornamento a SQL Server, dovrei utilizzare ADO.
3) All'interno di un'applicazione Access o di qualsiasi altra applicazione VBA/VB, dovrei utilizzare DAO, poiché ADO deve passare attraverso un livello di traduzione del provider Jet OLE DB, mentre DAO è più diretto.
4) VBScript/JScript mi ​​consente di utilizzare DAO o ADO.

La domanda in due parti è la seguente:
1) In questo ambiente software (HTA/scripting), è meglio utilizzare ADO anziché DAO?
2) ADO offre vantaggi perché l'HTA legge/scrive su una rete wireless?

È stato utile?

Soluzione

  1. Se l'unico motivo per cui hai bisogno di DAO è compattare il database, puoi usare DAO per quello e usare ADO per tutto il resto.Non sei limitato a utilizzare solo ADO o DAO.

  2. Il vantaggio più grande derivante dall'utilizzo di ADO è che sarà più semplice passare a SQL Server Express quando sarà il momento.Dovresti farlo il prima possibile, poiché SQL Server Express offre tutti i vantaggi dei database MSAccess senza gli svantaggi.SQL Server Express è gratuito e gestirà facilmente le dimensioni del sistema che stai proponendo.

I database di accesso si danneggiano facilmente in un ambiente multiutente, soprattutto quando è coinvolta una rete wireless.Se temi di perdere i vantaggi derivanti dall'utilizzo di MSAccess, puoi comunque collegarti a SQL Server utilizzando tabelle collegate e lavorare con il tuo database SQL Server Express in questo modo.

Altri suggerimenti

Puoi anche utilizzare JRO per compattare il tuo file MDB.Questo sarà incluso in qualsiasi versione recente di MDAC, installata per impostazione predefinita su XP e sistemi successivi.Non è necessaria alcuna installazione di Access.

Per rispondere alle tue domande specifiche:

1) Opterei per ADO solo perché è più attuale e la stessa API può essere utilizzata in altri tipi di scripting, come l'accesso LDAP/ActiveDirectory, la lettura delle cartelle del file system, la lettura della posta MAPI e il lavoro con altri tipi di semi- file di testo strutturati come testo a larghezza fissa e CSV.Non è specificamente migliore per l'ambiente di programmazione HTA, ma forse è meglio per te imparare un'API più ampiamente applicabile.Penso anche che sia un'API più semplice con cui lavorare, ma ho iniziato con essa e solo in seguito ho lavorato su alcuni progetti DAO più vecchi.

2) Un possibile vantaggio fornito da ADO è quello dei recordset disconnessi, che possono avere un vantaggio o almeno suggerire alcune alternative architettoniche nella configurazione della rete wireless.Si apre un recordset, quindi lo si disconnette, in modo da poter continuare a lavorare con i dati in memoria, ma non è necessario lasciare aperta una connessione al database.Successivamente è possibile riconnettersi e aggiornare il database.Inoltre, puoi lavorare in uno stile completamente disconnesso gestendo le tabelle come file XML o ADTG locali.

Potresti convincere DAO a lavorare con VBScript, ma è un abbinamento strano.ADO ha più senso in generale.


Un altro vantaggio di ADO sarebbe che supporta RDS su DCOM o HTTP.Questo può essere utilizzato per superare molte delle limitazioni dei Jet MDB utilizzati tramite la condivisione di file, come la corruzione a cui possono portare reti e client inaffidabili.Riduce inoltre la quantità di traffico sulla rete, migliorando le prestazioni.Inoltre offre un livello intermedio in cui gli oggetti business possono "vivere" e tutto questo può essere mediato utilizzando COM+, ove applicabile.

Naturalmente non avete più la possibilità di utilizzare una semplice rete P2P e una condivisione di file per ospitare il database.RDS necessita di un server per ospitare il processo ed eseguire il motore Jet, che non deve più essere eseguito su ciascun sistema client.Ciò significa che è possibile utilizzare le procedure memorizzate Jet eseguite sul server, scaricando più elaborazione client e traffico di rete.Sebbene non sia sofisticata come T-SQL o altre alternative, questa tecnologia esclusiva del provider OLE DB ADO/Jet 4.0 offre vantaggi tangibili che non è possibile ottenere utilizzando DAO.

RDS può mascherare gran parte del processo di utilizzo dei recordset disconnessi, semplificando il codice client.Sotto il cofano utilizza l'ADTG, sviluppato e ottimizzato proprio per questo scopo.

Tuttavia, l'utilizzo di RDS richiede più infrastrutture e competenze rispetto a una semplice condivisione di file.Potresti anche esaminare una versione di fascia bassa di SQL Server.


In generale consiglierei di utilizzare il file jetcomp.exe utilità per compattare e riparare, su DAO o JRO.Offre una serie di vantaggi.

Se puoi permetterti di utilizzare un'applicazione HTA con Access invece di una piattaforma più performante, direi che dovresti scegliere l'API più semplice per te.Il collo di bottiglia non sarà mai l'astrazione dell'accesso al database nel tuo caso.Tuttavia, DAO è davvero vecchio.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top