Problemi su condivisione file
Hai un problema con Excel? 
Problemi su condivisione file
di alexps81 data: 17/08/2015 16:50:43
Buon giorno a tutti, un saluto particolare a VF (e alla sua meravigliosa regione che ho da poche ore lasciato).
Sono arrivato finalmente al termine (grazie soprattutto alla complicità di molti di voi) del mio Elenco Telefonico.
Adesso però mi sono imbattuto in un grosso problema, la condivisione del file.
Quando vado ad impostarlo come file condiviso, subentrano dei problemi (in parte previsti, altri inattesi). Mi spiego con esempi qui sotto riportati:
1 - Dopo salvato in condivisione, all'apertura del file, sia su un Pc che sull'atro mi esce la scritta "IMPOSSIBILE IMPOSTARE LA PROPRIETA' MERGECELLS PER LA CLASSE RANGE", e lo fa anche quando vado a cliccare sul pulsante TUTTI andando poi in debug.
2 - Nel salvare il file in condivisione ho scelto che le modifiche vengono visualizzate sull'altro Pc al salvataggio del file, adesso io però ho impostato che il file non può essere salvato (attraverso l'evento beforesave) ma il file si salva attraverso le modifiche effettuate tramite i pulsanti NUOVO CONTATTO, MODIFICA CONTATTO e ELIMINA CONTATTO di qualsiasi foglio presente nel file. Se creo o modifico o elimino un contatto, su un Pc funziona, sull'altro no, a meno che non imposto la condivisione del file non sul salvataggio ma sul tempo ma io ho bisogno che le modifiche si effettuino al salvataggio. Se invece poi dopo imposto la modalità progettazione e vado a fare salva funziona il tutto.
3 - Nel foglio REGISTRO CHIAMATE c'è un problema ancora più grande. Ovvero tralasciando che le modifiche avvengono sempre dopo o il salvataggio manuale del file o dopo il tempo impostato (ma non voglio che sia così), subentra la problematica legata al posizionamento nelle celle.
In pratica il foglio dovrebbe funzionare così:
Su un Pc viene popolato il foglio REGISTRO CHIAMATE, la stessa cosa viene fatto sull'altro Pc, ma la posizione in cella deve avvenire in base all'ora e alla data, cioè se su Pc1 vado a cliccare che SERPRONIO è stato richiesto da UFF. SERVIZI alle 10.30 del 17/08/2015, sul Pc2 vado a cliccare che TIZIO è stato richiesto da UFF. STUDI alle 10.35 del 17/08/2015, su Pc1 vado a cliccare che CAIO è stato richiesto da UFF. AFFARI GENERALI alle 10.33 del 17/08/2015 il risultato deve essere:
UFF. SERVIZI - SEMPRONIO - 10.30 - 17/08/2015
UFF. AFFARI GENERALI - CAIO - 10.33 - 17/08/2015
UFF. STUDI - TIZIO - 10.35 - 17/08/2015
Cioè deve metterli in ordine in automatico, anche perché poi i Pc di volta in volta mi chiedono quali modiche apportare perché vado di volta in volta a stravolgere celle già occupate.
Allego file
Mi spiace per il modo prolisso di spiegare ma credo sia l'unico modo per far comprendere il problema.
Grazie.
di Vecchio Frac data: 17/08/2015 19:57:06
Ciao alex
cit. "e alla sua meravigliosa regione"
---> purtroppo hai trovato brutto tempo (è stato caldo e afoso fino a due giorni fa). Comunque per precisione il Trentino non è il Trentino Alto Adige... non mescoliamo la Provincia con la Regione... tu sei stato nella mia meravigliosa Provincia ^_^
Nel merito: devo rileggere e trileggere poi potrò ragionare. Finora non ho capito niente :)
di alexps81 data: 17/08/2015 21:45:48
In realtà il problema iniziale è capire perché se lo salvo in modalità CONDIVISIONE, e metto come impostazione avanzate "AGGIORNA MODIFICHE" su "AL SALVATAGGIO DEL FILE", il file non si aggiorna nonostante c'è la routine sui pulsante NUOVO CONTATTO, MODIFICA CONTATTO e ELIMINA CONTATTO.
Cioè se inserisco un nuovo contatto, al click poi su Ok oltre a inserire i dati nel rigo, il file si salva in automatico. Dunque se si salva perché non avviene l'aggiornamento del file su l'altro Pc?
Poi il problema maggiore è sul foglio REGISTO TELEFONATE. Cioè dovrebbe funzionare così:
immagina due Pc e due telefoni, arriva una telefonata sul telefono 1, annoto la telefonata tramite REGISTRO TELEFONATE, poi arriva un'altra telefonata sul telefono 2 e avviene la stessa procedura di prima, e così via per tutto il giorno. Adesso come è impostato il REGISTRO TELEFONATE, se il file non si salva in automatico ad ogni modifica, i due Pc impazziscono perché le telefonate non vanno registrate nel primo rigo disponibile. Lo so è difficile sia spiegarlo che capirlo. Bisognerebbe vederlo.
A parer mio bisognerebbe prima di tutto che il file si salvi ad ogni modica, e che poi tutte le telefonate da registrare vanno ad insediarsi nel rigo prima disponibile e poi (contemporaneamente) ordinarsi in base all'orario.
Poi rimane sempre il problema "IMPOSSIBILE IMPOSTARE LA PROPRIETA' MERGECELLS PER LA CLASSE RANGE" appena si apre il file.
di Vecchio Frac data: 18/08/2015 08:20:52
cit. "se si salva perché non avviene l'aggiornamento del file su l'altro Pc?"
---> Se l'altro file è aperto, l'aggiornamento non avviene in tempo reale. Andrebbe chiuso il file e riaperto. O magari c'è un'impostazione per aggiornare il foglio ogni tot, dovrei vedere.
Il problema nasce perchè vuoi far lavorare pc diversi con lo stesso file.
E' inevitabile che uno dei due perde le proprie modifiche a vantaggio dell'altro.
Per l'aggiornamento contemporaneo questo è un problema davvero difficile da risolvere con Excel perchè si tratta di una base dati diversa su due pc che tentano di condividerla. L'ideale sarebbe Access, con una base dati unica (un file residente in cartella condivisa) e più programmi indipendenti che leggono/scrivono la base dati comune senza possibilità di interferenze (è il motore Jet SQL che pensa a gestire i conflitti e le transazioni).
Per la proprietà MergeCells probabilmente il foglio risulta protetto in quel momento.
Certo sarebbe necessario un intervento a cuore aperto (cioè sul posto) oppure ricreare esattamente lo scenario.
Un'alternativa possibile sarebbe quella di non far lavorare i due pc sullo stesso file condiviso, ma su due file separati, ognuno con la propria base dati. Ogni tot tempo (o di notte) far eseguire la sincronizzazione (ognuno dei due legge i dati dell'altro, li ricopia su se stesso, esegue l'ordinamento, si salva).
di alexps81 data: 18/08/2015 09:49:17
Allora, sta mattina ho parlato con un mio amico dell'ufficio informatico dove gli ho fatto vedere il problema.
Mi ha dato delle indicazioni ma dato i suoi impegni non mi può essere di aiuto materiale. In realtà mi confermava che per far un lavoro del genere è consigliabile Access, ma io non so proprio usarlo. L'unico modo che c'è per far funzionare il file di Excel è quello di far ragionare il file come ragiona Access, ovvero bisogna creare tabelle master nascoste (dunque tutti i fogli presenti devono essere dei master) e i fogli che in realtà si vedono non sono altro che fogli slave. In pratica mi ha detto che bisogna creare dei soli e dei satelliti, dove le modifiche reali avvengono in questi fogli master nascosti. Mi ha anche fatto vedere un po' la procedura, ma proprio non so metterci le mani. Ha iniziato così:
DATI ==> CONNESSIONI ESISTENTI ==> SFOGLIA ==> TUTTE LE ORIGINI DATI ==> FILE DA EXCEL ==> SCELTA DEL FILE ==> SCELTA DEL FOGLIO ==> IN UN NUOVO FOGLIO DI LAVORO ==> OK
Poi da li si crea il nuovo foglio e si devono collegare i pulsanti NUOVO CONTATTO, MODIFICA CONTATTO e ELIMINA CONTATTO a questa tabella. Adesso questo foglio diventa il master, dunque tutte le modifiche fatte in realtà devono avvenire in questo foglio. Poi mi ha detto che va fatto tutte le volte un reflesh alla tabella mater
Io non competenze in merito, spero di aver capito quello che mi ha detto e che quello che mi ha detto sia giusto.
di Vecchio Frac data: 18/08/2015 12:07:38
Una cosa complessa, non c'è dubbio, per Excel.
Chiedigli cosa ne pensa dell'idea di far eseguire la sincronizzazione di due file uno rispetto all'altro (a comando o a tempo). Cioè quello che dicevo prima: ognuno dei file (indipendenti quindi con accesso esclusivo) recupera le righe delle tabelle interessate dall'altro file (che deve stare su cartella condivisa nel momento della richiesta) con una query ADO, e le ricopia su se stesso. L'ordinamento permette di avere le tabelle sempre aggiornate. le righe da recuperare possono essere magari non tutte, ma determinate da un contatore che informa da quale riga partire per prelevare le nuove righe (sconosciute al file perchè inserite dopo l'ultima sincronizzazione).
di alexps81 data: 18/08/2015 12:24:27
Mah...credo che debba abbandonare questo progetto. Sta ddiventando una cosa più grande di me. Speravo fosse più semplice.
Magari col tempo imparerò ad usare Access e ripartiró da zero.
di Vecchio Frac data: 18/08/2015 13:22:42
Access è per certi versi più semplice di quello che sembra.
La sua difficoltà implica una curva iniziale di apprendimento un pochino in salita, ma poi si appiana.
Devi solo acquisire una terminologia peculiare e propria di Access e imparare a conoscere i suoi elementi fondamentali (tabelle, maschere, query, report). Dopodichè dovrai ragionare sapendo che hai a che fare con un database visuale: raccoglie in sè le caratteristiche di un foglio di calcolo e di un elaboratore di testi, con la potenza di un sistema di analisi e presentazione dei dati.
VBA è un punto comune a Excel, anche se tratta oggetti diversi (e avrai a disposizione comandi diversi).
Access semplifica di molto la parte di interfaccia (presentazione dati all'utente e interazione con l'utente), semplifica la gestione dei dati (conservazione, aggiornamento, inserimento, modifica, recupero dei dati), semplifica la presentazione (reportistica).
In ogni caso non buttare via il lavoro fatto. Vedi se ti riesce la sincronizzazione manuale tra pc1 e pc2: in pratica devi fondere i dati provenienti dai due file e poi distribuire alle due postazioni il file risultante per poter ripartire con una nuova sessione di lavoro. Se puoi farlo a mano, puoi (quasi sempre) automatizzarlo.
di Vecchio Frac data: 20/08/2015 09:00:06
In alternativa ad Access: un file di testo condiviso, su cui entrambi i file scrivono le proprie tabelle dati e dal quale entrambi i file attingono, separatamente a intervalli regolari, per sincronizzarsi l'un l'altro.
di alexps81 data: 20/08/2015 09:42:20
Sinceramente non so cosa intendi e soprattutto cosa dovrei fare x modificare l'ELENCO TELEFONICO così come consigli.
Cmq in questi ultimi giorni ho consultato dei tutorual su YouTube di Access e devo dire che come prima impressione sembra più intuitivo di Excel.
Tu hai conoscenze di Access? Mi sapresti dire se l'ELENCO TELEFONICO realizzato in Excel così com'è, si può realizzare anche in Access? Con la compilazione del REGISTRO TELEFONATE con tutti quei pulsanti e che si stampa in pdf da solo a mezza notte e poi si svuota...più tutto il resto?
di Vecchio Frac data: 20/08/2015 12:00:07
cit. "non so cosa intendi"
---> Niente di speciale. Io farei due file Excel distribuiti su due pc. Entrambi lavorano per conto proprio. A una certa ora del giorno (o della notte) devono sincronizzarsi: perciò ognuno legge i dati dell'altro e li riversa in se stesso. Se i dati vengono letti direttamente dall'altro file o se vengono prima riversati in un file di testo o di Access non ha importanza.
La cosa cambia se tu vuoi che la sincronizzazione sia costante durante l'utilizzo diurno: se è importante che i due file abbiano la medesima situazione in ogni momento, questa attività di sincronizzazione potrebbe svolgersi poniamo ogni due minuti, e invece che far aprire a ogni Excel i dati dell'altro (cosa che rallenterebbe troppo il sistema), io farei riversare a ognuno in modo indipendente i propri dati in un file di testo; alla scadenza fissata ogni Excel controlla se il file di testo del collega contiene dati aggiornati e se è così li legge e li ingloba in se stesso. Le due basi dati sono così sempre aggiornate.
Problemi? tanti. Di rete, di connessione, di timing...
Access elimina alcuni di questi problemi perchè provvede alle operazioni di transazione (commit e rollback) in modo automatico.
cit. "Tu hai conoscenze di Access? "
---> LOL, alex... Access è il mio impegno quotidiano... Ho sviluppato un intero gestionale che non sto qui a dirti cosa fa ^_^
cit. " se l'ELENCO TELEFONICO realizzato in Excel così com'è, si può realizzare anche in Access?"
---> Sì e anche di più. E una volta che cominci non torni più indietro... però è meglio che fai qualche cosa di semplice per prendere confidenza con Access.
di alexps81 data: 20/08/2015 12:21:27
Si effettivamente i due file dovrebbero avere una sincronizzazione quasi istantanea. La cosa potrebbe essere interessante. Ma io non saprei proprio dove incominciare a fare questa cosa. Avrei bisogno di tutto l'aiuto possibile x vedere poi se il problema si risolve (tra l'altro imparerei una cosa nuova).
Cmq ho notato poi che realizzarlo con Access verrebbe anche più professionale.
Mi fa piacere che sei specializzato anche su Access. Sei moderatore anche di un altro forum x Access? Mi iscriverei subito così chiedo consigli anche lì.
Cmq una domanda su Access vorrei farla: esiste un modo x far sì che il database realizzato si auto adatta alle dimensioni delle schermo? Mi spiego meglio. Dato che un Db già lo abbiamo, ma se provo ad aprirlo su un altro Pc che ha uno schermo piccolo, la schermata del Db risulta più grande del dovuto. Non posso neanche aumentare i pixel dello schermo perché di più non posso.
Grazie
di Vecchio Frac data: 20/08/2015 13:26:33
cit. "i due file dovrebbero avere una sincronizzazione quasi istantanea"
---> Potrebbe avere un impatto sulle performances del programma ma è fattibile.
cit. "Sei moderatore anche di un altro forum x Access? "
---> No, io vivo solo su questo Forum :)
cit. "esiste un modo x far sì che il database realizzato si auto adatta alle dimensioni delle schermo?"
---> Domanda mal posta, il "database" è una raccolta di dati, il problema è la sua visualizzazione. Per "schermata del db" probabilmente intendi la porzione di schermo che Excel mostra all'utente (stai parlando di Excel no?).
Questo è un problema che affligge qualunque programmatore: adattare le dimensioni del programma alla risoluzione in uso. Di solito si fanno userform di media grandezza. nel caso di Excel si cerca di impostare uno zoom tale per cui si visualizzino le righe e le colonne importanti.
Esiste comunque la possibilità di ricavare l'informazione sulla risoluzione attuale dello schermo; sulla base dell'informazione si possono adattare le dimensioni delle finestre, ma è di solito poco praticabile perchè si dovrebbero costruire tante userform quante sono le risoluzioni possibili. Nel caso di Excel si potrebbe agire adattando lo zoom a una percentuale legata alla risoluzione dello schermo. Nel caso di Access invece è meglio pensare allo schermo più piccolo disponibile e costruire le maschere come se tutti i monitor fossero così.
di alexps81 data: 20/08/2015 13:35:00
X l'adattamento del Db intendo con Access. Dunque se varia lo schermo dovrei modificare il programma in base alle dimensioni del nuovo schermo?
di Vecchio Frac data: 20/08/2015 15:03:05
Al variare della grandezza del monitor (17" - 19" - 21" ecc.) ovviamente varia l'area visibile. L'area è influenzata anche dal rapporto tra base e altezza (monitor quadrati e monitor wide espongono aree diverse).L'abilità del programmatore sta nel mostrare le funzionalità principali nell'area che più probabilmente l'utente è in grado di visualizzare sullo schermo in uso.
Access lavora integralmente con maschere (le userforms di Excel ora le chiamerai maschere o Forms) per presentare e manipolare i dati. La loro posizione e altezza/larghezza sono facilmente impostabili da codice e possono essere adattate alla grandezza dello schermo.
di alexps81 data: 23/08/2015 16:05:38
Ciao Vecchio Frac scusa se utilizzo il forum per richieste non legate ad excel, ma è l'unico modo che ho x comunicare con te.
Mi dispiace disturbarti ma sono spinto dalla necessità di realizzare quel famoso database ELENCO TELEFONICO in Access. Dato le tue capacità e la tua sempre cordialità nel rispondere ad ogni mia richiesta, volevo sapere se sei disponibile a darmi una piccola mano. Tramite dei tutorial e suggerimenti da parte di qualche amico, sono riuscito a creare già tante cose. Mi manca ovviamente la parte legata alla compilazione del REGISTRO TELEFONATE.
Ti andrebbe di scambiarci le email così che io possa inviarti il lavoro che ho fatto così gli dai uno sguardo?
Grazie
di Vecchio Frac data: 23/08/2015 20:52:20
cit. "ma è l'unico modo che ho x comunicare con te. "
---> Non è vero, ed è scritto pure nelle nostre "regole di utilizzo": scrivimi pure a staff@excelvba.it e ti darò una mano volentieri, per quello che posso fare.
Vuoi Approfondire?