Salvataggio record con valori di default in sottomaschere

di il
5 risposte

Salvataggio record con valori di default in sottomaschere

Buongiorno,

vi chiedo gentilmente aiuto.
Premetto che sono novizio di Access, sto studiando e sono poco pratico di VBA e MACRO.

- Ho una Maschera che salva dati in una tabella chiamiamola "TABELLA"
- Nella stessa maschera ho due sottomaschere che salvano i dati in due tabelle differenti "TABELLA1" e "TABELLA2"
- I valori di "TABELLA1" e "TABELLA2" sono tutti settati con valori di DEFAULT

Se modifico i valori in TABELLA e non tocco quelli in TABELLA1 e TABELLA2 non vengono salvati questi ultimi non vengono salvati.
Ho chiarissimo il concetto legato all'evento/proprietà DIRTY e il perchè non vengono salvati i valori di default nelle sottotabelle.

Ho provato leggendo alcuni post ad impostare un pulsante SULLA MASCHERA PRINCIPALE "SALVARECORD" che va a salvare in modo "nascosto" un valore della sottomaschera in modo che la proprietà DIRTY cambi a TRUE ma non mi riconosce i campi delle sottomaschere, come se non solo quelli della principale.

Avete qualche suggerimento?
Che codice/macro potrei utilizzare?

Grazie a tutti

