Visualizzazione dei risultati da 1 a 10 su 10
  1. #1
    Utente di HTML.it L'avatar di tony83
    Registrato dal
    Feb 2005
    Messaggi
    3,179

    <VB.NET> Connessioni su access con db già aperto e tabelle in uso

    Riapro la discussione sperando che questa volta vada a buon fine..

    Come da titolo vorrei sapere qual'è il modo migliore per lavorare su un db access in vb.net, sapendo che questo db viene spesso lasciato aperto e ci lavorano più persone sopra, al fine di evitare possibili errori o malfunzionamenti del programma quando la connessione è aperta e sto effettuando delle query anche piuttosto lunghe e pesanti da codice!!


    Grazie anticipatamente e...... Speriamo bene
    Tony

  2. #2
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,472
    Il modo migliore per fare query sul DB è...fare query sul DB.

    Dalla tua domanda non si capisce qual è il problema che riscontri.

    Cosa temi di preciso?
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

    Home | Blog | Delphi Podcast | Twitch | Altro...

  3. #3
    Utente di HTML.it L'avatar di tony83
    Registrato dal
    Feb 2005
    Messaggi
    3,179
    Originariamente inviato da alka
    Il modo migliore per fare query sul DB è...fare query sul DB.

    Dalla tua domanda non si capisce qual è il problema che riscontri.

    Cosa temi di preciso?
    temo che il programma caschi in errore ogni volta che effettua una query sun in db già aperto da qualcuno o cmq la tabella è già in uso!!

    Se una persona apre il db per fare delle eventuali modifiche o cmq per leggere il contenuto della tabella e contemporanemante io lancio il programma che effettua una query sulla medesima tabella credo che lanci un'errore in esecuzione!!

    Qual'è il modo migliore per affrontare il problema???

    Se facendo query sul db risolve il mio allora mi studierò come funzionano le stored procedure che sinceramente non ho mai fatto!!

    Grazie ciao..
    Tony

  4. #4
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,472
    Originariamente inviato da tony83
    temo che il programma caschi in errore ogni volta che effettua una query sun in db già aperto da qualcuno o cmq la tabella è già in uso!!
    Temi, credi, ... prova e verifica se questo accade.

    Aprendo il database NON in modalità esclusiva, non si preclude con un aggiornamento l'operazione simultanea di reperimento dei dati.

    E' chiaro che, trattandosi di un database di tipo "file based", non client/server, quando si aggiorna un record, questo appare bloccato ad eventuali modifiche da parte di altri utenti.

    Per risolvere il problema, si dovrebbe fare uso di transazioni (non supportate dal DB, ma dalla piattaforma OLE DB di accesso ai dati) oppure definire il criterio di gestione delle collisioni in fase di aggiornamento della base dati.

    Ritengo comunque Access abbastanza inadatto a problematiche di multiutenza e affidabilità.

    Ciao!
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

    Home | Blog | Delphi Podcast | Twitch | Altro...

  5. #5
    Utente di HTML.it L'avatar di tony83
    Registrato dal
    Feb 2005
    Messaggi
    3,179
    Originariamente inviato da alka
    Temi, credi, ... prova e verifica se questo accade.

    Aprendo il database NON in modalità esclusiva, non si preclude con un aggiornamento l'operazione simultanea di reperimento dei dati.

    E' chiaro che, trattandosi di un database di tipo "file based", non client/server, quando si aggiorna un record, questo appare bloccato ad eventuali modifiche da parte di altri utenti.

    Per risolvere il problema, si dovrebbe fare uso di transazioni (non supportate dal DB, ma dalla piattaforma OLE DB di accesso ai dati) oppure definire il criterio di gestione delle collisioni in fase di aggiornamento della base dati.

    Ritengo comunque Access abbastanza inadatto a problematiche di multiutenza e affidabilità.

    Ciao!
    Intendi dire le classiche commit che uso in vb.net???
    Tony

  6. #6
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,472
    Originariamente inviato da tony83
    Intendi dire le classiche commit che uso in vb.net???
    Non è di VB.NET che stiamo parlando? :master:
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

    Home | Blog | Delphi Podcast | Twitch | Altro...

  7. #7
    Utente di HTML.it L'avatar di tony83
    Registrato dal
    Feb 2005
    Messaggi
    3,179
    Originariamente inviato da alka
    Non è di VB.NET che stiamo parlando? :master:
    SI SI VB.NET!!! quindi basta che uso le classiche transazioni e ho risolto!!

    effettuo le commit e si riaggiornano i dati senza problemi senza problemi di più connessioni o tabelle cmq aperte!!

    giusto??
    Tony

  8. #8
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,472
    Originariamente inviato da tony83
    effettuo le commit e si riaggiornano i dati senza problemi senza problemi di più connessioni o tabelle cmq aperte!!
    Le transazioni non risolvono il problema, ma sono solamente un modo per evitare che altri utenti vedano dati inconsistenti, magari frutto di parziali elaborazioni di record, elaborazioni che fanno parte di un'unica "transazione logica" e ci lavorino sopra.

    Questo non preclude tuttavia la necessità di effettuare dei controlli.

    Ad esempio, è possibile che due utenti ottenga un record specifico ed inizino a lavorarci sopra, tentando successivamente di aggiornare ciascuno un diverso campo rispetto ad un altro.

    La classe DataSet e la controparte XXXDataAdapter che gestisce l'applicazione delle modifiche dovrebbero fornire le proprietà e i metodi necessari per controllare queste situazioni, verificare le collisioni, generare gli opportuni eventi risolutivi e procedere con il corretto aggiornamento del record.

    Io purtroppo non faccio un uso assiduo di queste classi, quindi dovrei leggere la documentazione per ricordarmi i metodi e le proprietà relative; sono abituato a gestire queste problematiche in Delphi usando classi analoghe ma appartenenti ad una diversa libreria. In sostanza, valgono i concetti ma diversi sono gli strumenti.

    Per altre informazioni, fai anche eventualmente riferimento alla documentazione MSDN per le classi citate.

    Ciao!
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

    Home | Blog | Delphi Podcast | Twitch | Altro...

  9. #9
    Utente di HTML.it L'avatar di tony83
    Registrato dal
    Feb 2005
    Messaggi
    3,179
    Originariamente inviato da alka
    Le transazioni non risolvono il problema, ma sono solamente un modo per evitare che altri utenti vedano dati inconsistenti, magari frutto di parziali elaborazioni di record, elaborazioni che fanno parte di un'unica "transazione logica" e ci lavorino sopra.

    Questo non preclude tuttavia la necessità di effettuare dei controlli.

    Ad esempio, è possibile che due utenti ottenga un record specifico ed inizino a lavorarci sopra, tentando successivamente di aggiornare ciascuno un diverso campo rispetto ad un altro.

    La classe DataSet e la controparte XXXDataAdapter che gestisce l'applicazione delle modifiche dovrebbero fornire le proprietà e i metodi necessari per controllare queste situazioni, verificare le collisioni, generare gli opportuni eventi risolutivi e procedere con il corretto aggiornamento del record.

    Io purtroppo non faccio un uso assiduo di queste classi, quindi dovrei leggere la documentazione per ricordarmi i metodi e le proprietà relative; sono abituato a gestire queste problematiche in Delphi usando classi analoghe ma appartenenti ad una diversa libreria. In sostanza, valgono i concetti ma diversi sono gli strumenti.

    Per altre informazioni, fai anche eventualmente riferimento alla documentazione MSDN per le classi citate.

    Ciao!
    Riassumendo:

    Con le transazioni evito che gli altri utenti vedono dati elaborati a metà

    Con i dataset posso controllare meglio situazione come quelle da me citate!!

    Ok ti ringrazio... io non ho molta esperienza ancora, non ho mai usato i dataset ma li prenderò in considerazione per controllare meglio questa situazione....

    Perfetto ti ringrazio per le preziose informazioni!! ciao


    Tony

  10. #10
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,472
    Originariamente inviato da tony83
    Ok ti ringrazio... io non ho molta esperienza ancora, non ho mai usato i dataset ma li prenderò in considerazione per controllare meglio questa situazione....
    Eventualmente, fai dei prototipi di applicazioni, oppure effettua delle simulazioni: apri due istanze della tua applicazione e modifica i dati creando le situazioni da gestire per verificare come si comporta.

    Ciao!
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

    Home | Blog | Delphi Podcast | Twitch | Altro...

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.