Discussione:
Da Access A MySql
(troppo vecchio per rispondere)
Enrico Pietrobon
2008-10-15 09:56:09 UTC
Permalink
Ciao a tutti.
Spero che il mio problema sia già stato affrontato.

Ho un db in Access con tutte le tabelle su un server. Le tabelle per ora
sono in formato access.
All'apertura del Applicativo (MDE) vengono collegate le tabelle tramite la
funzione
DoCmd.TransferDatabase A_ATTACH, "Microsoft Access" ecc.ecc.

Il tutto funziona egregiamente, se non che il db inizia ad accusare la
lentezza di tale collegamento.
Molte maschere con query pesanti si aprono addirittura dopo una decina di
secondi sui client.

Soluzione. Passa tutte le tabelle su MySql.

Diciamo che il passaggio è stato abbastanza indolore.
Le tabelle sono state importate senza problemi in MySql.

e poi collegate al DB con la stessa istruzione DoCmd.TransferDatabase

Le queey che prima ci mettevano 10 secondi in questo modo sono praticamente
immediate.
Ma il problema non è risolto.

Tengo a precisare che l'apertura delle tabelle sia Access (prima) che
(mySql) ora avviene tramite ADO.
Set DBL = Application.CurrentProject.Connection
S = "Select * From Impostazioni"
T1.Open S, DBL, adOpenKeyset, adLockOptimistic

1° problema
Su alcune tabelle, e non riesco a capire come e quando, ogni volta che cerco
di fare un UPDATE mi viene restituito questo errore.
"Il modulo di gestione di database Microsoft Jet ha interrotto
l'elaborazione. Un altro utente sta tentando contemporaneamente di
modificare gli stessi dati."

Ma io sono l'unico utente che sta lavorando su questa tabella
L'istruzione utilizzata è questa.
S = "Select * From Impostazioni"
T1.Open S, DBL, adOpenKeyset, adLockOptimistic
T1!TipoInvio = N1
T1.Update
T1.Close

Non riesco proprio a capire come mai.
Anche perchè su alcune tabelle non me lo fà.


Potrei rivedere tutto e non collegare le tabelle utilizzando mysql
direttamente da server
Ma in questo caso dovrei riscrivere interamente il codice, in quanto la
semplice query
"SELECT * FROM [IMPOSTAZIONI]"
dovrebbe essere sostituita con
"SELECT * FROM `IMPOSTAZIONI`"

per non parlare poi delle query con date ecc.ecc.

A complicare il tutto è che molti clienti con pochi dati, non utilizzeranno
MYsql ma continueranno ad utilizzare le tabelle Access.
Quindi quella del collegamento è la miglior soluzione per entrambi i
sistemi.
Peccato che non riesca a capire l'errore...


Grazie a tutti.
Enrico Pietrobon
Oscar Manfredini
2008-10-15 10:42:01 UTC
Permalink
"Enrico Pietrobon"
Post by Enrico Pietrobon
Le queey che prima ci mettevano 10 secondi in questo modo sono
praticamente
Post by Enrico Pietrobon
immediate.
Ma il problema non è risolto.
Tengo a precisare che l'apertura delle tabelle sia Access (prima) che
(mySql) ora avviene tramite ADO.
Set DBL = Application.CurrentProject.Connection
S = "Select * From Impostazioni"
T1.Open S, DBL, adOpenKeyset, adLockOptimistic
1° problema
Su alcune tabelle, e non riesco a capire come e quando, ogni volta che cerco
di fare un UPDATE mi viene restituito questo errore.
"Il modulo di gestione di database Microsoft Jet ha interrotto
l'elaborazione. Un altro utente sta tentando contemporaneamente di
modificare gli stessi dati."
Ma io sono l'unico utente che sta lavorando su questa tabella
L'istruzione utilizzata è questa.
S = "Select * From Impostazioni"
T1.Open S, DBL, adOpenKeyset, adLockOptimistic
T1!TipoInvio = N1
T1.Update
T1.Close
Non riesco proprio a capire come mai.
Le tabelle contengono tutte una colonna TimeStamp?
Mi butto, ma considera che io utilizzo MS SQLSVR e non conosco MySQL.

