Newsgroup: it.comp.appl.access
Titolo: Da Access A MySql

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

 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.
...

 ha scritto nel messaggio 
news:48f5c850$0$40303$4faf...@reader5.news.tin.it...

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 ?



Comunque sia.. Campo aggiunto ad una tabella per verificarne il 
funzionamento.
Ora dopo una modifica attraverso MySql Administrator effettivamente 
inserisce automaticamente la data e l'ora.
Bè prima di tutto il messaggio di errore è sempre uguale.
"Il modulo di gestione di database Microsoft Jet ha interrotto
l'elaborazione. Un altro utente sta tentando contemporaneamente di
modificare gli stessi dati."
Ho aperto poi la tabella collegata in questione direttamente da Access e 
nemmeno da li riesco ad aggiornare i campi..
Ho verificato i permessi direttamente da MySql Administrator, ed è tutto 
apposto...
Muble Muble
Enrico Pietrobon 

 Quindi ho dovuto cambiare...
?
E' no: la versione Express è Free.
Ciao: Oscar



La cosa si fà sempre più strana...
Solo alcuni campi delle tabelle non li lascia aggiornare.
Altri si.
Questa poi è proprio bella...
Ho eliminato Il campo da MySqlAdministrator
e l'ho reinserito. Ora me lo aggiorna dalle tabelle..
Ma da codice... è sempre la stessa storia...
"Il modulo di gestione di database Microsoft Jet ha interrotto
l'elaborazione. Un altro utente sta tentando contemporaneamente di
modificare gli stessi dati."
Ho notato un altra cosa, e ho capito quando mi dà l'errore..
Quando io memorizzo all'inerno del campo un valore uguale a quello già 
memorizzato....
Se un campo contiene 1 e ci rimemorizzo 1 mi dà l'errore.
Se un campo contiene 1 e ci memorizzo 2 funziona...............
Sto diventando matto.
Enrico Pietrobon 

 nemmeno da li riesco ad aggiornare i campi..
Hai ricollegato la tabella, dopo aver aggiunto il TimeStamp?
La tabella contiene una chiave primaria?
Ciao: Oscar

 ha scritto nel messaggio 
news:48f5d565$0$1083$4faf...@reader2.news.tin.it...

Tabella Ricollegata e contiene una chiave primaria...
Operazioni già effettuate.
Enrico Pietrobon 

 ha scritto nel messaggio 
news:48f5d503$0$1083$4faf...@reader2.news.tin.it...

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 

 Inoltre strapieno di Tools.
Molto più performante mySql: ma stai scherzando?
D'accordo invece sulla pesantezza ... problema connaturato a M$.
Ciao: Oscar

 Sto diventando matto.
Mi pare che SandroBi avesse pubblicato su quest'area un post in cui
segnalava questo problema.
Credo che facendo una ricerca con google potresti rintracciarlo...
Comunque considera che la connettività ODBC per Access è testata a fondo
solo con M$ SqlSvr; in genere chi prova altri motori di Database incontra
spesso situazioni seccanti.
Ciao: Oscar

Oscar Manfredini ha scritto:

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

 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

Oscar Manfredini ha scritto:

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

 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


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

 Ciao: Oscar


wrote:
Scusa, riprendo il discorso in quanto mi è partito il msg mentre lo
stavo componendo; riguardo la necessità di un "utente medio" di
installare o usare un rdbms. Il punto del mio discorso è che oggi
tutti noi, o quasi, abbiamo decine di migliaia di files fra audio,
video, immagini, documenti vari, etc; sparsi probabilmente su più
dischi (hd interni, esterni, cd, dvd, schede sd, etc.).
I programmi che gestiscono questi tipi di file nei migliori dei casi
si fanno la "propria" library. Così, se installi Winamp, Itunes,
Foobar, Picasa, Photoshop, GIMP, Office, OpenOffice (per limitarci a
quello che può interessare il fantomatico "utente medio"; che forse
Excel non lo ha mai visto ma in compenso è abile a fare video col
cellulare, modificarlo col pc e metterlo su youtube); vai giù di
scansioni sulle periferiche.
Usare un sistema centralizzato e accessibile, per contenere le
informazioni sui file e meta-tag, sarebbe già un primo passo. Magari
poi i vari programmi potrebbero solo AGGIUNGERE alle 'tabelle' ciò che
gli serve. Ad es. un prg per mixare mp3 potrebbe scansionare i brani
per aggiungere al db solo i bpm; invece di rifarsi una sua copia di
tutta la base dati.
Se poi questo sistema fosse integrato nel filesystem per l'utente
potrebbe essere ancora meglio (pure Microsoft l'ha capito e difatti
sta lavorando a WinFS).
Cmq ad oggi mi risulta che solo Amarok possa integrarsi con MySQL. E
siccome tutto questo con Access c'entra molto relativamente, ora che
ho spiegato l'affermazione che ho scritto direi che posso chiudere.
ciao,
Panathos


Fammi degli esempi: forse sono io troppo soggettivo.
Ciao: Oscar

 Fammi degli esempi: forse sono io troppo soggettivo.
Avevo scritto un msg che riprendeva questo, dovresti trovarlo nello
stesso thread.
Brevemente, credo che i terabytes di roba scaricata (principalmente
via p2p, ma è un presupposto allegramente discutibile :-)) dagli
"utenti medi" introducano problematiche di gestione non proprio
banali... e sarebbe comodissimo se ci fosse un gestore centralizzato,
interrogabile e... facilmente gestibile per tutti i dati e metadati
che stanno sugli hard-disk degli "utenti medi", a servizio degli
sviluppatori per integrarlo nelle applicazioni; e ad uso e consumo
degli utenti.
Gli indicizzatori tipo Google Desktop e Copernic risolvono solo una
parte del problema; perché sarebbe comodissimo poter inserire tag e
creare meta-cartelle oltre ad avere i file indicizzati. Qualunque
programma installi, saprebbe già dove andare a cercare che cosa.
ciao,
Panathos


Ho visto ora anche l'altro post.
Sì, il discorso è interessante e hai molte ragioni, tanto è vero che M$
voleva includere in VISTA il motore di SQL Server a livello di file system.
Però se facciamo un discorso attuale e aziendale (il contesto di Pietrobon)
IMHO non esiste un utente medio che abbia necessità d'installare un Server
di database. Il contesto è sempre quello del fornitore di software
(sviluppatore o installatore) che se ne occupa.
Sicuramente se parliamo di monoutenze la pesantezza del Server M$ è
deprecabile, ma in un contesto che preveda il classico PC Server è una
soluzione che non da problemi.
Ciao: Oscar