DLookUp errore (Il campo non può essere aggiornato)

di il
10 risposte

DLookUp errore (Il campo non può essere aggiornato)

Ciao a tutti.
Sto provando a gestire il cambio gomme stagionali della macchina, in modo da avere contezza dei km effettivamente fatti da ogni treno.
Sostanzialmente il DB sembra funzionare, ma sto avendo un problema che non capisco su una banale funzione DLookUp per recuperare un ID

L'errore arriva in questo punto:

'RECUPERA L'ID DEI PNEUMATICI IN USO
Dim IDPenumatici As Integer

Debug.Print DLookup("Tipo", "tblPneumatici", "[IDVeicolo]=" & Forms!frmPrincipale!cbxCercaVeicolo.Column(0) & " And [Tipo]=" & Stagione & " And [Datafine] Is Null")

IDPneumatici = DLookup("Tipo", "tblPneumatici", "[IDVeicolo]=" & Forms!frmPrincipale!cbxCercaVeicolo.Column(0) & " And [Tipo]=" & Stagione & " And [Datafine] Is Null")
La cosa che non capisco è che il Debug.Print mi stampa il dato cercato, mentre quando passo ad associarlo alla variabile mi da errore: "Il campo non può essere aggiornato" (ma cosa deve aggiornare??? deve legere.....)

la cosa più assurda è che se creo un pulsante di test, ci associo lo stesso codice ( con in più il debug.print IDPneumatici), gli passo "artificialmente" le variabili, non ottengo nessun errore, ma esattamente il risultato che voglio ottenere....


Grazie
Andrea

