Applicativo Access-MySql partito

di il
44 risposte

44 Risposte - Pagina 3

  • Re: Applicativo Access-MySql partito

    11/02/2025 - Catafirro ha scritto:

    Hai intuito giusto. Ci sono varie subform contenenti i dettagli...

    Bene, direi che hai emulato esattamente quello che facevo ai tempi del Cobol e dell' IMS (s.o. IBM) ... forse per questo che a me è molto chiaro il tuo approccio.

    Io l'ho realizzato in maniera simile : 

    - form principale di selezione con costruzione dinamica di querty PT per recuperare i records che soddisfano il filtro

    - sul record selezionato apertura della maschera master con subforms che però sono legati al backend tramite linked table con associazione alle maschere effettuata da codice per poter gestire la transazione sul pulsante Aggiorna o Annulla

    La vera differenza tra il tuo e il mio approccio è che con il tuo lavori in locale MA non blocchi i records e poi devi gestirti gli eventuali conflitti di update mentre nel mio approccio essendo collegato al server potenzialmente blocco i records ma la gestione degli update è demandata ad access (ma comunque avendo anche dei trigger nel b.e. non è stato tutto semplice, con il senno del poi il tuo approccio probabilmente mi avrebbe dato meno rogne)

  • Re: Applicativo Access-MySql partito

    11/02/2025 - max.riservo ha scritto:

    11/02/2025 - Catafirro ha scritto:

    Hai intuito giusto. Ci sono varie subform contenenti i dettagli...

    Bene, direi che hai emulato esattamente quello che facevo ai tempi del Cobol e dell' IMS (s.o. IBM) ... forse per questo che a me è molto chiaro il tuo approccio.

    Io l'ho realizzato in maniera simile : 

    - form principale di selezione con costruzione dinamica di querty PT per recuperare i records che soddisfano il filtro

    - sul record selezionato apertura della maschera master con subforms che però sono legati al backend tramite linked table con associazione alle maschere effettuata da codice per poter gestire la transazione sul pulsante Aggiorna o Annulla

    La vera differenza tra il tuo e il mio approccio è che con il tuo lavori in locale MA non blocchi i records e poi devi gestirti gli eventuali conflitti di update mentre nel mio approccio essendo collegato al server potenzialmente blocco i records ma la gestione degli update è demandata ad access (ma comunque avendo anche dei trigger nel b.e. non è stato tutto semplice, con il senno del poi il tuo approccio probabilmente mi avrebbe dato meno rogne)

    Mi fa piacere che ci siamo intesi. Access è uno strumento a tante facce, se si vuole spingere verso qualcosa per la quale non è stato progettato bisogna usare soluzioni non ortodosse. . 

  • Re: Applicativo Access-MySql partito

    Ah capisco, quindi alcune form sono collegate a delle query pt

    Quando vuoi modificare una riga, carichi dal db centrale il record incriminato e lo metti nella tabella fisica locale, che alimenta la form di modifica/visualizzazione

    Se tocchi qualcosa a video, o se vengono eseguite modifiche da codice, poi quando vuoi salvare mandi tutto il record presente in tabella locale verso il db centrale

    E ritorna il quesito iniziale, qual'e' l'utilita' della tabella locale? Perche' non carichi tutto solamente a video? Oppure su un recordset ado in ram, collegato alla form?

    Spero porterai pazienza per l'insistenza, ma non riesco ancora a capire l'utilita' delle tabelle fisiche sui client

    -

    "..spingere verso qualcosa per la quale non è stato progettato.."  

    a che operazione ti riferisci esattamente?

  • Re: Applicativo Access-MySql partito

    12/02/2025 - amorosik ha scritto:

    Ah capisco, quindi alcune form sono collegate a delle query pt

    Quando vuoi modificare una riga, carichi dal db centrale il record incriminato e lo metti nella tabella fisica locale, che alimenta la form di modifica/visualizzazione

    Se tocchi qualcosa a video, o se vengono eseguite modifiche da codice, poi quando vuoi salvare mandi tutto il record presente in tabella locale verso il db centrale

    E ritorna il quesito iniziale, qual'e' l'utilita' della tabella locale? Perche' non carichi tutto solamente a video? Oppure su un recordset ado in ram, collegato alla form?

    Spero porterai pazienza per l'insistenza, ma non riesco ancora a capire l'utilita' delle tabelle fisiche sui client

    -

    "..spingere verso qualcosa per la quale non è stato progettato.."  

    a che operazione ti riferisci esattamente?

    Con l'associazione di una tabella locale alla form non faccio altro che assecondare la natura di Access. Avrei potuto ottenere un risultato simile associando un recordset ADO (non la tabella remota, che non linko), ma durante il disegno non avrei potuto usufruire del vantaggio dei campi connessi, e durante il debug non avrei potuto consultare in modo semplice le tabelle sottostanti. Devi pensare al caso complesso di una tabella testata più varie tabelle dettagli, In molti casi, prima dello scaricamento dei dati modificati su server, è necessaria una loro elaborazione da codice. Questa è facilitata dal fatto che il codice può operare su tabelle fisiche, con maggior comodità e sicurezza. 

    Access è stato progettato per un uso amatoriale, poi via via è stato arricchito. La gestione delle tabelle remote linkate funziona bene quando sono anch'esse del tipo Access, ma ci sono limitazioni quando sono di altro tipo. Ricordo ai tempi la connessione a tabelle DBF, molto lenta, che mi pare, ma potrei sbagliarmi, non usava gli indici. Ma il vero problema delle tabelle linkate si ha con i classici db client-server, come SqlServer o MySql, poiché la gestione a carico del server non viene sfruttata. Se fai una query con WHERE e JOIN contenente tabelle linkate, i dati di tutte le tabelle remote coinvolte vengono caricate in locale dove è access che risolve where e join, con scadimento drammatico delle prestazioni al crescere del numero dei record coinvolti,

    In lettura il rimedio può essere quello di query pass-through o di query definite su server e linkate come fossero una tabella. Io ho adottato la prima soluzione per la sua flessibilità, visto che posso giocare con le stringhe sql. In entrambi i casi where e join vengono risolti dal server, che manda solo i record risultanti. Oppure si possono usare i recordset ADO, che fanno lo stesso lavoro. I recordset ADO sono da usarsi anche in scrittura, con parecchi vantaggi rispetto a recordset DAO su tabelle linkate. Uno è un miglior uso delle transazioni, che vengono gestite dal server tramite la connessione.

    Mi sono dilungato a beneficio di chi conosce poco Access.  

  • Re: Applicativo Access-MySql partito

    12/02/2025 - Catafirro ha scritto:

    12/02/2025 - amorosik ha scritto:

    Ah capisco, quindi alcune form sono collegate a delle query pt

    Quando vuoi modificare una riga, carichi dal db centrale il record incriminato e lo metti nella tabella fisica locale, che alimenta la form di modifica/visualizzazione

    Se tocchi qualcosa a video, o se vengono eseguite modifiche da codice, poi quando vuoi salvare mandi tutto il record presente in tabella locale verso il db centrale

    E ritorna il quesito iniziale, qual'e' l'utilita' della tabella locale? Perche' non carichi tutto solamente a video? Oppure su un recordset ado in ram, collegato alla form?

    Spero porterai pazienza per l'insistenza, ma non riesco ancora a capire l'utilita' delle tabelle fisiche sui client

    -

    "..spingere verso qualcosa per la quale non è stato progettato.."  

    a che operazione ti riferisci esattamente?

    Con l'associazione di una tabella locale alla form non faccio altro che assecondare la natura di Access. Avrei potuto ottenere un risultato simile associando un recordset ADO (non la tabella remota, che non linko), ma durante il disegno non avrei potuto usufruire del vantaggio dei campi connessi, e durante il debug non avrei potuto consultare in modo semplice le tabelle sottostanti. Devi pensare al caso complesso di una tabella testata più varie tabelle dettagli, In molti casi, prima dello scaricamento dei dati modificati su server, è necessaria una loro elaborazione da codice. Questa è facilitata dal fatto che il codice può operare su tabelle fisiche, con maggior comodità e sicurezza. 

    Access è stato progettato per un uso amatoriale, poi via via è stato arricchito. La gestione delle tabelle remote linkate funziona bene quando sono anch'esse del tipo Access, ma ci sono limitazioni quando sono di altro tipo. Ricordo ai tempi la connessione a tabelle DBF, molto lenta, che mi pare, ma potrei sbagliarmi, non usava gli indici. Ma il vero problema delle tabelle linkate si ha con i classici db client-server, come SqlServer o MySql, poiché la gestione a carico del server non viene sfruttata. Se fai una query con WHERE e JOIN contenente tabelle linkate, i dati di tutte le tabelle remote coinvolte vengono caricate in locale dove è access che risolve where e join, con scadimento drammatico delle prestazioni al crescere del numero dei record coinvolti,

    In lettura il rimedio può essere quello di query pass-through o di query definite su server e linkate come fossero una tabella. Io ho adottato la prima soluzione per la sua flessibilità, visto che posso giocare con le stringhe sql. In entrambi i casi where e join vengono risolti dal server, che manda solo i record risultanti. Oppure si possono usare i recordset ADO, che fanno lo stesso lavoro. I recordset ADO sono da usarsi anche in scrittura, con parecchi vantaggi rispetto a recordset DAO su tabelle linkate. Uno è un miglior uso delle transazioni, che vengono gestite dal server tramite la connessione.

    Mi sono dilungato a beneficio di chi conosce poco Access.  

    "..ma durante il disegno non avrei potuto usufruire del vantaggio dei campi connessi,.."

    Durante la fase di progettazione basta collegarsi alle tabelle db MySql, ed hai gli stessi identici vantaggi, non e' necessario avere tabelle locali

    Poi quando tutto e' definito e lo metti in produzione allora puoi tenere degli equivalenti recoset ado in memoria, avere dei doppioni (alcune db duplicate in locale contenenti dati che sono presenti sul db principale) mi sembra altamente rischioso

    .

    "..Questa è facilitata dal fatto che il codice può operare su tabelle fisiche, con maggior comodità e sicurezza.."

    Vedi sopra, durante la progettazione 'colleghi' a tabelle MySql, nell'uso reale colleghi a recordset Ado in ram

    .

    "..Se fai una query con WHERE e JOIN contenente tabelle linkate, i dati di tutte le tabelle remote coinvolte.."

    E' chiaro che se stai usando un db server remoto non e' mai consigliabile tirare su tutto sul client e poi far smazzare la query al motore locale, e' da suicidio se la dimensione dei dati coinvolti e' importante, in quel caso fai la tua bella query pt la mandi e tiri su solo il risultato, credo sia la norma quando si usa un db server remoto rispetto ai client 

    E' altrettanto chiaro che finora l'utilita' delle tabelle fisiche locali non si e' ancora vista, o meglio non la vedo io

    Mi sembra che tu stia tirando la discussione sugli ovvi vantaggi di una query complessa da inviare al db server, ma non e' questo il punto

    Il punto e' quale sia la reale necessita'/utilita' delle tabelle fisiche in locale

    .

    "..Mi sono dilungato a beneficio di chi conosce poco Access.."

    Certo, e personalmente ti ringrazio del tempo speso, come per tutti quelli che rispondono ai quesiti e cercano per quanto possibile di aiutare

    E dal mio punto di vista e' sempre molto utile confrontarsi al di fuori della propria 'parrocchia' per capire come operano altri sviluppatori sugli stessi strumenti che usi anche tu, ma devo dire che non condivido il modo di operare che hai descritto, mi sembra di violare uno dei comandamenti sostanziali del sistema informatico dove l'unicita' delle informazioni deve essere mantenuta con cura

  • Re: Applicativo Access-MySql partito

    Penso che alcune scelte dipendano dalle preferenze e dall'esperienza di ognuno. Ripeto, le tabelle locali mi danno maggior flessibilità consentendomi l'aggiunta di campi di comodo e il controllo dei record in caso di debug. In sostanza a codice fermo in un punto di interruzione posso consultarne i valori, cosa che con un recordset ADO non potrei fare in modo altrettanto semplice. Poi a me piace a livello di documentazione, poiché dentro il db access c'è tutto, anche la struttura del db remoto. Francamente svantaggi non ne vedo, forse perché io ho l'abitudine e non mi pesa la doppia definizione.   

  • Re: Applicativo Access-MySql partito

    "..alcune scelte dipendano dalle preferenze e dall'esperienza di ognuno.."

    Sicuramente approvo, per arrivare ad una certa destinazione le strade possono essere diverse

    Da come e' partito il post sembrava che questa modalita' di funzionamento fosse quella corretta, mettendo un implicito 'scorrette' a tutte le altre possibilita'

    Dal mio punto di vista questa modalita' di operare puo' essere piu' soggetta di altre ad errori causati dalla duplicazione in locale dei dati, e onestamente non riesco ad apprezzarne i vantaggi, e quindi non trovo giustificazione nel provare ad adottarla, le transazioni le hanno inventate apposta per rendere indivisibile una sequenza di operazioni, tutto sta ad utilizzarle nei momenti giusto e soprattutto lanciare, chiudere e ciao, se c'e' qualche conflitto te lo deve dire il fallimento della transazione, non la lettura pre-salvataggio che fai per capire se qualcuno ha aggiornato il record

  • Re: Applicativo Access-MySql partito

    Non mi pare di aver definito scorrette le gestioni diverse dalla mia, a me pare il contrario, ma in ogni caso penso che siamo tutti qui per imparare dagli altri con lo scopo di migliorare noi stessi, quindi non ha senso fare classifiche. A questo proposito, potresti spiegarmi meglio come hai impostato la tua gestione dell'accesso ai record in modifica da form, descrivendomi la sequenza di operazioni dal recupero del record al suo salvataggio, con annesse strutture dati che usi. Precisa anche come gestisci eventuali subform di dettagli.  Potrei imparare qualcosa.

  • Re: Applicativo Access-MySql partito

    11/02/2025 - max.riservo ha scritto:

    Purtroppo (per te) hai ragione io non ti batto : nel '73 ero agli inizi delle elementari ... e le schede perforate a fine anni 80 venivano usate da miei colleghi per altri scopi (poco informatici ma molto fumosi).

    Io invece nel '73 facevo il mio ingresso nelle aule distaccate di Scienze dell'Informazione, a Pisa, corso B. Eravamo mi pare in due o trecento tra baldi giovanotti e gentili signorine. Le schede perforate non ricordo venissero usate in quel modo, ricordo invece il classico biglietto del tram quando salii a Milano.    

  • Re: Applicativo Access-MySql partito

    13/02/2025 - Catafirro ha scritto:

    Le schede perforate non ricordo venissero usate in quel modo, ricordo invece il classico biglietto del tram quando salii a Milano.    

    A Milano sono sempre più avanti e fanno girare l'economia ; )  ..  a Torino si va al risparmio ; )

  • Re: Applicativo Access-MySql partito

    13/02/2025 - max.riservo ha scritto:

    A Milano sono sempre più avanti e fanno girare l'economia ; )  ..  a Torino si va al risparmio ; )

    ma se a Torino si va al risparmio ... allora a Genova cosa fanno??? ;-))

  • Re: Applicativo Access-MySql partito

    12/02/2025 - Catafirro ha scritto:

    Non mi pare di aver definito scorrette le gestioni diverse dalla mia, a me pare il contrario, ma in ogni caso penso che siamo tutti qui per imparare dagli altri con lo scopo di migliorare noi stessi, quindi non ha senso fare classifiche. A questo proposito, potresti spiegarmi meglio come hai impostato la tua gestione dell'accesso ai record in modifica da form, descrivendomi la sequenza di operazioni dal recupero del record al suo salvataggio, con annesse strutture dati che usi. Precisa anche come gestisci eventuali subform di dettagli.  Potrei imparare qualcosa.

    Comandamento 1 - i dati sono sempre univoci, duplicarli serve solo per limitare i danni in seguito a qualche catastrofe

    Comandamento 2 - se ci sono funzioni native dedicate a risolvere un certo problema, meglio usare quelle 

    Comandamento 3 - fai tutto quello che serve per completare il progetto nei tempi previsti e portare a casa la pagnotta

    Detto questo per la lettura dei dati da server a client credo non ci sia nessun problema, come nel tuo caso la lettura puo' avvenire all'interno di un recordset ado che poi alimenta le form/liste/combo che serve, e quindi scorri avanti indietro destra sinistra, tutto sta a non tirar su miliardi di righe altrimenti l'impegno nel trasferire i dati diventa troppo importante

    Quando devi modificare qualcosa leggi dal recordse che hai sotto, caricato all'avvio della form o dopo modifiche della selezione corrente, e ti porti le informazioni a video (o su variabili locali o su classe dedicata), e modifichi o elabori quel che vuoi, essendo tutto in ram, le prestazioni sono il massimo ottenibile dal macchinario che stai usando

    Poi, se vuoi, vai a  bere una Fanta l'aranciata d'arancia e poi torni

    Quando devi salvare a db centrale,  schiacci il tasto SALVA, prendi i dati che hai a video (o su variabii locali o su classe dedicata o su recordset ado in memoria), e tenti la modifica/inserimento/eliminazione sparando la query verso il db, il tutto racchiuso all'interno di una transazione

    Se la transazione fallisce vuol dire che qualcuno ha cambiato qualcosa prima di te (potrebbe essere che il record che tenti di aggiornare non c'e' piu') e qua sara' da fare una gestione efficace di cosa potrebbe essere successo e soprattutto cosa vuoi fare adesso (visualizzare ad operatore e consentire scelta, oppure ritentare x volte la stessa operazione senza far vedere niente all'utonto di fronte al video, oppure...)

    E' la gestione del fallimento transazione il nodo cruciale di tutto il processo, non la verifica prima e la scrittura successiva dei dati se la verifica e' andata a buon fine, e' il db server che deve avvertirti che qualcosa e' andato storto in quelle operazioni

    "..Potrei imparare qualcosa.."  abbi pazienza ma non mi sembra l'atteggiamento giusto per confrontarsi su argomenti che cambiano rapidissimamente specie in questi ultimi anni (vedi l'arrivo dei sistemi no-sql o sistemi in ram come Redis o simili), sembra ti consideri "gia' imparato", capisco l'eta' capisco l'esperienza, e probabilmente prima dell'arrivo del Begin Transaction si lavorava cosi, ma mi sembra che ti sia arroccato in una metodologia di lavoro che non sfrutta la tecnologia disponibile, come dire mi prendo una Trabant perche' cosi' la riparo col cacciavite e martello, si e' vero, ma un'auto moderna e' probabile che non serva ripararla se non in casi eccezionali

  • Re: Applicativo Access-MySql partito

    Sì, però abbi pazienza, hai sempre questo tono polemico che non mi piace per nulla. Ti ho chiesto di illustrarmi il tuo metodo, come io ho fatto con il mio, e tu non lo fai e continui a fare il maestrino. Questo è un forum tecnico, mi pare del tutto fuori luogo una tenzone su chi è più bravo. Io la chiudo qui. Saluti.

  • Re: Applicativo Access-MySql partito

    14/02/2025 - amorosik ha scritto:

    ....

    "..Potrei imparare qualcosa.."  abbi pazienza ma non mi sembra l'atteggiamento giusto per confrontarsi su argomenti che cambiano rapidissimamente specie in questi ultimi anni (vedi l'arrivo dei sistemi no-sql o sistemi in ram come Redis o simili), sembra ti consideri "gia' imparato", capisco l'eta' capisco l'esperienza, e probabilmente prima dell'arrivo del Begin Transaction si lavorava cosi, ma mi sembra che ti sia arroccato in una metodologia di lavoro che non sfrutta la tecnologia disponibile, come dire mi prendo una Trabant perche' cosi' la riparo col cacciavite e martello, si e' vero, ma un'auto moderna e' probabile che non serva ripararla se non in casi eccezionali

    Questo è parso anche a me già del precedente 3D tuttavia, non penso sia possibile insistere per convincere...

    14/02/2025 - Catafirro ha scritto:

    Sì, però abbi pazienza, hai sempre questo tono polemico che non mi piace per nulla. Ti ho chiesto di illustrarmi il tuo metodo, come io ho fatto con il mio, e tu non lo fai e continui a fare il maestrino. Questo è un forum tecnico, mi pare del tutto fuori luogo una tenzone su chi è più bravo. Io la chiudo qui. Saluti.

    Eviterei proprio questi approcci... a prescindere... io sono over anta... e non leggo volentieri queste cose.

    A livello tecnico, ho già espresso anch'io le mie perplessità, ma non insisto, proverei però a suggerire di analizzare i metodi introdotti in modo più strutturato da C# per la gestione dei dati con la tecnica DAL... chiaramente serve studiarlo.

    https://learn.microsoft.com/it-it/aspnet/web-forms/overview/data-access/introduction/creating-a-data-access-layer-cs

    Con Access non è tutto semplice come C#, che crea le classi di interfaccia, ma la tecnica rappresenta un po un mix tra quello che suggerisce "Amorsik" e che anche per me è una tecnica consolidata, e l'idea di lavorare con dati non connessi, limitando al minimo le interazioni di rete... tuttavia è un qualcosa di strutturale che con Access richiede essere sviluppato CUSTOM e non so se il gioco valga la candela.

    Io avevo provato una tecnica di Collegamento/Scollegamento non tanto del DataSource, quanto del ControlSource, il che equivale a lavorare in modo UNBOUND... insomma...

    Detto questo, non proseguo, siamo tutti "tecnicamente" sufficientemente competenti per leggerci e studiare eventuali opzioni, se si ha voglia, o proseguire con le nostre tecniche, senza fare a gara, nessuno ha la soluzione in tasca e nessuno ha inventato nulla.

    Chiuderei qui.

  • Re: Applicativo Access-MySql partito

    Chiudo il thread

Devi accedere o registrarti per scrivere nel forum
44 risposte