Acquista i nostri libri consigliati su Amazon.it
+ Rispondi al messaggio
Visualizzazione dei risultati da 1 a 3 su 3

Access SQL Server Transazione con blocco tabella

  1. #1
    ByD
    ByD non è in linea Scolaretto
    Salve a tutti,
    vi espongo il mio problema:
    ho 4 postazioni Access 2010 connesse ad un database su SQL server 2008...
    Una tabella del database viene popolata da un'altra applicazione con nuovi dati....
    All'apertura di una maschera delle 4 postazioni access si attiva un timer che ogni n secondi:
    Importa i record su una tabella in locale della propria postazione e poi svuota la tabella sul server...
    Ho inserito l'importazione dei record e la loro eliminazione in una transazione ..
    Tutto funziona a meraviglia se non per il fatto che la transazione non blocca la tabella e se l'operazione viene attivata dal timer contemporaneamente su due o + postazioni ho una doppia o tripla importazione creando così dei successivi duplicati

    questo è il codice della transazione:
    Private Function EffettuaTransazione() As Boolean
    '**** Effettua l'importazione e pulizia della tabella sul server
    On Error GoTo PROC_ERR
        Dim Area As DAO.Workspace
        Dim vImportaDati As M_Base_QueryLocali
        Dim qdf As DAO.QueryDef
        Dim strSQL As String
    
        Set Area = CreateWorkspace("NuovaArea", "admin", "", dbUseJet)
        Workspaces.Append Area
        Area.BeginTrans
            Set vImportaDati = New M_Base_QueryLocali
            'importa i dati dalla tabella del server
            vImportaDati.EseguiComando "q_Importazione_DatiStarFleetInLocale"
            'pulisce la tabella sul server 
            Set qdf = CurrentDb.QueryDefs("p_Importazione_PulisciTab_DatiStarFleet")
            strSQL = "DELETE FROM  dbo.tbl_ALD_DatiStarfleet_DRV"
            qdf.SQL = strSQL
            qdf.ReturnsRecords = False
            qdf.Execute dbSeeChanges + dbFailOnError
            EffettuaTransazione = True
        Area.CommitTrans
    PROC_USCITA:
        Set vImportaDati = Nothing
        Set qdf = Nothing
        Area.Close
        Exit Function
    PROC_ERR:
        MessaggioDiErrore Me.Name, "EffettuaTransazione", Err.Number, Err.Description
        Area.Rollback
        Resume PROC_USCITA
    End Function
    
    Grazie anticipatamente per l'aiuto

  2. #2
    Luca69 non è in linea Scolaretto
    Lungi da me l'idea di fornirti la soluzione , non ho la competenza.
    Tuttavia, essendo specializzato in "tacconi" (strano, "patch" ha un che di professionale ) forse potrei darti un' ispirazione.
    Se non riesci/puoi/sai usare il blocco tabella potresti fartene uno.
    Metti in tabella un flag da controllare prima di scrivere.
    se non ci sono record con il flag settato , lo setti (ne basta 1) , fai quello che devi fare e lo resetti.
    else ... la funzione non fa altro , tanto il timer la richiamerà tra qualche secondo.
    Non sarà a prova di bomba ma per 4 postazioni lo si può considerare tale.

    Oppure fai importare la tabella dal server dalla postazione 1, la 2 la importa dalla 1, la 3 dalla 2 e la 4 dalla 3, and so on ...
    (brutto)

    buona fortuna !
    Ultima modifica di Luca69; 10-07-2013 15:10 

  3. #3
    ByD
    ByD non è in linea Scolaretto
    Ciao Luca,
    grazie per la risposta .... come soluzione ho risolto con il "fai da me".... in un modo molto simile a quello da te gentilmente suggerito. Infatti ho inserito un campo stringa nel quale ogni postazione prima di operare inserisce la propria firma (es.p1 o p2 ecc), in questo modo le operazioni di importazione e pulitura vengono effettuate solo sui record con la propria firma.
    Bene, tutto ciò funziona, ma non appaga la mia curiosità infatti non ho ancora capito se con gli strumenti nativi di Access/SQLServer questo problema è risolvibile.
    Comunque ti ringrazio per avermi risposto....

+ Rispondi al messaggio

Potrebbero interessarti anche ...

  1. Aggiornamento tabella Access da Sql Server
    Da sal21 nel forum Microsoft Access
    Risposte: 4
    Ultimo Post: 06-05-2016, 19:47
  2. Risposte: 9
    Ultimo Post: 15-06-2012, 13:37
  3. Risposte: 4
    Ultimo Post: 07-06-2012, 13:16
  4. Risposte: 4
    Ultimo Post: 10-06-2010, 14:52
  5. link a Tabella sql server e access
    Da sal21 nel forum Microsoft Access
    Risposte: 6
    Ultimo Post: 08-05-2010, 18:34