Newsgroup: it.comp.appl.access
Titolo: MaxLocksPerFile (Access runtime)

sul vecchio pc di sviluppo con windows 7 e access 2010 funziona 
egregiamente con i valori predefiniti 
 
sul pc con windows 10, office 2019 e access runtime 2016 non c'è verso
 
<
https://docs.microsoft.com/en-us/office/troubleshoot/access/file-sharing-
 
lock-count-exceeded>
 
ho portato il valore fino a 500.000 senza esito
 
c'è qualche altro trucco che ancora posso provare?
 
-- 
/-\ /\/\ /\/\ /-\ /\/\ /\/\ /-\ T /-\
-=- -=- -=- -=- -=- -=- -=- -=- - -=-
........... [ al lavoro ] ...........

 lock-count-exceeded>
 
 
Ma concretamente per quale ragione hai necessità di modificare quel parametro?
 
Saluti

 
 
errata corrige
 
sul windows 7 lo avevo aumentato a 20.000 per ovviare all'errore 3052
 
sul windows 10, come scritto, son salito fino a 500.000 senza successo
 
nota bene: ci sono diverse idee sul web su dove intervenire nel registro 
per aumentarlo in quanto, di versione in versione, dal 32 al 64 bit, etc 
etc le cose cambiano
 
ho seminato MaxLocksPerFile in almeno una dozzina di posti, seguendo di 
volta in volta le indicazioni trovate sul web, ma a quanto pare ognuno dice 
la sua e questa sua non è la mia :/


 la sua e questa sua non è la mia :/
 
 
 
Ok, ma che tipo di problema cerchi d'aggirare modificando quell'impostazione?
E' un segreto?
 
Saluti.

Il giorno lunedì 27 luglio 2020 13:33:41 UTC+2, Ammammata ha scritto:

Aumentare la voce di registro MaxLocksPerFile.
significa che ha fatto una query in cui il numero di record in Join è maggiore del valore indicato nella seguente chiave di registro
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Jet\4.0\Engines\Jet 4.0
Nel riquadro destro dell'editor del Registro di sistema fare doppio clic su MaxLocksPerFile.
Nella finestra di dialogo Modifica valore DWORD scegliere Decimale.
Modificare il valore della casella Dati valore come desiderato e quindi scegliere OK
VEDI 
https://support.microsoft.com/it-it/help/815281/file-sharing-lock-count-exceeded-error-message-during-large-transactio
 
 
in caso di windows 64 bit ma jet 32 bit 
HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Jet\4.0\Engines\Jet 4.0 la chiave MaxLocksPerFile.
Nella finestra di dialogo Modifica valore DWORD scegliere Decimale. 20000

 
 
no, ci mancherebbe
 
la procedura elabora una tabella OC_PRODU_TMP con circa 20mila record, 
andando a cercare su un'altra tabella "VP-SAP Product Type" il codice 
"alternativo", se esiste, e sostituendolo a quello esistente dopo averlo 
opportunamente formattato
 
durante l'elaborazione, poco dopo il novemillesimo record, si pianta con 
l'errore 3052
 
e non capisco perché
 
 
 
 
PRD.MoveFirst
While Not PRD.EOF
 
    CRI = "[VP] = '" & PRD![A00002] & "'"
    TPR.FindFirst [CRI]
    If Not (TPR.NoMatch) Then
 
        PRD.Edit
        PRD![A00002] = Format(TPR![SAP], "0000")
        PRD.Update
        j = j + 1
 
    Else
    'Messaggio ("- " & Time() & " Product type OC_PRODU_TMP " & CRI)
    End If
 
    i = i + 1
 
    PRD.MoveNext
    If i Mod 100 = 0 Then SysCmd acSysCmdSetStatus, "Product type 
OC_PRODU_TMP : " & Format(i, "#,##0") & " / " & Format(j, "#,##0") & " / " 
& Format(TotR, "#,##0")
 
Wend


Hai provato ad inserire la modifica in una transazione...?
 
@Alex

 e non capisco perché
 
 
Concordo.
 
Personalmente non ho mai tratto vantaggio dalla modifica dei parametri di JET, per le ragioni che hai valutato anche tu. 
Va detto che mantengo solo vecchie applicazioni con BE .mdb (e quindi sono arrugginito sul vecchio formato) ma un errore del genere in uno scenario così semplice non è chiaro.
Immagino tu utilizzi versioni recenti di Access con Database .AccDB ... potresti verificare se tale situazione si verifica con un vecchio AXP o 2003? (ne dubito).
 
Cambia qualcosa se elimini syscmd acSysCmdSetStatus? (creava problemi in un lontano passato).
Prova a intercettare l'errore 3052 imponendo un brutale RESUME: l'applicazione va in loop o invece prosegue fino alla fine del ciclo?
 
Saluti.
 
 

 
Dimenticavo: il problema si verifica solo con Access Runtime? 
 
Che versione?
 
Saluti
 

 
 
un grazie a tutti per cominciare
 
stanotte ci ho pensato su, vista la semplicità (apparente) dell'operazione 
proverò a sostituire il codice VBA con una query di aggiornamento o un 
comando diretto SQL, "per vedere che effetto che fa" (cit.)


 comando diretto SQL, "per vedere che effetto che fa" (cit.)
 
 
 
Ok, ma non pensare solo a te stesso: potrebbe essere un'anomalia del prodotto (che versione? Solo con Access Runtime o pure full?) potenzialmente di pubblico interesse.
Quindi, facci sapere di più sulla release che utilizzi, e prova la forzatura su errore 3052.
 
Saluti
 

 aggiornamento 
 
ecco qua: l'ho messa in pista un paio di settimane fa, funziona
 
UPDATE OC_PRODU_TMP 
 
LEFT JOIN [VP-SAP Product Type] ON OC_PRODU_TMP.a00002 = [VP-SAP Product 
Type].VP 
 
SET OC_PRODU_TMP.a00002 = Format([SAP],"0000")
 
WHERE ((([VP-SAP Product Type].SAP) Is Not Null));
 
 
 
Adesso il nuovo problema è che la connessione ODBC tra access e sap non è 
molto stabile quando si esegue il programma con il collegamento in VPN, ma 
questa è un'altra storia


 WHERE ((([VP-SAP Product Type].SAP) Is Not Null)); 
 
 
E quando dovrai scrivere una routine d'aggiornamento troppo complessa e/o macchinosa per essere affrontata con queries update cosa farai?
 
Saluti
 
 

 
 
il programma in questione è stato scritto nel 1998, ci sono parti di esso 
che sono già state ricreate sul nuovo gestionale, decisamente più veloci 
nei calcoli, ma potremo dismetterlo solo tra tre anni quando le statistiche 
con confronto sugli anni precedenti prenderanno tutti i dati solo dal nuovo 
database
 
detto programma è oggi "completo": venti anni di sviluppo lo hanno portato 
praticamente alla perfezione e copre tutte le esigenze statistiche del 
cliente: è anche pronto per incrociare in maniera diversa i dati esistenti, 
c'è ormai poco da aggiungere dal punto di vista dell'elaborazione dei 
suddetti dati (ogni tanto capita, come in questo caso, ma è la prima volta 
dopo quasi un anno). Se, come ipotizzi, dovesse saltare fuori qualcosa di 
più complesso lo saprò a suo tempo, per adesso ipotizzo almeno un altro 
anno di tranquillità da questo punto di vista
