Errore 2950

di il
7 risposte

Errore 2950

Ho tre tabelle:

Ispezione (Id(contatore) - N° - Data – Comune(testo) – Esercente (Numerico) – etc......)

Esercente (IdEsercente (contatore) - N° Reg – Ragione Sociale (testo) – ComuneEser (testo) – etc.....)

Comuni (Id - Comune)

Le due tabelle sono relazionate tra di loro 1(Esercenti) a Molti (Ispezione) con i campi IdEsercente e ID

Ho creato una maschera (Nuova Ispezione) con la quale inserisco i dati nella tabella Ispezione.
Una volta selezionato il comune, attraverso casella combinata, associata alla tabella comuni, faccio partire una macro (Evento - su modifica).
Questa macro (Macro 1) ha i comandi: Apri query Rag Soc
Chiudi query Rag Soc
Esegui Comando Menù Aggiorna

La query Rag Soc ha i seguenti campi IdEsercenti, Ragione Sociale, ComuneEser.
Nel campo ComuneEser ho messo come criterio il fatto che il valore deve essere uguale al valore selezionato nella casella combinata comune presente nella maschera Nuova Ispezione, in modo da avere come risultato solo gli esercenti con sede in quel comune.

Quindi, Una volta selezionato il comune nella maschera, vado nella casella combinata esercenti, la quale ha origine riga la query Rag Soc e origine controllo la tabella Esercente, e seleziono dalla lista presente nella casella, l'esercente.

Il tutto funziona perfettamente!! fino a che non devo inserire un nuovo record con la maschera.. cioè se modifico vecchi record questo procedimento va liscio se invece si tratta di un nuovo record mi da errore ..

“Impossibile trovare Alcun Record nella Tabella Esercenti contenente campi Esercente corrispondenti alla chiave” numero errore 2950

AVETE SUGGERIMENTI?!?!?!