...
Enrico Pietrobon
2008-10-15 11:06:05 UTC
Permalink
Post by Oscar Manfredini
"Enrico Pietrobon"
Post by Enrico Pietrobon
Le queey che prima ci mettevano 10 secondi in questo modo sono
praticamente
Post by Enrico Pietrobon
immediate.
Ma il problema non è risolto.
Tengo a precisare che l'apertura delle tabelle sia Access (prima) che
(mySql) ora avviene tramite ADO.
Set DBL = Application.CurrentProject.Connection
S = "Select * From Impostazioni"
T1.Open S, DBL, adOpenKeyset, adLockOptimistic
1° problema
Su alcune tabelle, e non riesco a capire come e quando, ogni volta che
cerco
Post by Enrico Pietrobon
di fare un UPDATE mi viene restituito questo errore.
"Il modulo di gestione di database Microsoft Jet ha interrotto
l'elaborazione. Un altro utente sta tentando contemporaneamente di
modificare gli stessi dati."
Ma io sono l'unico utente che sta lavorando su questa tabella
L'istruzione utilizzata è questa.
S = "Select * From Impostazioni"
T1.Open S, DBL, adOpenKeyset, adLockOptimistic
T1!TipoInvio = N1
T1.Update
T1.Close
Non riesco proprio a capire come mai.
Le tabelle contengono tutte una colonna TimeStamp?
Mi butto, ma considera che io utilizzo MS SQLSVR e non conosco MySQL.
...
Utilizzavo anche io Ms Sql Server...
Purtroppo Costa di più che tutto l'appicativo.
Quindi ho dovuto cambiare...

Questa della colonna TimeStamp mi manca?
Ho letto che è una colonna dove viene memorizzata la data e l'ora del ultimo
Update..
Ma cosa si intende ?
Oscar Manfredini
2008-10-15 11:36:12 UTC
Permalink
"Enrico Pietrobon"
Post by Enrico Pietrobon
Utilizzavo anche io Ms Sql Server...
Purtroppo Costa di più che tutto l'appicativo.
Quindi ho dovuto cambiare...
?
E' no: la versione Express è Free.

Ciao: Oscar
Enrico Pietrobon
2008-10-15 14:39:30 UTC
Permalink
Post by Oscar Manfredini
"Enrico Pietrobon"
Post by Enrico Pietrobon
Utilizzavo anche io Ms Sql Server...
Purtroppo Costa di più che tutto l'appicativo.
Quindi ho dovuto cambiare...
?
E' no: la versione Express è Free.
Ciao: Oscar
Non sapevo che ci fosse la versione Express...
Ho provato a cercare e ho trovato sia la 2005 che la 2008

Per curiosità ho installato la 2008...
Ragazzi che casino.
MySql è molto più leggero e performante.
Inoltre strapieno di Tools.

MA!!!!


Enrico Pietrobon
Oscar Manfredini
2008-10-15 17:34:27 UTC
Permalink
"Enrico Pietrobon"
Post by Enrico Pietrobon
Non sapevo che ci fosse la versione Express...
Ho provato a cercare e ho trovato sia la 2005 che la 2008
Per curiosità ho installato la 2008...
Ragazzi che casino.
MySql è molto più leggero e performante.
Inoltre strapieno di Tools.
Molto più performante mySql: ma stai scherzando?
D'accordo invece sulla pesantezza ... problema connaturato a M$.

Ciao: Oscar
Enrico Pietrobon
2008-10-15 18:31:36 UTC
Permalink
Post by Oscar Manfredini
"Enrico Pietrobon"
Post by Enrico Pietrobon
Non sapevo che ci fosse la versione Express...
Ho provato a cercare e ho trovato sia la 2005 che la 2008
Per curiosità ho installato la 2008...
Ragazzi che casino.
MySql è molto più leggero e performante.
Inoltre strapieno di Tools.
Molto più performante mySql: ma stai scherzando?
D'accordo invece sulla pesantezza ... problema connaturato a M$.
Ciao: Oscar
Dunque...
Ho provato ad installare Mysql...
Ci ho messo circa 20 Minuti.


Ho provato ad installare SQLServer
Ho iniziato oggi pomeriggio e non sono nemmeno riuscito a collegare le
tabelle.

sono sicuro che il problema sia mio. di questo sono assolutamente certo.
Ma se ho problemi io che sono 25 anni che lavoro in questo settore..
Figurati un utente medio.

In Mysql ho collegato solo le tabelle nemmeno le viste.
Ho lasciato le query nel applicativo Access e ti assicuro che la
velocità si può vedere tranquillamente ad occhio nudo.

Appena riusciro a risolvere il problema SQL proverò acnhe con questo.

