Campo con compilazione proposta e successivamente modificabile

di il
10 risposte

Campo con compilazione proposta e successivamente modificabile

Buongiorno,
avrei bisogno di un aiuto perchè non vengo a capo di un problemino, ossia:
Ho 2 tabelle (AnagraficaClienti e Preventivi), collegate tra loro dal campo CodiceCliente, dove ad ogni CodiceCliente possono corrispondere più NumeroPreventivo (campo presente nella tabella Preventivi)
Quando faccio un Preventivo, deve potermi apparire nella maschera del Preventivo la Resa (modalità di resa standard concordata con quel cliente) e deve essere modificabile solo per quel Preventivo e non per il Cliente; faccio un esempio per meglio spiegare cosa mi occorre: con il cliente PIPPO ho di default una Resa FCA che è registrata nella sua anagrafica; nello specifico preventivo che sto facendo la devo far diventare DAP, ma deve rimanere solo salvata ed associata solo a quel preventivo, non deve diventare la resa di default nuova. Ora purtroppo invece accade che se cambio la Resa sul preventivo, me la cambia sul cliente e su tutti i preventivi che ho fatto in passato e che farò in futuro, questo perchè la RESA che vedo nel preventivo è quella del campo presente nell'AnagraficaCliente.

Ho provato a creare un nuovo campo sul Preventivo ma poi come faccio a dirgli "prendi la RESA dall'AnagraficaCliente" e poi lo modifico solo se voglio?

Spero di aver chiarito bene il problema.
Grazie in anticipo

10 Risposte

  • Re: Campo con compilazione proposta e successivamente modificabile

    Dal momento che il campo [Resa] definito in Anagrafica di fatto viene usato come Valore di DEFAULT ma potrebbe essere da modificare è evidente che serva lo stesso Campo nella Tabella [Preventivi]... che andrai a valorizzare come DefaultValue prendendolo dall'anagrafica ma lasciandolo Libero.
    Quindi sul Controllo [Resa] della Maschera appoggiata a [Preventivi] andrai ad inserire in Valore di Default:
    =DlookUp("Resa";"Anagrafica";"CodiceCliente=" & [CodiceCliente])
    Servirebbe a mio avviso una Tabella [Resi] in modo da deffinire la Modalità in modo Univoco relazionata.
  • Re: Campo con compilazione proposta e successivamente modificabile

    Ho provato ma c'è qualcosa che non va, perchè mi restituisce un campo vuoto (mentre vuoto non dovrebbe essere).
    I campi coinvolti sono:
    - CodiceCliente (presente sia nella tabella "Anagrafica Clienti" che nella tabella "Preventivi")
    - Resa (presente nella tabella "Anagrafica Clienti" e che rappresenta il cosiddetto valore di default)
    - ResaOFF (presente nella tabella "Preventivi" e che dovrebbe caricare dapprima il valore presente in Resa per poi essere eventualmente modificato)

    Entrando in struttura della maschera di inserimento dei preventivi, al campo ResaOFF, nella finestra delle proprietà del campo, alla voce "Valore predefinito" ho messo =DLookUp("Resa";"Anagrafica Clienti";"CodiceCliente=" & [CodiceCliente])

    Dove sbaglio? Perchè uscendo dalla struttura della maschera il campo RESAOFF appare vuoto?
  • Re: Campo con compilazione proposta e successivamente modificabile

    Siamo sicuri che il campo [CodiceCliente] è di tipo Numerico? Se non lo è, la sintassi del terzo argomento DLookUp deve cambiare.
    Poi...so che non è di fondamentale importanza, ma nella maggior parte degli esempi che trovo in giro riguardo le sintassi Dxxx, il primo argomento campo viene scritto con le parentesi quadre, quindi "[Resa]".
  • Re: Campo con compilazione proposta e successivamente modificabile

    E' un codice alfa numerico, tipo A001. Quindi cosa devo fare?
  • Re: Campo con compilazione proposta e successivamente modificabile

    Per i campi di tipo String/Testo breve leggi qui

    http://it.accessrepairnrecovery.com/blog/modi-to-uso-ms-access-dlookup-funzione
    però si tratta di VBA, nel tuo caso la separazione tra argomenti avviene col punto-virgola e il terzo argomento non credo accetti l'apice singolo. Fai varie prove, oppure prova questa
    =DLookUp("[Resa]";"Anagrafica Clienti";"CodiceCliente = [Maschere]![NomeMaschera]![CodiceCliente]")
    Se ancora non funziona...attendi congrua risposta da @Alex o altro utente esperto...
  • Re: Campo con compilazione proposta e successivamente modificabile

    Ho letto ambedue i link che mi avevi inviato e danno gli stessi comandi che mi hai inviato, quindi ho provato in due modi:
    a) =DLookUp("[Resa]";"Anagrafica Clienti";"CodiceCliente= '[Maschere]![Preventivi Elaborazione]![CodiceCliente]'")
    b) =DLookUp("[Resa]";"Anagrafica Clienti";"CodiceCliente= [Maschere]![Preventivi Elaborazione]![CodiceCliente]")
    quindi sia con ' singolo che senza, ma non funziona, il campo resta vuoto.
    Giusto per essere chiara: il comando sopra l'ho inserito nel campo "Valore predefinito" nella Finestra delle proprietà del campo RESAOFF (che è il campo riguardante la RESA ma nella tabella dei preventivi). E' corretto metterlo lì?

    Cos'altro devo fare / controllare per farlo funzionare?
  • Re: Campo con compilazione proposta e successivamente modificabile

    Lo devi mettere nel CONTROLLO associato al campo, quindi nella Maschera.
  • Re: Campo con compilazione proposta e successivamente modificabile

    Fatto, e così funziona, nel senso che mi riporta nel campo il valore corrispondente al dato presente in Anagrafica Cliente; solo che così non mi permette di correggerne il contenuto. Perchè?
  • Re: Campo con compilazione proposta e successivamente modificabile

    E inoltre vedo che il dato RESAOFF, nella tabella Preventivi, non viene salvato, ne senso che nella tabella il valore non si salva
  • Re: Campo con compilazione proposta e successivamente modificabile

    Serve colmare qualche lacuna di conoscenza...!!!

    Se in una maschera, metti come Origine Controllo una funzione calcolata, il controllo NON RISULTA editabile.
    Se invece la funzione va a valorizzare il Valore Predefinito, allora quando andrai ad inserire il NUOVO RECORD, verrà valorizzato con il corretto risultato.
    Se quel controllo è associato ad un campo in Tabella il valore verrà salvato solo quando salvi il Record.

    Se non funziona così stai sbagliando qualche cosa di BASILARE, e quì ti rimandiamo ad un buon testo di Access per avere una visione più completa di come si gestiscono i dati.
Devi accedere o registrarti per scrivere nel forum
10 risposte