Recordset non aggiornabile

di il
11 risposte

Recordset non aggiornabile

Buongiorno,
dopo aver aggiornato il backend di un progetto in corso (aggiunta di due relazioni molti a molti), mi sono accorto dell'insorgenza di alcune anomalie che non riesco a spiegarmi.
Il recordset non risulta più aggiornabile. Riesco ad aggiungere record attraverso la maschera, ma appena i record diventano circa dieci e cercando di aprire la maschera, access si chiude e crea la copia di backup.
Allegherei la le immagini della struttura del backend e della query, ma stamattina il sito non me lo permette.
Anche con questi pochi indizi è possibile dare una spiegazione?
Grazie.

11 Risposte

  • Re: Recordset non aggiornabile

    eddy1973 ha scritto:


    dopo aver aggiornato il backend...
    è un file di Access o un RDBMS?

    eddy1973 ha scritto:


    ...alcune anomalie...
    al plurale?

    eddy1973 ha scritto:


    Il recordset non risulta più aggiornabile. Riesco ad aggiungere record attraverso la maschera, ma appena i record diventano circa dieci...
    No, non può essere per il numero di record. Un recordset o è aggiornabile o non lo è, fin dalla sua apertura.
    Il fatto che poi si chiuda non è dovuto certo al fatto che il recorset non è aggiornabile. C'è dell'altro, sicuramente, ma detto così è praticamente impossibile capirlo.
    Posta la SQL del recordset / query e la struttura delle tabelle/campi coinvolti, precisando le chiavi primarie - chiavi esterne, le relazioni, eventuali indici con duplicati non ammessi e precisa quale relazione hai aggiunto che ha dato origine al disastro.
  • Re: Recordset non aggiornabile

    E' possibile che il db si sia corrotto. Hai fatto una copia prima di modificarlo?
  • Re: Recordset non aggiornabile

    Ho indicato l'anomalia del numero di record ma in realtà anche a me sembra strano.
    Il file è di tipo Access.
    l'SQL della query che crea problemi è la seguente:
    SELECT Utenti_Com.ID_Utente, Utenti.Username, Categoria.Categoria, Tipi_Campioni.Tipo_Campione, Assegnazione.Descrizione_Campione, Comunicazioni.Data_Comunicazione, Assegnazione.ID_Assegnazione, Comunicazioni.N_Prot_ente, Enti.Denominazione_Ente, Assegnazione.Data_Assegnazione, Assegnazione.Tipo_Controllo, Assegnazione.Lavorazione, Assegnazione.Data_inizio_prove, Assegnazione.Data_fine_prova, Assegnazione.Numero_Certificato, Assegnazione.Data_Certificato, Assegnazione.Numero_Campione, Campionamento.Data_Camp, Campionamento.ID_Camp, Campionamento.Punto_Camp, Campionamento.Metodo, Campionamento.Strumentazione, Campionamento.Note_Camp, Campionamento.Personale, Tipi_Campioni.ID_Categoria, Assegnazione.ID_Tipo_Campione, Ass_Com.ID_Comunicazioni, Comunicazioni.ID_Ente, Utenti.Nome, Utenti.Cognome, IIf([Lavorazione]=0,"R",IIf([Lavorazione]=1,"W",IIf([Lavorazione]=2,"C",IIf([Lavorazione]=3,"F")))) AS Stato, Assegnazione.contr_camp, [Categoria] & [Tipo_Campione] & [Tipo_Controllo] AS Unione, Utenti_Com.ID_Comunicazioni
    FROM (((((Categoria INNER JOIN Tipi_Campioni ON Categoria.ID_Categoria = Tipi_Campioni.ID_Categoria) INNER JOIN Assegnazione ON Tipi_Campioni.ID_Tipo_Campione = Assegnazione.ID_Tipo_Campione) LEFT JOIN Campionamento ON Assegnazione.ID_Assegnazione = Campionamento.ID_Assegnazione) INNER JOIN (Utenti INNER JOIN (((Enti INNER JOIN Comunicazioni ON Enti.ID_Ente = Comunicazioni.ID_Ente) INNER JOIN Ass_Com ON Comunicazioni.ID_Comunicazioni = Ass_Com.ID_Comunicazioni) INNER JOIN Utenti_Com ON Comunicazioni.ID_Comunicazioni = Utenti_Com.ID_Comunicazioni) ON Utenti.ID_Utente = Utenti_Com.[ID_Utente]) ON Assegnazione.ID_Assegnazione = Ass_Com.ID_Assegnazione) INNER JOIN Tipo_Posta ON Comunicazioni.ID_Tipo_Posta = Tipo_Posta.ID_Tipo_Posta) INNER JOIN Posta ON Tipo_Posta.ID_Posta = Posta.ID_Posta;
    
    Allego di seguito la struttura della query e delle tabelle del backend.
    L'anomalia è stata verificata dopo l'aggiunta delle tabelle: Ass_com e Utenti_Com.
    Allegati:
    26735_5b261cae9613c896c4f414869e28ca1a.jpg
    26735_5b261cae9613c896c4f414869e28ca1a.jpg

    26735_8cb25912e3e9aa62dfb2ef342011504f.jpg
    26735_8cb25912e3e9aa62dfb2ef342011504f.jpg
  • Re: Recordset non aggiornabile

    eddy1973 ha scritto:


    Ho indicato l'anomalia del numero di record ma in realtà anche a me sembra strano. Il file è di tipo Access.
    Forse leggo nell'intervento di oregon quello che invece solo adesso scrivo io: per escludere che tu sia entrato in una spirale di corruzione del db con continue chiusure e richieste di backup, se hai una copia sicuramente funzionante del db prima della modifica che ha causato i guai riparti da quella e replica che modiche fatte. Verifica così se il nuovo database funziona correttamente o manifesta gli stessi problemi che si sono generati nella modifica di cui parlavi.
    In questo modo sappiamo se dare la colpa alla modifica o al caso (s)fortuito.
  • Re: Recordset non aggiornabile

    Seguirò i vostri consigli. Però ho notato che altre query funzionano in maniera corretta e il recordset risulta aggiornabile. Io temo che sia una cosa legata ai limi di access nel momento in cui si comincia ad abusare di relazioni molti a molti.
  • Re: Recordset non aggiornabile

    Prima di dare la colpa ai limiti di Access penserei a qualche errore tuo.
  • Re: Recordset non aggiornabile

    eddy1973 ha scritto:


    Seguirò i vostri consigli.
    Il consiglio, come dicevo prima, serve per capire se è un problema di corruzione del database o se c'è dell'altro.
    Io temo che sia una cosa legata ai limi di access nel momento in cui si comincia ad abusare di relazioni molti a molti.
    Tu li chiami limiti, la teoria relazionale le chiamerebbe "operazioni impossibili perché non sono presenti tutti gli elementi per fare un aggiornamento di tutte le tabelle coinvolte per mantere il database in uno stato di coerenza interna" (ecc ecc), riassunto in "recordset non aggiornabile".
    Quando abbiamo capito se è normale che il recordset sia non aggiornabile perché è costruito per non avere le caratteristiche per essere aggiornabile, vediamo come renderlo aggiornabile.
  • Re: Recordset non aggiornabile

    Avete ragione. Ma prima di aggiungere le due relazioni molti a molti tutto funzionava benissimo, tra l'atro il DB risulta aggiornabile e non credo di aver stravolto il mondo per l'aggiunta di due relazioni molti a molti. Le cosa che non mi spiego è il motivo per il quale, sebbene il DB non risulta aggiornabile con l'aggiunta delle relazioni molti a molti, si riesce ad aggiungere un numero massimo di circa 10 record prima che tutto vada in malora.
    Che dire... Indagherò.
  • Re: Recordset non aggiornabile

    Le immagini delle query che hai mostrato non sono chiare. Tuttavia si intuisce un certo "effetto ragnatela" (io lo definisco così) nello scenario tabelle/relazioni. Gli altri utenti hanno abbozzato perplessità. Io sarei più chiaro: sei sicuro che il tuo database sia NORMALIZZATO? Oppure, invece di coinvolgere tutte le tabelle insieme, non ti conviene di usare delle query (tematiche) intermedie? Se solo conoscessimo di cosa parla il tuo database?
  • Re: Recordset non aggiornabile

    La query che ho mostrato è quella più complessa dove tutte le tabelle indicate sono necessarie. Poi di query ce ne sono molte altre anche formate anche da solo due o tre tabelle a seconda delle necessità. Ad ogni modo credo di aver aggirato l'ostacolo della necessità di utilizzare quelle relazioni molti a molti e tutto è tornato alla normalità.
  • Re: Recordset non aggiornabile

    eddy1973 ha scritto:


    ...Ad ogni modo credo di aver aggirato l'ostacolo della necessità di utilizzare quelle relazioni molti a molti e tutto è tornato alla normalità.
    e questo forse significa che tutta la colpa non stava dalla parte di Access ma un po' (ehm... un po' e basta) anche dalla parte di chi gli ha chiesto di fare una cosa che si poteva (doveva?) fare in modo diverso.
    Se tratti bene Access... lui fa quello che può, che è parecchio e bene. Se lo "tratti male"... il quello che può, che a volte è pure più di quanto dovrebbe.
Devi accedere o registrarti per scrivere nel forum
11 risposte