Discussione:
MaxLocksPerFile (Access runtime)
(troppo vecchio per rispondere)
Ammammata
2020-07-27 11:33:38 UTC
Permalink
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 ] ...........
s***@gmail.com
2020-07-27 15:58:49 UTC
Permalink
Post by Ammammata
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>
Ma concretamente per quale ragione hai necessità di modificare quel parametro?

Saluti
Ammammata
2020-07-28 10:14:52 UTC
Permalink
Il giorno Mon 27 Jul 2020 05:58:49p, ** ha inviato su it.comp.appl.access
Post by Ammammata
sul vecchio pc di sviluppo con windows 7 e access 2010 funziona
egregiamente con i valori predefiniti
per quale ragione hai necessità di modificare quel parametro?
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 :/
--
/-\ /\/\ /\/\ /-\ /\/\ /\/\ /-\ T /-\
-=- -=- -=- -=- -=- -=- -=- -=- - -=-
........... [ al lavoro ] ...........
s***@gmail.com
2020-07-28 11:41:03 UTC
Permalink
Post by Ammammata
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 :/
Ok, ma che tipo di problema cerchi d'aggirare modificando quell'impostazione?
E' un segreto?

Saluti.
Ammammata
2020-07-28 15:29:48 UTC
Permalink
Il giorno Tue 28 Jul 2020 01:41:03p, ** ha inviato su
Post by s***@gmail.com
Ok, ma che tipo di problema cerchi d'aggirare modificando
quell'impostazione?
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
--
/-\ /\/\ /\/\ /-\ /\/\ /\/\ /-\ T /-\
-=- -=- -=- -=- -=- -=- -=- -=- - -=-
........... [ al lavoro ] ...........
@Alex
2020-07-28 15:50:37 UTC
Permalink
Hai provato ad inserire la modifica in una transazione...?

@Alex
s***@gmail.com
2020-07-28 16:02:39 UTC
Permalink
Post by Ammammata
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é
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.
s***@gmail.com
2020-07-28 16:06:28 UTC
Permalink
Dimenticavo: il problema si verifica solo con Access Runtime?

Che versione?

Saluti
Ammammata
2020-07-29 06:26:57 UTC
Permalink
Il giorno Tue 28 Jul 2020 05:29:48p, *Ammammata* ha inviato su
Post by Ammammata
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
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.)
--
/-\ /\/\ /\/\ /-\ /\/\ /\/\ /-\ T /-\
-=- -=- -=- -=- -=- -=- -=- -=- - -=-
........... [ al lavoro ] ...........
s***@gmail.com
2020-07-29 09:05:48 UTC
Permalink
Post by Ammammata
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.)
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
Ammammata
2020-08-14 15:23:53 UTC
Permalink
Il giorno Wed 29 Jul 2020 08:26:57a, *Ammammata* ha inviato su
Post by Ammammata
stanotte ci ho pensato su, vista la semplicità (apparente)
dell'operazione proverò a sostituire il codice VBA con una query di
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
--
/-\ /\/\ /\/\ /-\ /\/\ /\/\ /-\ T /-\
-=- -=- -=- -=- -=- -=- -=- -=- - -=-
........... [ al lavoro ] ...........
Simone Calligaris
2020-08-17 06:56:39 UTC
Permalink
Post by Ammammata
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));
E quando dovrai scrivere una routine d'aggiornamento troppo complessa e/o macchinosa per essere affrontata con queries update cosa farai?

Saluti
Ammammata
2020-08-18 10:52:51 UTC
Permalink
Il giorno Mon 17 Aug 2020 08:56:39a, *Simone Calligaris* ha inviato su
Post by Simone Calligaris
E quando dovrai scrivere una routine d'aggiornamento troppo complessa
e/o macchinosa per essere affrontata con queries update cosa farai?
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
--
/-\ /\/\ /\/\ /-\ /\/\ /\/\ /-\ T /-\
-=- -=- -=- -=- -=- -=- -=- -=- - -=-
........... [ al lavoro ] ...........
pfmarro
2020-07-28 13:06:05 UTC
Permalink
Post by Ammammata
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 ] ...........
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
Loading...