Conferma record su campi a valore default

di il
19 risposte

Conferma record su campi a valore default

Ciao a tutti,
ho cercato un pò su internet una soluzione al seguente quesito ma non ho avuto fortuna (o non sono stato bravo con la stringa di ricerca), percui vorrei sottoporre a voi la questione cercando di spiegarla nel modo più chiaro possibile.
Premetto che sono un autodidatta di access, percui abbiate pietà delle mie lacune.
Lo scenario è il seguente: 2 tabelle (appuntamenti e vendite) collegate in relazione 1 a molti su cui ho costruito la maschera principale 'appuntamenti' che contiene la sottomaschera collegata 'vendite'. In 'appuntamenti' sono presenti solo un campo ID contatore e un campo data con default data odierna.
Il problema nasce nell'inserimento di un nuovo record su 'appuntamenti'; infatti access non mi permette di inserire dati nella sottomaschera fin quando non ho selezionato manualmente la data, cosa che vorrei evitare in quanto ho messo apposta il default. Solo modificando il campo access mi crea il nuovo record (valorizzando quindi di conseguenza il contatore) e mi permette di inserire dati sulla sottomaschera senza violazioni della relazione.
La mia idea era di aprire la maschera principale lasciando enable=false la sottomaschera, successivamente confermare in qualche modo il record (tramite un pulsante apposito o meglio gestendo un qualche evento) ebilitando al contempo la sottomaschera per l'inserimento delle vendite correlate allo specifico appuntamento.
Ho provato con i seguenti comandi tramite pulsante ma senza risultato:
Private Sub Comando39_Click()
    DoCmd.RunCommand acCmdSaveRecord
    If Me.Dirty = True Then Me.Dirty = False
    Me.frm_STM_VenditaDettaglioNew.Enabled = True
End Sub
Qualche suggerimento?

