Condividi tramite

Errore Violazione di chiave in query di aggiornamento

Anonimo
2013-03-12T11:14:25+00:00

Buongiorno.

Ecco il mio problema.

La maschera [Inserimento Fatture] inserisce dei dati nella tabella Fatture;

tra questi dati c'è anche un record IDImpegno a cui la fattura si riferisce.

vorrei che questo valore IDImpegno venisse copiato nella tabella Fatture (in cui esiste già il campo IDImpegno, ma sino ad ora resta vuoto).

Creo una query di aggiornamento che lancio alla chiusura della maschera o al salvataggio.

UPDATE Fatture SET Fatture.IDImpegno = [Forms]![Inserimento Fatture]![IDImpegno]

WHERE ((([Forms]![Inserimento Fatture]![IDFattura]=[Fattue]![IDFattura]));

La query la traduco così:

Aggiorna la tabella Fatture, in particolare il campo IDImpegno con il valore IDImpegno della form [Inserimento Fatture] dove i due IDFattura sono uguali.

La query mi restituisce errore:

"Impossibile aggiornare tutti i record nella query di aggiornamento.

.......a causa di violazioni di chiave:1;......

Grazie a quanti vorranno aiutarmi.

Microsoft 365 e Office | Accesso | Per la casa | Windows

Domanda bloccata. Questa domanda è stata eseguita dalla community del supporto tecnico Microsoft. È possibile votare se è utile, ma non è possibile aggiungere commenti o risposte o seguire la domanda.

0 commenti Nessun commento
Risposta accettata dall'autore della domanda
  1. Anonimo
    2013-03-13T07:57:31+00:00

    Ok, fatto...grazie Giorgio del tuo prezioso supporto.

    ...ma mi, anzi ci spieghi perchè il comando è obsoleto?

    Grazie

    Ciao,

    è piu di 15 anni che DoMenuItem è stato sostituito da RunCommand, viene mantenuto solo per compatibilità con le vecchie versioni.

    Guarda questo documento ufficiale per Access 2000: DoMenuItem Method  vedi in particolare dove dice:

    Note   In Microsoft Access 97, the DoMenuItem method was replaced by the RunCommand method. The DoMenuItem method is included in this version of Microsoft Access only for compatibility with previous versions.

    Ciao

    Giorgio Rancati

    0 commenti Nessun commento

9 risposte aggiuntive

Ordina per: Più utili
  1. Anonimo
    2013-03-12T12:58:10+00:00

    No, non lo è.

    0 commenti Nessun commento
  2. Anonimo
    2013-03-12T12:49:59+00:00

    Ciao,

    lascia perdere la tabella Impegni, qui stiamo trattando la tabella Fatture no ??


    UPDATE Fatture SET Fatture.IDImpegno = [Forms]![Inserimento Fatture]![IDImpegno]

    WHERE ((([Forms]![Inserimento Fatture]![IDFattura]=[Fattue]![IDFattura]));


    controlla che IDImpegno della tabella Fatture  non sia chiave univoca.

    Ciao

    Giorgio Rancati

    0 commenti Nessun commento
  3. Anonimo
    2013-03-12T12:29:57+00:00

    Certo Giorgio e come sempre grazie per la risposta.

    IDImpegno è un contatore assegnato all'apertura della maschera inserimento impegni che si trova altrove e non posso cambiarne il tipo, ma perchè non posso replicare il suo valore in un'altra tabella anche in formato numerico?

    TabellaImpegno                                        Tabella Fatture

    IDImpegno (chiave pr. - contatore)--------->IDImpegno (numerico)

    Grazie

    0 commenti Nessun commento
  4. Anonimo
    2013-03-12T11:56:07+00:00

    Ciao,

    la causa dell'errore è da ricercare nella struttura delle tabelle e nei suoi dati, questo solo tu puoi farlo.

    Se ad esempio IdImpegno è un indice univoco e l'IdImpegno che cerchi di aggiornare è già assegnato ad un'altra fattura allora si scatena l'errore.

    Ciao

    Giorgio Rancati

    0 commenti Nessun commento