Campi autoincrementanti che stranamente si duplicano

di il
24 risposte

24 Risposte - Pagina 2

  • Re: Campi autoincrementanti che stranamente si duplicano

    Vedo che tra le proprietà del database ho "ReplicateProject" messo a TRUE.
    Ma noto anche che creando un nuovo database "ReplicateProject" è sempre a TRUE, sia con l'ultima versione di Office, sia con Office 2003.
    Cosa significa? Perchè è true? Ci sarà qualche relazione con il mio problema? Database replica?
  • Re: Campi autoincrementanti che stranamente si duplicano

    Più me lo descrivi e più mi sembra un problema derivante dall accavallamento di due postazioni che operano sulla stessa tabella con lo stesso account. In fase di creazione del record il database assegna un numero id identico ad entrambi, e poi li salva entrambi con lo stesso numero id.
    Sei sicuro che a livello di codice, da qualche parte non forzi il salvataggio del record, anche se va a compromettere l integrità del database? Access ha due brutti vizi. Cerca di correggere gli errori, modificando a volte le impostazioni ed è rognoso per la gestione delle transazioni multiutente. Sopratutto le vecchie versioni.
    Sicuramente poco c entra, ma il compare database, l hai inserito a livello di codice?

    https://docs.microsoft.com/it-it/sql/ssdt/how-to-use-schema-compare-to-compare-different-database-definitions?view=sql-server-ver16

    E comunque sembrerebbe un problema dell oggetto transaction, che dovrebbe essere gestito egregiamente se si usa un front end creato con access, mentre è rognoso se si usano front end realizzati con programmi esterni.
    https://docs.microsoft.com/it-it/sql/relational-databases/performance-monitor/sql-server-transactions-object?view=sql-server-ver16

    Ma sto sparando nel mucchio, nella speranza di far accendere una lampadina a qualcuno
  • Re: Campi autoincrementanti che stranamente si duplicano

    fratac ha scritto:


    Più me lo descrivi e più mi sembra un problema derivante dall accavallamento di due postazioni che operano sulla stessa tabella con lo stesso account. In fase di creazione del record il database assegna un numero id identico ad entrambi, e poi li salva entrambi con lo stesso numero id.
    Se così fosse, il problema potrebbe essere replicabile, lanciando 2 istanze del programma sullo stesso Pc ... un buon spunto da verificare.

    fratac ha scritto:


    Sei sicuro che a livello di codice, da qualche parte non forzi il salvataggio del record, anche se va a compromettere l integrità del database? Access ha due brutti vizi. Cerca di correggere gli errori, modificando a volte le impostazioni ...
    Sinceramente non mi è mai capitato di ritrovarmi con la definizione delle tabelle modificata da Access ... certo che MS a l'abitudine di aggiornare tutto spesso a tua insaputa e a volte anche contro il tuo volere

    Io continuo a pensare che sia un problema di versioni differenti di dll ADO/DAO verificabile ricompilando il progetto VB6 da una macchina Win10 ...
  • Re: Campi autoincrementanti che stranamente si duplicano

    Sempre andando a tentoni.
    https://support.microsoft.com/it-it/topic/righe-di-chiave-duplicate-dalla-tabella-sys-syscommittab-in-sql-server-791b6723-5971-18e0-d65a-24949248b7ed
  • Re: Campi autoincrementanti che stranamente si duplicano

    fratac ha scritto:


    Sempre andando a tentoni.
    Non mi sembra inerente ...

    Se ho compreso bene abbiamo un'applicazione scritta in VB6 che accede a un Db Access2000 (quindi tenderei a dire un classico mdb) tramite ADO e DAO ... poi magari ho frainteso io
  • Re: Campi autoincrementanti che stranamente si duplicano

    Empedocle ha scritto:


    Ho un applicazione VB6 piuttosto corposa e utilizzata da diversi clienti che legge e scrive su un db Access 2000.
    Il programma utilizza ADO per leggere e scrivere e DAO per aggiornare la struttura del DB quando necessario nelle nuove versioni.
    Sei 'super' sicuro che la tua applicazione, per qualche strano e misterioso motivo (leggasi bug) non aggiorni la struttura del DB (quando non dovrebbe) ?
  • Re: Campi autoincrementanti che stranamente si duplicano

    max.riservo ha scritto:


    Empedocle ha scritto:


    Ho un applicazione VB6 piuttosto corposa e utilizzata da diversi clienti che legge e scrive su un db Access 2000.
    Il programma utilizza ADO per leggere e scrivere e DAO per aggiornare la struttura del DB quando necessario nelle nuove versioni.
    Sei 'super' sicuro che la tua applicazione, per qualche strano e misterioso motivo (leggasi bug) non aggiorni la struttura del DB (quando non dovrebbe) ?
    Ci avevo pensato pure io, ma come mai non genera un errore 3022? Anche da vb il jet dovrebbe generare errore.

    Comunque non per fare il menagramo. Ma sei sicuro che gli altri clienti non hanno questo problema e che magari non se ne sono accorti, oppure cancellano i record errati considerandoli un errore di immissione dell operatore, o peggio maledicendo il programmatore, e facendo di utilità virtù e non ti hanno avvertito?
  • Re: Campi autoincrementanti che stranamente si duplicano

    Grazie per i vostri consigli.

    fratac ha scritto:


    Sicuramente poco c entra, ma il compare database, l hai inserito a livello di codice?
    Il compare database? No.

    max.riservo ha scritto:


    Io continuo a pensare che sia un problema di versioni differenti di dll ADO/DAO verificabile ricompilando il progetto VB6 da una macchina Win10 ...
    Si, forse è una strada da seguire

    max.riservo ha scritto:


    Se ho compreso bene abbiamo un'applicazione scritta in VB6 che accede a un Db Access2000 (quindi tenderei a dire un classico mdb) tramite ADO e DAO ... poi magari ho frainteso io
    Non hai affatto frainteso

    max.riservo ha scritto:


    Sei 'super' sicuro che la tua applicazione, per qualche strano e misterioso motivo (leggasi bug) non aggiorni la struttura del DB (quando non dovrebbe) ?
    Si, sono sicuro. L'aggiornamento che faccio della struttura del db è relativo solo alla creazione di nuove tabelle o campi in caso di nuove versioni che ne necessitino.

    fratac ha scritto:


    Comunque non per fare il menagramo. Ma sei sicuro che gli altri clienti non hanno questo problema e che magari non se ne sono accorti, oppure cancellano i record errati considerandoli un errore di immissione dell operatore, o peggio maledicendo il programmatore, e facendo di utilità virtù e non ti hanno avvertito?
    No, certo, il problema potrebbe averlo anche qualche altro cliente. Il programma viene utilizzato sia in versione gratuita che in versione con licenza. Quelli che lo hanno comprato quando hanno un problema mi avvertono.
    E poi da poco ho introdotto un controllo iniziale che nel caso rilevi la presenza di doppi ID avverte l'utente dicendogli di contattarmi per la soluzione del problema.

    Ma, fratac, scusa, questi link ad articoli su Sql Server in che misura sono validi anche per Access?
  • Re: Campi autoincrementanti che stranamente si duplicano

    max.riservo ha scritto:


    fratac ha scritto:


    Più me lo descrivi e più mi sembra un problema derivante dall accavallamento di due postazioni che operano sulla stessa tabella con lo stesso account. In fase di creazione del record il database assegna un numero id identico ad entrambi, e poi li salva entrambi con lo stesso numero id.
    Se così fosse, il problema potrebbe essere replicabile, lanciando 2 istanze del programma sullo stesso Pc ... un buon spunto da verificare.
    La causa nell'ultimo caso in cui si è verificato il problema non sembrerebbe essere quella ipotizzata da fratac.
    Infatti i due record con ID duplicato sono stati inseriti dalla stessa postazione e in due momenti diversi.
    Lo posso affermare direi con certezza. La tabella in questione è una tabella di log dove registro molte delle operazioni effettuate riportando ora-minuti-secondi, postazione, operazione e dati movimentati.
    Quindi semplicemente Access a seguito della Insert di un record ha assegnato a quel record lo stesso ID assegnato al record precedente che non era affatto stato inserito nello stesso istante da un'altra postazione ma ben 30 secondi prima dalla stessa postazione.
    E poi vi ricordo, mi pare di averlo già detto, che negli episodi precedenti in alcuni casi gli ID oltre a duplicarsi avevano fatto un salto di oltre un miliardo!
    E' chiaro secondo me che non è un problema di programmazione, ma un casino fatto da Access forse come dice max.riservo a causa della libreria ADO o simili, e comunque è un problema che sembra randomico.
    Il programma poi, che è un gestionale multi purpose (centri estetici, CAF, farmacie e altro), lo vedo in azione direttamente giornalmente anche nel ristorante di mia moglie dove lavora su due postazioni in rete (una per vendita al banco e l'altra per gestione sala) e viaggia a pieno ritmo ricevendo tra l'altro gli ordini inviati dai camerieri con smartphone tramite un'applicazione web che ho fatto in dot.net e gira su IIS. L'applicazione web comunica con l'applicativo VB su porte TCP/IP tramite winsock, l'applicativo riceve ed elabora gli ordini , manda stampe in cucina, pilota il registratore di cassa, registra i pagamenti, movimenta il magazzino, occupa e libera tavoli, gestisce gli spostamenti grafici dei tavoli registrando tutte le coordinate su db e fa un'altra marea di cose.
    A fine giornata ha frullato come un pazzo. E tutto fila liscio ormai da quasi due anni. Tra l'altro come dicevo l'ho testato con automi per giorni e giorni consecutivi.
    Questo non per dirvi quanto è bello il programma, ma per ribadire che è un'applicazione molto corposa, in funzione da anni e anni, con meccanismi ormai rodati e che, certo, qualche problema a volte l'ha dato, ma di tipo semplicemente applicativo, normali bug.
    Sulla compatibilità con Windows 10 non avrei dubbi.
    Certo nel caso del cliente in oggetto qualcosa di stano sta avvenendo, e su tutti e tre i PC. Per questo infatti gli ho detto di provare a spostare il DB dal NAS a uno dei PC.
  • Re: Campi autoincrementanti che stranamente si duplicano

    Non centrano niente. Ho sbagliato con i copia incolla. Avevo una caterva di pagine aperte e mi sono confuso.
    Comunque se hai trovato una chiave di un miliardo sembra che oltre a duplicati ammessi ti vada a modificare anche da incrementale a casuale.

    Vista la situazione penso che ti convenga chiedere direttamente a mamma microsoft.
Devi accedere o registrarti per scrivere nel forum
24 risposte