10 Risposte

  • Re: DLookUp errore (Il campo non può essere aggiornato)

    Devi fare debug, nel senso ... arriva all'istruzione precedente e metti nella finestra di monitoraggio (espressioni di controllo) tutte le variabili in gioco, quindi
    • Forms!frmPrincipale!cbxCercaVeicolo.Column(0)
    • Stagione
    e vedi cosa ti dice come valori
    a me Stagione fa pensare ad un testo quindi mancherebbero gli apici
  • Re: DLookUp errore (Il campo non può essere aggiornato)

    Jocman ha scritto:


    ... da errore: "Il campo non può essere aggiornato" (ma cosa deve aggiornare??? deve legere.....)
    La maschera è associata ad un'origine dati in cui è presente un campo IDPneumatici?
    In questo caso è probabile che la riga
    IDPneumatici = DLookup("Tipo", ... 
    venga letta non come valorizzazione della variabile IDPneumatici quanto inserimento del risultato nel campo del recordsource.
    In questo caso basta cambiare il nome della variabile.

    Domanda a margine:
    DLookup("Tipo", "tblPneumatici", "[IDVeicolo]=" ... And [Tipo]=" & Stagione & ...)
    non restituirà sempre e già il contenuto di (quella che presumo essere la variabile) Stagione?

    Occhio alla gestione del risultato Null di un DLookup
  • Re: DLookUp errore (Il campo non può essere aggiornato)

    muttley005 ha scritto:


    Devi fare debug, nel senso ..
    • Forms!frmPrincipale!cbxCercaVeicolo.Column(0)
    • Stagione
    e vedi cosa ti dice come valori
    a me Stagione fa pensare ad un testo quindi mancherebbero gli apici
    L'avevo fatto (in effetti qualche riga più su c'è il debug di quei due valori) e restituisce i valori corretti che mi aspetto.
    In ogni caso sono entrambe numeri (uno è l'ID della vettura, Stagione varia 1 o 2 a seconda se estate/inverno)

    Philcattivocarattere ha scritto:


    La maschera è associata ad un'origine dati in cui è presente un campo IDPneumatici?
    No, è il solo nome presente.

    Comunque dopo aver letto e riletto fino a cecarmi, ho pensato bene di affidarmi alla funzione TROVA per cercare eventuali istanze "IDPneumatici".
    E lì ho capito.....Ne continuava a trovare solo una (quella associata al DLookUp), ignorando bellamente la definizione della variabile 2 righe più su....Provate a leggerla anche voi.....

    nel pulsante di TEST tutto funzionava perchè invece di fare copia/incolla, l'ho riscritta a mano, e stavolta senza dislessia.....
    Ma porc......

    Grazie sempre a tutti per il supporto

    Andrea
  • Re: DLookUp errore (Il campo non può essere aggiornato)

    Jocman ha scritto:


    ...Ne continuava a trovare solo una (quella associata al DLookUp), ignorando bellamente la definizione della variabile 2 righe più su....Provate a leggerla anche voi.....
    Guarda, l'ho ciccata un paio di volte scrivendo il post, a questo punto è colpa sicuramente tua perché copiavo.
    E' forse presente OPTION EXPLICIT all'inizio del modulo? Se non c'è possiamo usare questo thread come esempio della sua non utilità ma necessità?
  • Re: DLookUp errore (Il campo non può essere aggiornato)

    Philcattivocarattere ha scritto:



    E' forse presente OPTION EXPLICIT all'inizio del modulo? Se non c'è possiamo usare questo thread come esempio della sua non utilità ma necessità?
    C'è....c'è......purtroppo c'è...... e a maggior ragione non capisco perchè non mi segnalasse che quella variabile (associata al DLookUp) non era stata definita....
  • Re: DLookUp errore (Il campo non può essere aggiornato)

    Jocman ha scritto:


    Philcattivocarattere ha scritto:


    E' forse presente OPTION EXPLICIT all'inizio del modulo?
    C'è... non capisco perchè non mi segnalasse che quella variabile (associata al DLookUp) non era stata definita....
    Tutto è bene quel che finisce bene. Però si può fare meglio, nel senso che un errore segnalato in un certo modo che ha un motivo completamente diverso mi suona strano assai.
    Quel codice è in una maschera o in una funzione presente in un modulo standard?
    Hai premuto il consueto pulsante Debug-Compila?
    Un'ulteriore operazione per curiosità mia: lasciando la dichiarazione intenzionalmente SBAGLIATA per replicare la situazione di prima, prova a mettere il punto dopo la variabile (ammesso che lo sia) IDPneumatici, quella a cui assegni il risultato del DLookup. Si attiva l'intellisense? Se sì, cosa propone?
  • Re: DLookUp errore (Il campo non può essere aggiornato)

    Philcattivocarattere ha scritto:



    Tutto è bene quel che finisce bene. Però.....
    Incuriosito ho spulciato tutto, da cima a fondo, maschera per maschera, elemento per elemento.

    In effetti (e in quel caso avevo sbagliato a verificare l'origine dati) il problema si verifica in una subform (avevo verificato erroneamente la form principale) che origina in una tabella in cui è presente il campo IDPneumatici (non presente in subform). Seguendo il tuo suggerimento (l'errore consapevole) in effetti l'intelli"coso" mi fornisce una (sola) opzione dopo il punto (value).

    Ho imparato una cosa nuova (non avevo idea di questo comportamento).
  • Re: DLookUp errore (Il campo non può essere aggiornato)

    Jocman ha scritto:


    Seguendo il tuo suggerimento (l'errore consapevole) in effetti l'intelli"coso" mi fornisce una (sola) opzione dopo il punto (value).
    E' giusto che sia così.

    Jocman ha scritto:


    ...il problema si verifica in una subform ... che origina in una tabella in cui è presente il campo IDPneumatici...
    ehm ehm...

    Philcattivocarattere ha scritto:


    ...
    In questo caso è probabile che la riga
    IDPneumatici = DLookup("Tipo", ... 
    venga letta non come valorizzazione della variabile IDPneumatici quanto inserimento del risultato nel campo del recordsource.
    No, dico, ehm ehm.
    (Con Jocman so che posso fare qualche colpetto di tosse strategico)
  • Re: DLookUp errore (Il campo non può essere aggiornato)

    Philcattivocarattere ha scritto:



    No, dico, ehm ehm.
    (Con Jocman so che posso fare qualche colpetto di tosse strategico)
    Malanno da cambio stagione?

    Cmq come sai sono sempre benvenute le critiche costruttive e gli scappellotti, così come sono il primo ad autocriticarmi (soprattutto per l'ignoranza).
    Come in questo caso, non sapevo che fosse possibile anche...interagire direttamente con i campi di una tabella anche in questo modo. Non so che uso ne potrei fare in futuri sviluppi (che visto l'andazzo in ufficio, saranno rari ormai - la sopportazione ha un limite, e ci sto a 1 millimetro ormai...), ma non si sa mai. e comunuqe mi viene da dire che fino ad oggi sono stato fortunato, non mi era mai capitato, e solo perchè ho fatto quell'errore "di sbaglio" nella definizione della variabile, perchè uso spesso (se non sempre) gli stessi nomi dei campi quando uso variabili (così da sapere con certezza a chi vengono associate)
  • Re: DLookUp errore (Il campo non può essere aggiornato)

    Jocman ha scritto:


    Philcattivocarattere ha scritto:


    No, dico, ehm ehm.
    Malanno da cambio stagione?
    No, è cronico quello lì.

    Jocman ha scritto:


    ...
    Come in questo caso, non sapevo che fosse possibile anche...interagire direttamente con i campi di una tabella anche in questo modo.
    Fai attenzione: stai semplicemente interagendo con l'origine dati della maschera. Nel caso specifico è una tabella. Non puoi interagire con altre tabelle o query allegramente.

    Jocman ha scritto:


    ...Non so che uso ne potrei fare in futuri sviluppi ...
    Presumo prossimo al nullo

    Jocman ha scritto:


    ma non si sa mai.
    esatto.

    Jocman ha scritto:


    e comunuqe mi viene da dire che fino ad oggi sono stato fortunato
    direi proprio che hai fatto incosapevole uso del fattore C (noto in informatica per essere anche un linguaggio di programmazione e in molti altri settori per essere alla base di molti successi)
Devi accedere o registrarti per scrivere nel forum
10 risposte