7 Risposte

  • Re: Errore 2950

    Lez ha scritto:


    Ho tre tabelle: Ispezione (Id(contatore) - N° - Data – Comune(testo) – Esercente (Numerico) – etc......)Esercente (IdEsercente (contatore) - N° Reg – Ragione Sociale (testo) – ComuneEser (testo) – etc.....)Comuni (Id - Comune)
    Per me c'è un errore di partenza qui. La tabella Ispezioni non deve contenere il campo Comune. Inoltre io chiamerei il campo IDEsercente (numerico) anche dentro la tabella Ispezioni. Anche nella tabella Esercenti prevedi il campo IDComune (numerico).
    Ti consiglio di nominare le tabelle al plurale.

    Poi non mi è chiaro il resto del discorso.
  • Re: Errore 2950

    Ciao.

    Da quello che ho capito hai sbagliato nell'impostare la fonte dati della combobox esercenti.

    Sicuramente hai richiamato solo il nome dell'esercente e non l'id.
    Quando access va a richiamarlo o a salvarlo, si ritrova a dover usare il nome invece del numero id e non trovando corrispondenza nella chiave ti da quell'errore.

    La giusta impostazione della casella combinata dovrebbe essere:

    Numero colonne 2
    Colonna associata 1.
    lunghezza colonne 0cm; 5cm (o i cm che ti servono)
    Dalla query devi richiamare il numero ID degli esercenti ed il nome.

    Così facendo nella casella combinata vedi il nome dell'esercente, ma in realtà il database usa il numero id perchè nella tabella virtuale creata per la combobox hai due campi
    ID e nome
    La colonna però associata e che access usa per salvare è la colonna 1 cioè il numero ID.
    Avendo però impostato in lunghezza colonna, il valore zero al primo campo (cioè l'ID) praticamente fai capire ad access che non vuoi visulizzare a video quella colonna e quindi ti visualizza (sempre a video) la prima colonna utile (o tutte le altre che hai impostao)che trova.

    Penso che il problema sia questo.
  • Re: Errore 2950

    Si ho fatto come hai detto tu!! e mi funziona sulla modifica di vecchi record, ma quando inserisco i dati in un nuovo record mi da questo errore...[/u]

    poi un altra cosa strana, e che se sono in un nuovo recor, e seleziono l'esercente (rimasto in "memoria" nella tendina) prima di selezionare il comune, e poi seleziono il comune (e quindi di conseguenza parte la macro) NON da ERRORE e posso ri -selezionare l'esercente questavolta filtrato dalla query

    NON CAPISCO IL PERCHE!!
  • Re: Errore 2950

    Lez ha scritto:


    si ho fatto come hai detto tu!! e mi funziona sulla modifica di vecchi record, ma quando inserisco i dati in un nuovo record mi da questo errore...[/u]

    poi un altra cosa strana, e che se sono in un nuovo recor, e seleziono l'esercente (rimasto in "memoria" nella tendina) prima di selezionare il comune, e poi seleziono il comune (e quindi di conseguenza parte la macro) NON da ERRORE e posso ri -selezionare l'esercente questavolta filtrato dalla query

    NON CAPISCO IL PERCHE!!
    Allora hai sbagliato a fare le relazioni e la devi invertire.

    Devi mettere l'id di collegamento nell'altra tabella, così da invertire le dipendenze. Praticamente ora ispezione è una dipendenza di comune, invece devi far diventare comune una dipendenza di ispezione.
  • Re: Errore 2950

    La tabella comune non centra..

    ho utilizzato un escamotage è funziona pure con i nuovi record..
    Nel campo Esercente della tabella ispezione ho messo come valore predeffinito "1" (Sperando che nessuno cancelli mai il record 1 dalla tabella esercenti "il quale ho lasciato vuoto ) .. non è una cosa "pulita" ma funziona...
    se avete altre idee ditemi pure!!
  • Re: Errore 2950

    Lez, io ho provato a rileggere tutto da capo, ma credimi non è tutto chiaro e limpido come il sole. Ripeto che

    Lez ha scritto:


    Ispezione (Id(contatore) - N° - Data – Comune(testo) – Esercente (Numerico) – etc......)Esercente (IdEsercente (contatore) - N° Reg – Ragione Sociale (testo) – ComuneEser (testo) – etc.....)Comuni (Id - Comune)
    è sbagliato. Lo hai corretto? Altrimenti la discussione non può andare avanti.

    Lez ha scritto:


    Una volta selezionato il comune, attraverso casella combinata, associata alla tabella comuni, faccio partire una macro
    Pure questa per me non ha né capo né coda se non contestualizzi per bene.

    Una Ispezione riguarda UN IDEsercente. Che centra il Comune?

    Il titolo del thread parla di un errore 2950. Non si tratta di risolvere il 2950, ma di costruire la struttura per bene e dare un corretto assetto a tutti gli oggetti che devono ruotare intorno ai tuoi dati. Se non c'è una coerenza che Access pretende alla base, ecco che saltano fuori gli errori più imprevedibili e irrazionali.
  • Re: Errore 2950

    Lez ha scritto:


    La tabella comune non centra..

    ho utilizzato un escamotage è funziona pure con i nuovi record..
    Nel campo Esercente della tabella ispezione ho messo come valore predeffinito "1" (Sperando che nessuno cancelli mai il record 1 dalla tabella esercenti "il quale ho lasciato vuoto ) .. non è una cosa "pulita" ma funziona...
    se avete altre idee ditemi pure!!

    Come dice OsvaldoLAviosa sicuramente c'è qualcosa che non hai fatto bene.

    Ti consiglio di correggere il tutto, perchè sopratutto in informatica se si risolvono i problemi con gli escamotage più si va avanti e più le cose si complicano.

    Per quanto riguarda invece il fatto di non far cancellare il record, ci stavo pensando qualche giorno fa.
    Una delle possibili soluzioni che mi erano venute in mente prevedeva il fatto di non far visualizzare il dato mentre si eseguono le query, mettendo un filtro del tipo where "campo">1etc etc.
    In questo modo l'utente non vedrebbe mai il record.
    L'unico modo sarebbe di cancellarlo direttamente da tabella.
Devi accedere o registrarti per scrivere nel forum
7 risposte