Enrico Pietrobon
Oscar Manfredini
2008-10-15 20:49:49 UTC
Permalink
"Enrico Pietrobon" <
Post by Enrico Pietrobon
Post by Oscar Manfredini
Molto più performante mySql: ma stai scherzando?
D'accordo invece sulla pesantezza ... problema connaturato a M$.
Ho provato ad installare SQLServer
Ho iniziato oggi pomeriggio e non sono nemmeno riuscito a collegare le
tabelle.
sono sicuro che il problema sia mio. di questo sono assolutamente certo.
Ma se ho problemi io che sono 25 anni che lavoro in questo settore..
Figurati un utente medio.
Ma un Server di Database è un prodotto che installa un professionista, cosa
c'entra un utente medio?
E comunque non è particolarmente onerosa l'installazione di M$ SQLSVR: che
mi perdo?
Post by Enrico Pietrobon
In Mysql ho collegato solo le tabelle nemmeno le viste.
Ho lasciato le query nel applicativo Access e ti assicuro che la
velocità si può vedere tranquillamente ad occhio nudo.
?
non ti seguo: mi pareva che tu sostenessi che MySQL sia più veloce di MS
SQLSVR.
Questa è un'affermazione azzardata: il Server M$ è pesante, ok, ma il motore
ha performances e features al Top (e scala molto bene all'aumentare dei
processori).
Non conosco MySQL, ma più veloce "della luce" non si può...

Ciao: Oscar
Enrico Pietrobon
2008-10-15 21:02:16 UTC
Permalink
Post by Oscar Manfredini
"Enrico Pietrobon" <
Post by Enrico Pietrobon
Post by Oscar Manfredini
Molto più performante mySql: ma stai scherzando?
D'accordo invece sulla pesantezza ... problema connaturato a M$.
Ho provato ad installare SQLServer
Ho iniziato oggi pomeriggio e non sono nemmeno riuscito a collegare le
tabelle.
sono sicuro che il problema sia mio. di questo sono assolutamente certo.
Ma se ho problemi io che sono 25 anni che lavoro in questo settore..
Figurati un utente medio.
Ma un Server di Database è un prodotto che installa un professionista, cosa
c'entra un utente medio?
E comunque non è particolarmente onerosa l'installazione di M$ SQLSVR: che
mi perdo?
Post by Enrico Pietrobon
In Mysql ho collegato solo le tabelle nemmeno le viste.
Ho lasciato le query nel applicativo Access e ti assicuro che la
velocità si può vedere tranquillamente ad occhio nudo.
?
non ti seguo: mi pareva che tu sostenessi che MySQL sia più veloce di MS
SQLSVR.
Questa è un'affermazione azzardata: il Server M$ è pesante, ok, ma il motore
ha performances e features al Top (e scala molto bene all'aumentare dei
processori).
Non conosco MySQL, ma più veloce "della luce" non si può...
Ciao: Oscar
MA!
Sono sicuro, anzi sono certo, che Ms Sql Express sia molto potente..
una cosa è sicura. Io è da oggi pomeriggio che sto tentando di
installarlo. e sono riuscito solo ora a configurarlo.

Inoltre ora ho importato le tabelle da un database access, e non riesco
nemmeno ad inserire una chiave primaria e salvarla.
Continua a darmi errori su errori.

My sql 20 minuti dopo era tutto pronto e installato, tabelle access
importate e modificate.

Non sto dicendo che uno sia meglio dell'altro, è che microsoft come
sempre se può complicare le cose lo fà più che volentieri.

Utilizzare un prodotto piuttosto che un altro in questo momento per mè è
uguale, quando mi recherò dal cliente in 10 Minuti installero MYSQL in 2
ore installero SQLServer.

Se dovessi riuscirci tamise SQLServer bene se dovessi riuscirci con
MySql bene uguale.

Ma trovo, sia l'installazione di MS SQL sia la sua configurazione, sia
l'importazione delle tabelle un gran casino.
E non ho nemmeno iniziato a verificare le problematice del interfaccia
Access to MS SQl......

figuriamoci.


Enrico Pietrobon
Fabrizio Conti (Panathos)
2008-10-17 15:53:05 UTC
Permalink
Post by Enrico Pietrobon
Post by Oscar Manfredini
Post by Oscar Manfredini
Molto più performante mySql: ma stai scherzando?
Probabilmente no, o quantomeno credo sia più economico avere un mysql
molto performante, che un sql server di pari velocità. Almeno fino
alla versione 2005, ora non saprei.

Le gabole stanno nel fatto che mysql è compilabile su macchine 64 bit
fatte anche hoc, volendo; dove il SO è gratuito ed il costo è solo
quello hardware (il costo del sistemista c'è in entrambe le soluzioni
ovviamente :-)).
Poi siccome i 64 bit permettono molto spazio di indirizzamento per la
RAM, magari si largheggia con gli indici in memoria; financo a tenerci
tabelle grosse replicate per query tipo datawarehousing oppure -
abbastanza di recente per mysql- parcheggiare in RAM tablespace
appositi per differenziare le tabelle "piccole e veloci" da quelle
"grosse e lente".
Post by Enrico Pietrobon
Post by Oscar Manfredini
Ma un Server di Database è un prodotto che installa un professionista, cosa
c'entra un utente medio?
La risposta mi pare evidente: sempre più "utenti medi" hanno necessità
di usare rdbms, al di fuori delle grosse realtà aziendali. E credo che
uno dei "primi approcci" sia costituito proprio da MS Access, che
rimane più insuperabile di un tonno in quello che permette di fare.

