Condividi tramite

Query di accodamento

Anonimo
2015-10-03T18:26:39+00:00

Salve a tutti.

domanda su query di accodamento, tutto funziona perfettamente pero  ho questo msg. di errore:

" Impossibile accodare tutti i record nella query di accomodamento

Numero di campi impostati a Null per un errore di conversione tra tipi:0; 

numero di record non aggiunti alla tabella a causa di violazioni di chiave:1; 

a causa di violazione di condivisione;0; 

a causa di violazioni della regola di convalida:0

Continuare comunque l'esecuzione della query di comando?

Fare click su si per ignorare l'errore o gli errori ed eseguire la query.

per una descrizione delle cause delle violazioni consultare la guida in linea "

ho due tab:

tabFatture. IDFattura,NumeroFattura,DataFattura,DataScadenzaFattura

tabFattureAvviso. IDFatturaAvviso,NumeroFatturaAvviso,DataFatturaAvviso,DataScadenzaFatturaAvviso

maschera:

MscEmissioneFatture

Query:

QryAccodaFatture : 

INSERT INTO TabFattureAvviso ( IDFatturaAvviso,  NumeroFatturaAvviso,  DataFatturaAvviso, DataScadenzaFatturaAvviso )

SELECT TabFatture.IDFattura,  TabFatture.NumeroFattura, TabFatture.DataFattura, TabFatture.DataScadenzaFattura

FROM TabFatture

WHERE (((TabFatture.NumeroFattura)=[Maschere]![MscEmissioneFatture]![txtNumeroFattura]));

commando:

Private Sub Form_Unload(Cancel As Integer)

   DoCmd.RunCommand acCmdRefresh

    DoCmd.OpenQuery "QryAccodaFatture", acNormal, acReadOnly

End Sub

quando nella MscEmissioneFatture  inserisco una nuova fattura poì salvo e chiudo tutto ok, msg di errore non ce, inviece se apro la maschera MscEmissioneFatture per fare variazione di una fattura  esistente chiudendo mi restituisce seguente errore:

" Impossibile accodare tutti i record nella query di accomodamento

Numero di campi impostati a Null per un errore di conversione tra tipi:0; 

numero di record non aggiunti alla tabella a causa di violazioni di chiave:1; 

a causa di violazione di condivisione;0; 

a causa di violazioni della regola di convalida:0

Continuare comunque l'esecuzione della query di comando?

Fare click su si per ignorare l'errore o gli errori ed eseguire la query.

per una descrizione delle cause delle violazioni consultare la guida in linea "

come è possibile  eseguire la query di accodamento senza avere questo msg. di errore, grazie anticipatamente

vladi

Microsoft 365 e Office | Access | 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

Anonimo
2015-10-04T00:17:40+00:00

Ciao Vladi,

puoi fare così:

INSERT INTO TabFattureAvviso ( IDFatturaAvviso,  NumeroFatturaAvviso,  DataFatturaAvviso, DataScadenzaFatturaAvviso )

SELECT TabFatture.IDFattura,  TabFatture.NumeroFattura, TabFatture.DataFattura, TabFatture.DataScadenzaFattura

FROM TabFatture

WHERE (((TabFatture.NumeroFattura)=[Maschere]![MscEmissioneFatture]![txtNumeroFattura]))

  AND NOT EXISTS (SELECT * FROM TabFattureAvviso  AS Ta WHERE Ta.IDFatturaAvviso = TabFatture.IDFattura);

ho contrassegnato in grassetto la parte di codice da aggiungere alla query per non inserire fatture doppie.

per maggiori info vedi: Sottoquery con NOT EXISTS anche se non è un esempio per access il concetto è uguale.

Ciao

Giorgio Rancati

La risposta è stata utile?

0 commenti Nessun commento

3 risposte aggiuntive

Ordina per: Più utili
  1. Anonimo
    2015-10-04T08:08:25+00:00

    Ciao Giorgio.

    Grazie mille funziona benissimo.

    cordiali saluti

    Ciao Vladi

    La risposta è stata utile?

    0 commenti Nessun commento
  2. Anonimo
    2015-10-03T20:52:36+00:00

    Ciao Sandro,

    Grazie mille  per la risposta, 

    si IDFatturaAvviso e una chiave primaria ho provato in precedenza togliendo la la chiave primaria impostando un campo numerico ,indicizzato "NO" ma ogni volta che apro e chiudo maschera MscEmissioneFatture accoda stesso record nella TabFattureAvviso dopo di che ho creato una mashera  MscEliminaFatture con un commando di eliminazione fatture scadute e sottomaschera SMscEliminaFatture con dati da QryFattureAvviso.

    su QryFattureAvviso  ho eseguito raggruppamento e va bene,vedo sollo un record per ogni fattura, pero se vado a modificare fattura, cambio data di scadenza naturalmente non ha senso più "raggruppamento", vedo due fatture con lo stesso numero e con due dati di scadenza diverse, a questo punto ho reinserito campo idFatturaAvviso  indicizzato   "SI"(Duplicati non ammessi) però ho davanti questo msg di errore:

    " Impossibile accodare tutti i record nella query di accomodamento

    Numero di campi impostati a Null per un errore di conversione tra tipi:0; 

    numero di record non aggiunti alla tabella a causa di violazioni di chiave:1; 

    a causa di violazione di condivisione;0; 

    a causa di violazioni della regola di convalida:0

    Continuare comunque l'esecuzione della query di comando?

    Fare click su si per ignorare l'errore o gli errori ed eseguire la query.

    per una descrizione delle cause delle violazioni consultare la guida in linea "

    premendo su "SI" va tutto bene, ce un metodo da nascondere questo msg. di errore ?

    ciao Vladi

    La risposta è stata utile?

    0 commenti Nessun commento
  3. Anonimo
    2015-10-03T19:13:51+00:00

    ciao Vladi,

    IDFatturaAvviso è una chiave primaria? l'errore che si genera è generlmente legato a fatto di volere inserire la stessa PK nella tabella.

    come sai la PK è univoca e non ammette duplicati.

    apri la tabella e modifica il tipo di dati eliminando la PK,

    trattandosi di action query protesti anche agire in questo modo :

    Dim qdf As DAO.QueryDef

    Set qdf = DBEngine(0)(0).QueryDefs("QryAccodaFatture")

    qdf.Parameters(0) = me!txtNumeroFattura

    qdf.Execute dbFailOnError

    Set qdf = Nothing

    ciao, Sandro.

    La risposta è stata utile?

    0 commenti Nessun commento