Query di accodamento che... non accoda

di il
9 risposte

Query di accodamento che... non accoda

Ciao a tutti

Sono sicuro di avere una trave nell'occhio e non vederla, ma tant'è…

Sto costruendo da zero un programmino senza troppo pretese per gestire le ricevute. Quando vado a generare una nuova ricevuta, semplicemente vado a prendere i dati dalla tabella “Clienti” per riportarli nella tabella “Ricevute” tramite una query di accodamento (Nota a margine: faccio la copia perchè una volta emessa la ricevuta deve rimanere come è stata fatta, quindi non soggetta a modifiche successive dei dati).

Ora, la query funziona in modo a dir poco strano, in quanto in alcune condizioni (record con giusto un paio di campi compilati) non accoda nulla, altrimenti dà errore “Impossibile assegnare un valore Null ad una variabile non di tipo variant”. Dopo innumerevoli prove, ho verificato che questo errore si verifica solo se i campi “Nome” e “Cognome”  oppure “Nome_P” e “Cognome_P” (tutti nella tabella "Clienti") non contengono un valore. Se elimino questi campo dalla query, è ok. Se inserisco il nome ma non il cognome (o viceversa, idem per i campi con “_P” -che sta per “Praticante”, la query dà l'errore.

Ora, posto che ho controllato e ricontrollato più volte, tutti questi campi sono di tipo stringa e generati in automatico da Access, con la sola modifica della dimensione del campo, impostato a 25.

Non riesco a darmi una spiegazione logica che mi indirizzi verso la soluzione, quindi mi appello a voi. Di seguito, ammesso che possa essere utile, ecco la query

INSERT INTO Ricevute ( ID_Cliente, Cognome, Nome, Codice_Fiscale, Cognome_P, Nome_P, Luogo_Nascita_P, Data_Nascita_P, Indirizzo )
SELECT Clienti.ID_Cliente, Clienti.Cognome, Clienti.Nome, Clienti.Codice_Fiscale, Clienti.Cognome_P, Clienti.Nome_P, Clienti.Luogo_Nascita_P, Clienti.Data_Nascita_P, Clienti.Indirizzo
FROM Clienti
WHERE (((Clienti.ID_Cliente)=[Maschere]![Clienti_Scheda_completa]![ID_Cliente]));

9 Risposte

  • Re: Query di accodamento che... non accoda

    Campi di ricevute e campi di clienti

    Ricevute non ha id? Perché non lo metti nella insert?

    I campi sono stesso tipo e dimensione?

  • Re: Query di accodamento che... non accoda

    19/04/2024 - Barattolo5 ha scritto:


    Nota a margine: faccio la copia perchè una volta emessa la ricevuta deve rimanere come è stata fatta, quindi non soggetta a modifiche successive dei dati).

    Cosa dovrebbe cambiare? Nome e cognome? Codice fiscale?

    Se un soggetto giuridico cambia allora inserisci la nuova ragione sociale come nuovo cliente.

    Se cambia p.iva o cf allora è un altro soggetto e devi inserire un nuovo cliente.

    Se cambia indirizzo basta mettere i dati “variabili” in una tabella a parte in modo da avere uno storico.

  • Re: Query di accodamento che... non accoda

    I campi Cognome e Nome possono essere null nella tabella destinazione?

  • Re: Query di accodamento che... non accoda

    20/04/2024 - sihsandrea ha scritto:


    Campi di ricevute e campi di clienti

    Ricevute non ha id? Perché non lo metti nella insert?

    I campi sono stesso tipo e dimensione?

    Ricevute ha il suo id. Che non è lo stesso ID del cliente. Quello c'è e serve per far funzionare la relazione 1 a n

    I campi sono esattamente uguali

  • Re: Query di accodamento che... non accoda

    20/04/2024 - oregon ha scritto:


    I campi Cognome e Nome possono essere null nella tabella destinazione?

    Ecco la trave nell'occhio: nel copia-incolla della tabella erano rimasti due campi obbligatori nella destinazione… :(((((((

    Criticherei solo il messaggio di errore restituito, che non indirizza nella direzione corretta per la risoluzione del problema, ma tant'è

    grazie mille!!!! Mi hai salvato da un esaurimento nervoso :D

  • Re: Query di accodamento che... non accoda

    20/04/2024 - sihsandrea ha scritto:


    19/04/2024 - Barattolo5 ha scritto:


    Nota a margine: faccio la copia perchè una volta emessa la ricevuta deve rimanere come è stata fatta, quindi non soggetta a modifiche successive dei dati).

    Cosa dovrebbe cambiare? Nome e cognome? Codice fiscale?

    Se un soggetto giuridico cambia allora inserisci la nuova ragione sociale come nuovo cliente.

    Se cambia p.iva o cf allora è un altro soggetto e devi inserire un nuovo cliente.

    Se cambia indirizzo basta mettere i dati “variabili” in una tabella a parte in modo da avere uno storico.

    Per esempio potrebbero cambiare i codici delle attività sportive, o l'indirizzo di residenza. O anche nome e cognome e il codice fiscale, si (Per lo scarico fiscale dei minori molti alternano i codici fiscali fra papà e mamma, e si porrebbero dei problemi di natura diversa, rimanento il praticante lo stesso, quindi duplicato, per esempio).

    Comunque sia, ho fatto questa scelta consapevole del fatto che ci sono altre soluzioni sicuramente più corrette, ma lo sforzo richiesto per implementarle non è giustificato dall'effettivo utilizzo (poche ricevute) e neanche dalla remunerazione (è un lavoro gratuito)

    Ti ringrazio comunque per il tuo suggerimento, che sicuramente terrò in considerazione qualora le esigenze lo richiedano :)

  • Re: Query di accodamento che... non accoda

    20/04/2024 - Barattolo5 ha scritto:


    grazie mille!!!!

    Di nulla… però l'indicazione del problema sul null la avevi avuta…

  • Re: Query di accodamento che... non accoda

    20/04/2024 - oregon ha scritto:


    20/04/2024 - Barattolo5 ha scritto:


    grazie mille!!!!

    Di nulla… però l'indicazione del problema sul null la avevi avuta…

    Si, col senno di poi ha un senso. Prima no: mi sarei aspettato il classico messaggio di errore in caso di campo obbligatorio :S

  • Re: Query di accodamento che... non accoda

    Per la cronaca: nonostante le correzioni effettuate alla struttura dei dati, il problema ha continuato a persistere.

    Poi l'intuizione: ho eliminato “di brutta” i campi “Cognome_P” e “Nome_P” e li ho ricreati con lo stesso nome (tanto non perdo nulla, visto che il database non è popolato, se non da qualche classico “Pippo, Pluto e Paperino” di prova). Come d'incanto, è andato tutto a posto. Ho l'impressione che qualcosa sia andato storto nella prima creazione, fatto sta che ora pare funzioni come dovrebbe (incrociando le dita)

    Grazie comunque a tutti :)

Devi accedere o registrarti per scrivere nel forum
9 risposte