Inserimento dati da sottomaschera

di il
27 risposte

Inserimento dati da sottomaschera

Buonasera, ho un problema che non riesco a risolvere con le mie conoscenze e quindi provo a scrivervi.

Ho due tabelle, Componenti (Tabella principale) ed Elementi (Correlata alla prima con ID_coomponente).

Ho una maschera di inserimento che fa riferimento alla tabella Componenti con inserita una sottomaschera Elementi, collegata alla prima tramite ID_componente ed avente una query (che fa riferimento alle due tabelle) come origine dati.

Nella maschera principale creo e salvo i record senza problemi, nella sottomaschera no: appena digito un carattere nel campo NomeElemento mi restituisce l'errore “L'oggetto non contiene l'oggetto Elementi” e non salva i dati che però io vedo salvati nel controllo.

Il problema sta nell'ID_Componente che non viene salvato, ma non riesco a capire perchè.

Grazie se qualcuno mi può aiutare.

Yuri

27 Risposte

  • Re: Inserimento dati da sottomaschera

    La prima cosa da appurare è che tu abbia relazionato le 2 tabelle 1(tbl Componenti)-Molti(tbl Elementi) e che nellantabella Elementi ci sia il campo Chiave Esterna che lega ogni Elemento ad un componente.

    Fatto e consolidato questo la sottomaschera, anzi il Container o Cornice, deve essere legato nelle proprietà Campi Master/Secondari alla PK della Maschera e la FK della sottomaschera.

    In sostanza se realizzavi tutto con AUTOCOMPOSIZIONE lo faceva da solo se le tabelle sono correttamente relazionate.

  • Re: Inserimento dati da sottomaschera

    Ciao Alex e grazie della risposta. Si quello che hai scritto l’ho fatto, provato e riprovato. Per prima cosa ho instaurato una relazione referenziale, poi l’ho tolta…ma il risultato è sempre lo stesso.

    Ho inserito dei controlli per monitorare gli id di collegamento tra le maschere e noto che appena clicco su “nuovo elemento” vengono persi tutti i riferimenti e l’inserimento dei dati non va a buon fine.

  • Re: Inserimento dati da sottomaschera

    Ciao,

    hhhhmmmmmm…. io posterei immagine della relazione, della connessione Form e SubForm, l'origine Dati delle Form

    Hai citato query… non vorrei che la source non sia adeguata allo scopo.

  • Re: Inserimento dati da sottomaschera

    Buongiorno, posto alcune immagini dell'errore…quando inserisco il testo nel controllo “Nome Elemento” mi viene restituito quell'errore.

  • Re: Inserimento dati da sottomaschera

    13/10/2023 - Yuri ha scritto:


    Buongiorno, posto alcune immagini dell'errore…quando inserisco il testo nel controllo “Nome Elemento” mi viene restituito quell'errore.

    Ok …. quindi come sorgente hai una Query.

    apri la query in questione e verifica se ti fa aggiornare o aggiungere nuovi records…. secondo me non te lo permette.

    Pertanto se il problema è la query che non ti consente di modificare o aggiungere records, ovviamente e altrettanto si riflette anche sulle form 

    Un conto vedere i records, altro conto modificare o aggiungere records

  • Re: Inserimento dati da sottomaschera

    Ciao, la query mi seleziona correttamente i dati chiedendomi id_componente come da istruzione. Mi sono accorto però che, da form, quando cerco di salvare i dati, mi inserisce un nuovo id_materiale. Ora proverò ad inserire manualmente, da codice, ogni record per verificare la correttezza dei dati e vediamo…ti farò sapere. 

  • Re: Inserimento dati da sottomaschera

    13/10/2023 - Yuri ha scritto:


    Ciao, la query mi seleziona correttamente i dati chiedendomi id_componente come da istruzione. Mi sono accorto però che, da form, quando cerco di salvare i dati, mi inserisce un nuovo id_materiale. Ora proverò ad inserire manualmente, da codice, ogni record per verificare la correttezza dei dati e vediamo…ti farò sapere. 

    Ok… allora verifica bene il legame delle chiavi di relazione tra le form come ti diceva l'ottimo @Alex. 

    Quindi :

    • Verifica campi chiave relazioni tra le tabelle 
    • verifica che la query che usi come origine dati consenta di modificare e aggiungere records
    • verifica chiavi tra campi Master e Secondari
  • Re: Inserimento dati da sottomaschera

    Una curiosità, quel dbedit con scritto “#Nome?” a quale campo e tabella fa riferimento?

    poi accanto c'e' idcomponente vuoto.

    solo per puntiglio, un dbedit con label “Smontaggio/Smontaggio”.

    vari tentativi di query in copia e copia_copia…

    un consiglio, prima di impostare la grafica del form, controlla se le tabelle sono ben relazionate e si aggiornano.

    da quello che vedo, hai già inserito i dati di A_000_Componenti.

    che criterio hai messo nella query? A_010_Co…. (non leggo piu') dove lo vedi nelle tabelle?

    ancora, a che ti serve una query? metti le tabelle con le relazioni e mostri i campi che devi aggiornare.

  • Re: Inserimento dati da sottomaschera

    12/10/2023 - Yuri ha scritto:


    Ho una maschera di inserimento che fa riferimento alla tabella Componenti con inserita una sottomaschera Elementi, collegata alla prima tramite ID_componente ed avente una query (che fa riferimento alle due tabelle) come origine dati.

    quindi hai la tabella madre collegata ad una query che accorpa madre e figlia? PERCHEEEE!!!!!????

    l'unica logica sarebbe avere la tabella componenti relazionata con una query che include elementi e materiali per vedere in unica riga l'elemento di che codicemateriale e descrizionemateriale è fatto, ma, in questo caso, per aggiungere record a elementi e materiali, devi avere il pulsantino Aggiungi a elemento e il pulsantino aggiungi a materiale (che possono essere le tabelle relazionate visibili in insertmode o editmode).

    Finito l'inserimento aggiorni la query (anche in caso di eliminazione record).

  • Re: Inserimento dati da sottomaschera

    Ciao, no, la maschera padre fa riferimento ad una tabella, la sottomaschera ad una query, non capisco dove sbaglio e sto tentando altre strade per aggirare l'errore. In buona sostanza quando premo “Nuovo elemento” nella sottomaschera, non si posiziona sul nuovo record della tabella “Elementi”. 

    Il codice che uso per l'inserimento di nuovo record è il seguente:

    Public Sub NuovoElemento_Click()
    On Error Resume Next
       
    Dim DBCorrente As DAO.Database
    Dim Tabella As DAO.Recordset

    Set DBCorrente = CurrentDb
    Set Tabella = DBCorrente.OpenRecordset("B_000_Elementi", dbOpenTable)


       Me.ID_componente.Value = Form_A_010_Componenti_Consulta_Modifica.ID_componente.Value
       
      
       DoCmd.GoToRecord "B_000_Elementi", , acNewRec
      
      
       Me.txtNomeElemento.SetFocus


    End Sub

  • Re: Inserimento dati da sottomaschera

    Se voglio inserire un nuovo elemento premendo il tasto “Nuovo” non si posiziona sul nuovo record e se provo ad inserirlo da maschera mi da l'errore che ho indicato nei post precedenti. Se provo ad inserire il nuovo record direttamente nella tabella non ci sono problemi.

  • Re: Inserimento dati da sottomaschera

    13/10/2023 - Yuri ha scritto:


    Ciao, no, la maschera padre fa riferimento ad una tabella, la sottomaschera ad una query, non capisco dove sbaglio

    Una tabella è una query con questa sql: select * from tabella.

    La query puoi relazionarla come relazioni la tabella.

    Se nella query inserisci i campi della tabella madre è come voler rendere figlia la tabella madre.

    In altri termini, stai mettendo in relazione la tabella madre, la tabella madre + la tabella figlia (la tua query).

    Come ti è stato detto, non tutte le query possono inserire o modificare record.

    Togli il riferimento alla tabella madre presente nella query (noterai che a questo punto la query conterrà solo la figlia e la sottofiglia).

    Non è detto che in questo caso puoi modificare i dati.

    Se ci sono campi richiesti che non richiami nella query, non puoi aggiornare i dati.

    La logica vuole che per visualizzare la rubrica telefonica hai un elenco, per modificare o aggiungere un contatto si apre un'altra form. Poi, per carità, nulla vieta di usare un unico form.

    Per il tuo problema, modifica la query o, se puoi, toglila e usa direttamente la t abella.

  • Re: Inserimento dati da sottomaschera

    Quelle che suggerisci sono le soluzioni che sto percorrendo, resta il fatto che nella query riesco a modificare ed inserire i dati ma dalla form no.

  • Re: Inserimento dati da sottomaschera

    Ho creato una nuova form per l'inserimento degli Elementi e funziona ma il comando

        DoCmd.GoToRecord "B_000_Elementi", , acNewRec

    che utilizzo per inserire un nuovo record non crea un nuovo record ma mi fa modificare quello corrente, ho provato a spostarmi all'ultimo record ma niente…

Devi accedere o registrarti per scrivere nel forum
27 risposte