Inoltre una applicazione con poche pippe sistemistiche, aldilà del
fantomatico utente medio, ha i suoi comodi vantaggi.
Due mesi fa per migrare un db mysql di più di 200 tabelle dalla
versione 4 alla versione 5 di mysql ho impiegato sì un paio d'ore di
tempo-macchina; ma pochissima fatica e pochi clic assolutamente
"umani": su winpenpack.com c'è tutto l'occorrente già impacchettato
(pampa_wpp per mysql, x-sqlyog per il tool di replica e migrazione).
Col bonus di avere ottenuto anche una replica del db aziendale sul mio
disco esterno; e posso usare questa replica in modalità no-install su
qualunque pc con Windows XP.
Post by Enrico Pietrobon
E non ho nemmeno iniziato a verificare le problematice del interfaccia
Access to MS SQl......
Per far funzionare bene MySql con Access le "regole" non sono tante:

1) obbligo di primary key in ogni tabella.

2) obbligo, in ogni tabella, di campo timestamp con valore default
impostato a Null (ver.4) oppure CURRENT_TIMESTAMP per la versione 5.
Questo per permettere al driver ODBC di identificare univocamente ogni
riga della tabella.

3) usare MyODBC aggiornato (3.51.24 dovrebbe essere l'ultima
versione).

4) Non usare la conversione, configurabile in MyODBC, "converti BigInt
in Int".

5) Ogni volta che fai una qualsiasi modifica alle tabelle, devi
riallegarle a Access (ovviamente occorre una routine che rialleghi da
sola tutte le tabelle e le query PT appartenenti a un determinato DSN,
per lavorare comodi)

6) Usa almeno la versione 5 di MySQL, con myODBC aggiornato.

Fatte salve queste cose, MySQL funziona piuttosto bene.

L'errore in cui eri incappato, riguardante un altro utente "fantasma",
era probabilmente dovuto all'impossibilità del driver ODBC di
identificare le righe da elaborare; in particolare rivedrei il campo
timestamp della tabella (oltre alla versione che usi di MyODBC).

ciao,
Panathos
Oscar Manfredini
2008-10-18 06:46:19 UTC
Permalink
"Fabrizio Conti (Panathos)"
Post by Oscar Manfredini
Post by Oscar Manfredini
Molto più performante mySql: ma stai scherzando?
Probabilmente no, o quantomeno credo sia più economico avere un mysql
molto performante, che un sql server di pari velocità. Almeno fino
alla versione 2005, ora non saprei.

(cut)
Non credo assolutamente che le performances di MySQL possano essere
paragonate sui 'grandi' DB (e carichi di lavoro) al Server M$.

SQL Server, già con la release 2000 era un prodotto maturo "verso l'alto".
Supporto del Clustering di failover, multithreading per la gestione
dell'hardware multiprocessore (fino a 32 processori e 64 GB di RAM),
distribuzione dei logs, Analysis Services per Data Warehousing, etc.
Il "contro" di questo orientamento è la pesantezza: spesso inaccettabile per
installazioni monoutenti.

Prodotti come FireBird o MySQL volano (sicuramente) più basso, ma hanno il
vantaggio d'essere "leggeri".
Il rovescio della medaglia è che non sono prodotti da Microsoft: quindi
possono essere all'ordine del giorno problemi di mapping di datatypes (anche
importanti) e altri bugs nella connettività ODBC verso Access. E non ci si
deve aspettare che questi guai vengano risolti dai Service Packs.
Post by Oscar Manfredini
Ma un Server di Database è un prodotto che installa un professionista, cosa
c'entra un utente medio?
La risposta mi pare evidente: sempre più "utenti medi" hanno necessità
di usare rdbms, al di fuori delle grosse realtà aziendali. E credo che
uno dei "primi approcci" sia costituito proprio da MS Access, che
rimane più insuperabile di un tonno in quello che permette di fare.
Che utenti "medi" (ovvero NON sviluppatori) abbiano necessità d'installare
Server di Database proprio non mi risulta.
Un utente medio, generalmente, nemmeno sa cosa sia un Database o
cmq qualcosa di diverso da un tabellone tipo Excel.

Ciao: Oscar
Fabrizio Conti (Panathos)
2008-10-20 07:15:46 UTC