19 Risposte

  • Re: Conferma record su campi a valore default

    Il fatto che tu abbia un valore Date() di default non garantisce che il nuovo record di Appuntamenti sia validato subito.

    Personalmente direi che...considerato che in Appuntamenti hai solo i campi IDAppuntamento e Data...Data è un tipo di campo "un po' bastardo", nel senso che non vale la pena indicizzare e/o eleggere come campo significativo da solo. Forse uso termini non adeguati, ma più semplicemente io non avrei creato la gerarchia Appuntamenti uno-a-molti Vendite e avrei inglobato il campo Data nella tabella Vendite.
  • Re: Conferma record su campi a valore default

    Quello che dici ha qualche cosa che non torna... hai messo obbligatorio il campo data per caso..? Toglilo se hai messo il default value.
    Altrimenti non è possibile si comporti come dici a meno di errori perché avendo come PK un counter appena ti sposti nel nuovo Vendite viene inserito l'appuntamento...
  • Re: Conferma record su campi a valore default

    OsvaldoLaviosa ha scritto:


    Il fatto che tu abbia un valore Date() di default non garantisce che il nuovo record di Appuntamenti sia validato subito.

    Personalmente direi che...considerato che in Appuntamenti hai solo i campi IDAppuntamento e Data...Data è un tipo di campo "un po' bastardo", nel senso che non vale la pena indicizzare e/o eleggere come campo significativo da solo. Forse uso termini non adeguati, ma più semplicemente io non avrei creato la gerarchia Appuntamenti uno-a-molti Vendite e avrei inglobato il campo Data nella tabella Vendite.
    Sulla questione campo data hai detto veramente un sacco di cose... sbagliate... sono educato.
    Un campo data è un campo come tutti gli altri... e vale la pena indicizzarlo, esattamente come qualsiasi altro campo se serve indicizzarlo.... non "ad minchiam".

    Chiaramente occorre sapere perché si indicizzano i campi... non certamente a caso... e via dalla Pk che ha vincoli... gli altri campi richiedono una altrettanta valutazione se possono o se sia opportuno vengano indicizzati, e dal momento che il numero di indici in una tabella è limitato direi che servono le idee chiare.
  • Re: Conferma record su campi a valore default

    Grazie a tutti per le risposte, ma il punto non è tanto il campo data in sè, in quanto ho fatto questo esempio per semplificare al massimo la problematica ma in realtà potrei avere la maschera appuntamenti con n campi (obbligatori o meno) su cui magari ho già pre-impostato su tutti un default che vorrei venisse valorizzato al momento che faccio click su un pulsante. Così -a livello logico- non mi parrebbe un gran problema per access, che dovrebbe banalmente creare il nuovo record con i dati già preimpostati a parte l'id che si gestisce in autonomia, ma evidentemente a livello di funzionamento non è così semplice..
  • Re: Conferma record su campi a valore default

    Infatti non è e non deve essere il problema... ma evidentemente hai qualche cosa di impostato male... e vedrai che è banale... di più senza altri elementi non possiamo dire.
  • Re: Conferma record su campi a valore default

    Può essere dovuto al fatto che la maschera principale è aperta tramite pulsante che richiama la macro "apriMaschera' in visualizzazione 'Maschera' con modalità immisione dati 'aggiungi' e modalità finestra 'normale'?
  • Re: Conferma record su campi a valore default

    Mi dispiace insistere ma confermo la problematica; ho creato un db da zero con un paio di tabelle correlate come descritto sopra e il funzionamento è identico: nonostante i default sulla maschera principale si hanno i seguenti comportamenti:
    - il nuovo record non viene inserito fino alla modifica esplicita di un campo qualsiasi (infatti nella barra di scorrimento record non è abilitato il pulsante per avanzare di un record fino alla suddetta modifica)
    - l'inserimento di dati nella sottomaschera (non obbligato) causa immediato errore di violazione della chiave in quanto non è ancora valorizzato l'id della tabella madre

    DImenticavo: uso Access 2010
  • Re: Conferma record su campi a valore default

    Se vogliamo semplificare ancora di più: anche una sola maschera riferita ad una singola tabella non permette (nonostante tutti i campi obbligatori valorizzati come default) di memorizzare il record (solito tasto sulla barra di scorrimento record non presente).
  • Re: Conferma record su campi a valore default

    Prova con una cosa semplice
    1 campo counter pk
    1 campo testo...

    Senza default value
    senza obbligo
    consenti valori nulli...

    Faccio sapere...
  • Re: Conferma record su campi a valore default

    Idem come sopra. Forse più che nel record globale il problema sta nella valorizzazione del contatore.. ossia probabilmente access lo calcola solo in seguito alla modifica di uno qualsiasi degli altri campi. In questo caso bisognerebbe trovare il modo di forzarlo con un comando esplicito..
  • Re: Conferma record su campi a valore default

    Certo questo è evidente... ma se i campi non sono obbligatori ed accettano null... nel momento in cui inserisci un sottorecord nella sottomaschera...
  • Re: Conferma record su campi a valore default

    Adesso non ci sono più neanche sottomaschere.. confermo che il problema si verifica anche banalmente con una tabella composta da:
    - ID (pk, contatore)
    - NOTA (testo, no default, non obbligato, null=yes)

    Se non si valorizza in qualche modo NOTA non si inserisce record..
  • Re: Conferma record su campi a valore default

    La PK è come un DefaultValue quindi non genera eventi.
    Quindi senza SubForm è assolutamente ovvio...
    Certo se vuoi salvare un record a prescindere appena entri nel nuovo... fai un salva su evento Current se NewRecord=true
    Concettualmente devi assimilare la differenza tra assegnare un valore da codice rispetto alla digitazione...
  • Re: Conferma record su campi a valore default

    A parte che -come già detto- anche con una sottomaschera la musica non cambia, ma io non voglio "salvare un record a prescindere".
    Chiedo semplicemente di poter memorizzare il record corrente con un pulsante.. per la serie: apro la maschera in inserimento nuovo record, verifico a colpo d'occhio che tutti i miei valori che ho impostato a default (che ripeto, potrebbero essere anche tanti!) siano corretti, se così è con un click memorizzo il record e passo al successivo. Non mi pare una richiesta fuori dal mondo, nè a livello logico nè tecnico.. possibile che nessuno abbia mai avuto questa esigenza? Il fatto poi che con tutti i campi già correttamente valorizzati sia costretto a fare comunque una modifica per attivare il contatore, questo sì che mi pare poco efficente..
Devi accedere o registrarti per scrivere nel forum
19 risposte