5 Risposte

  • Re: Salvataggio record con valori di default in sottomaschere

    Potresti elencare tutti i campi di TABELLA, TABELLA1, TABELLA2?
  • Re: Salvataggio record con valori di default in sottomaschere

    Kelven77 ha scritto:


    Buongiorno,

    vi chiedo gentilmente aiuto.
    Premetto che sono novizio di Access, sto studiando e sono poco pratico di VBA e MACRO.

    - Ho una Maschera che salva dati in una tabella chiamiamola "TABELLA"
    - Nella stessa maschera ho due sottomaschere che salvano i dati in due tabelle differenti "TABELLA1" e "TABELLA2"
    - I valori di "TABELLA1" e "TABELLA2" sono tutti settati con valori di DEFAULT

    Se modifico i valori in TABELLA e non tocco quelli in TABELLA1 e TABELLA2 non vengono salvati questi ultimi non vengono salvati.
    Ho chiarissimo il concetto legato all'evento/proprietà DIRTY e il perchè non vengono salvati i valori di default nelle sottotabelle.
    Evento e Proprietà Dirty sono ben differenti, ma nel tuo caso non c'entrano nulla... il problema è a monte, ovvero commetti un grave errore concettuale.

    Kelven77 ha scritto:


    Ho provato leggendo alcuni post ad impostare un pulsante SULLA MASCHERA PRINCIPALE "SALVARECORD" che va a salvare in modo "nascosto" un valore della sottomaschera in modo che la proprietà DIRTY cambi a TRUE ma non mi riconosce i campi delle sottomaschere, come se non solo quelli della principale.

    Avete qualche suggerimento?
    Che codice/macro potrei utilizzare?

    Grazie a tutti
    Non ti è chiaro cosa siano i DEFAULT value e come lavori Access.
    Quello che ti accade è giusto, perchè di fatto NON STAI INSERENDO nulla...!
    Per inserire un Record devi EDITARE almeno 1 CAMPO a mano e viene salvato, oppure da codice e forzi poi il salva sempre da vba.
    Ovviamente si deve salvare prima lato 1(quindi Tabella) e poi lato Molti, quindi Tabella1-2, per le regole relazionali.

    In sostanza il valore di DEFAULT, come è ovvio che sia, non GENERA alcun vero inserimento finchè l'operatore o il programmatore non intervengono.
  • Re: Salvataggio record con valori di default in sottomaschere

    OsvaldoLaviosa ha scritto:


    Potresti elencare tutti i campi di TABELLA, TABELLA1, TABELLA2?
    OSvaldo... non serve a nulla, il problema è di concetto operativo.
  • Re: Salvataggio record con valori di default in sottomaschere

    Grazie delle risposte.
    Ripremetto che non sono un programmatore, sto imparando.

    Alex, Il concetto di default mi è chiarissimo.
    La mia idea era quella di modificare tramite codice uno dei valori di default (con lo stesso valore) durante la procedura di salvataggio.
    Questo, se non sbaglio, produrrebbe una modifica e di conseguenza un salvataggio nel record.

    Il problema è che nella funzione VBA legata al pulsante nella maschera èprincipale non mi riconosce i campi delle sotto maschere.

    Capisco che è un problema relazionale/concettuale, giusto?

    schematico

    TABELLA
    Codice_quotazione (chiave primaria)
    Venditore
    data_vendita

    TABELLA 1
    Codice_quotazione (chiave primaria)
    prezzo_importazione

    TABELLA 2
    Codice_quotazione (chiave primaria)
    prezzo_esportazione

    le relazioni sono uno/uno

    Le tabelle sono collegate tramite Codice_quotazione

    grazie
  • Re: Salvataggio record con valori di default in sottomaschere

    Kelven77 ha scritto:


    Grazie delle risposte.
    Ripremetto che non sono un programmatore, sto imparando.

    Alex, Il concetto di default mi è chiarissimo.
    Spero, ma dal tuo primo post per come lo hai esposto non era così, tuttavia se per te è chiaro adesso va bene.

    Kelven77 ha scritto:


    La mia idea era quella di modificare tramite codice uno dei valori di default (con lo stesso valore) durante la procedura di salvataggio.
    Questo, se non sbaglio, produrrebbe una modifica e di conseguenza un salvataggio nel record.
    No, ovvero facendo un editing da codice non si scatenano gli eventi, quindi NON SALVA, ma puoi, dopo l'editing, salvare tu...
    
    DoCmd.RunCommand acCmdSaveRecord
    

    Kelven77 ha scritto:


    Il problema è che nella funzione VBA legata al pulsante nella maschera èprincipale non mi riconosce i campi delle sotto maschere.
    Capisco che è un problema relazionale/concettuale, giusto?
    Credo sia un problema di sintassi, ma se non la mostri non saprei...
    Ad esempio dalla maschera principale se devi editare i dati in una SottoMaschera, cosa che io eviterei perchè la sottomaschera è in Fomato Continuo, e non è mai bello, la sintassi è questa
    
    Me!NomeSubForm!NomeControllo.Value="PIPPO"
    Ora mi chiedo perchè metti i DefaultValue se poi valorizzi da codice... ma vedrai tu...!
    Personalmente però, fossi in te, userei l'evento Current della SubForm, intercettando il NewRecord ed inserirei li la valorizzazione forzata del testo:
    
    Option Compare Database
    Option Explicit
    
    Private Sub Form_Current()
        If Me.NewRecord Then
            Me.TuoControllo.Value=Replace(me.TuoControllo.DefaultValue,chr(34),vbNullstring)
        End If
    End Sub
    
    Qui ci sarebbe da aprire una parentesi, in quanto il contenuto della proprietà DefaultValue, sintatticamente cambia a seconda del FieldType associato.
    Se il Campo è Testo, la proprietà include oltre al Valore anche le Virgolette prima e dopo(motivo per il quale ho inserito il Replace)... se è un Numero no, se è una data... ecc...!

    Quindi probabilmente ti suggerirei di farlo su un SOLO campo di Tipo Testo, è sufficiente non serve farlo su tutti, gli altri poi vengono valorizzati con il Default regolarmente.

    Kelven77 ha scritto:


    schematico

    TABELLA
    Codice_quotazione (chiave primaria)
    Venditore
    data_vendita

    TABELLA 1
    Codice_quotazione (chiave primaria)
    prezzo_importazione

    TABELLA 2
    Codice_quotazione (chiave primaria)
    prezzo_esportazione

    le relazioni sono uno/uno

    Le tabelle sono collegate tramite Codice_quotazione

    grazie
Devi accedere o registrarti per scrivere nel forum
5 risposte