Collegamento campi master e secondari

di
Anonimizzato12099
il
11 risposte

Collegamento campi master e secondari

Salve, ho un problema con una maschera di un database che ho aperto.
Ho chiesto la stessa domanda su un altro forum 2 settimane fa senza esiti positivi, spero di non fare crossposting.
Cerco di descrivere il database (o perlomeno quello che ho capito io) : La maschera si chiama Specifiche e al suo interno ci sono due sotto maschere: SSpecifiche e SSDatiSpecifiche.
La maschera SSpecifiche è collegata alla tabella Dati_Capitolati mentre SSDatiSpecifiche è collegata alla tabella Dati tabelle specifiche. Queste due tabelle hanno due campi in relazione: Codice specifica con Codice specifica e Nome Tabella con Tabella.
Selezionando la sottomaschera SSDatispecifiche in proprietà nella sezione Collega campi Master trovo: Codice Specifica;[Nome Tabella]
Mentre in Collega campi secondari trovo: Codice Specifica;Tabella
Il risultato dovrebbe essere questo:
Infatti aprendo con un Access 97 non ho problemi, ma con il 2010 la tabella di destra è vuota, non carica nessun campo. Guardando le relazione tra tabelle ci sono dei riferimenti circolari a mio avviso strani ma non essendo un esperto non so se potrebbe essere quello il problema. Usando la creazione guidata dei campi non mi aiuta a risolvere questo problema.
Non so se sono stato abbastanza chiaro, vi ringrazio.

11 Risposte

  • Re: Collegamento campi master e secondari

    Lo scenario di avere 2 relazioni fra 2 tabelle mi suona davvero strano o per lo meno insolito. Ai fini del corretto funzionamento tra maschera/sottomaschera1/sottomaschera2 non credo possa produrre effetti senzati.
    Però hai detto che in Access 97 funzionava tutto correttamente. Io proverei a cancellare le relazioni fra tabelle, riscriverle per poi salvarle e infine ricostruire da zero lo scenario maschera/sottomaschera1/sottomaschera2.
    Non sono affatto certo di darti una risposta seria e convinta, prova come ti ho detto se proprio non ricevi altri suggerimenti.
  • Re: Collegamento campi master e secondari

    A parte confermare di aver visto il tuo post su un forum parallelo nel quale è passato un pò di tempo, quì l'immagine non si vede, ma l'ho vista nell'altro...!

    Da quanto pare, e nella tua descrizione non è chiaro, stai lavorando con 2 SUBFORM legate in Master/Child, attraverso 2 Controlli piazzati nella Form...?

    Il caso STANDARD è esposto quì:
    http://office.microsoft.com/en-us/access-help/create-a-form-that-contains-a-subform-a-one-to-many-form-HA010098674.aspx

    Mi pare molto strano che questo possa funzionare in A97 per come ci presenti la sintassi...!
    In sostanza la sintassi Multicampo è STANDARD, ma, se applicata ad una vera relazione Master/Child, ovvvero Form/SubForm il riconoscimento tra i Campi è senza Orginine, nel tuo caso l'origine non è un CAMPO, ma un Valore contenuto in un CONTROLLO che fa da SINCRONIZZATORE.
    Credo tu debba scrivere diversamente i rifeirmenti nelle Proprietà, ipotizzando quindi che lato MASTER siamo nella FORM PRINCIPALE e lato CHILD nella SUBFORM devi andare a definire il percorso del Campo/Controllo...

    Ovviamente quando hai NOMI con gli spazzi fai attenzione ad usare le [...]

    Prova a dare un'occhiata anche a questo che invece offre la soluzione di dettaglio anche se in MONO LINK ma la sintassi è corretta...(leggi fino in fondo all'articolo...) in particolare
    [A Subform Cannot Link to Fields in a Subform of its Parent]:
    http://www.fmsinc.com/microsoftaccess/forms/synchronize/linkedsubforms.asp
  • Re: Collegamento campi master e secondari

    Vi ringrazio per i consigli sono stati molto utili soprattutto il secondo link. Infatti io sono proprio in quella situazione e studiandomi la soluzione ho scoperto che la casella di testo nascosta nella maschera principale esiste già!. Ed è questa che non è funzionante dato che rendendola visibile si legge #ERRORE. Questa casella di testo è chiamata: Nome Tabella e in dati, origine controllo ha: =[SSpecifiche].[Form]![Nome Tabella]

    SSpecifiche è una delle due sottomaschere mentre Nome Tabella dovrebbe essere la casella combinata.

    Non capisco perchè non funzioni dato che seguendo la guida dovrebbe essere tutto giusto.

    Per quanto riguarda i consigli di Osvaldo invece; avevo già provato a cancellare le relazioni e provare ma niente, cosi le ho rimesse. Non ho ancora provato a ricreare tutto da zero ma a questo punto forse aspetterei perchè magari sistemando quella casella nascosta riesce a funzionare.
  • Re: Collegamento campi master e secondari

    Costruisci i riferimenti con il GENERATORE, potrebbe essere che la sintassi non sia quella che hai copiato...!
  • Re: Collegamento campi master e secondari

    No niente, purtroppo da sempre errore. Ho provato con il generatore automatico e anche a riscrivere l'intera sottomaschera ma niente. Evidentemente mi sfugge qualcosa che non so.
  • Re: Collegamento campi master e secondari

    Loque ha scritto:


    =[SSpecifiche].[Form]![Nome Tabella]
    Una sintassi così non l'ho mai vista. Deve essere una di queste:
    Forms![NomeMaschera]![NomeCampo]
    oppure
    Forms![NomeMaschera]![NomeSottomaschera]![NomeCampo]
  • Re: Collegamento campi master e secondari

    Loque ha scritto:


    No niente, purtroppo da sempre errore. Ho provato con il generatore automatico e anche a riscrivere l'intera sottomaschera ma niente. Evidentemente mi sfugge qualcosa che non so.
    Tecnicamente la sintassi è corretta, potrebbe sfuggirti qualche altro elemento che non so come verificare.
    Se ne hai la possibilità allega il File in un servizio di HOSTING in modo che si possa scaricare e testare, ovviamente lascia pochi dati minimali...
  • Re: Collegamento campi master e secondari

    Anche mettendo Forms![Specifiche]![Nome Tabella] o Forms![Specifiche]![SSpecifiche]![Nome Tabella] non funziona. Credo che il problema sia nelle relazioni circolari ma anche togliendole non si hanno esiti diversi. Nel database ci sono alcune parti scritte in visual basic non vorrei siano quelle o molto probabilmente sono io che essendo un n00b con Access mi sono perso in un bicchiere d'acqua.
    Comunque il database l'ho messo su Mediafire
    Se non è adatto cambio host. Nel frattempo vi ringrazio e se proprio non si riesce a trovare una soluzione fa niente, dirò al mio capo che non si può
  • Re: Collegamento campi master e secondari

    Le prove che hai fatto non hanno senso, la sintassi, come ti ho detto è tecnicamente corretta, quindi è certo che il problema sia altrove...

    Zippalo.
  • Re: Collegamento campi master e secondari

    Versione zippata.

  • Re: Collegamento campi master e secondari

    Mi è capitato di aprire il database su un altro pc... all'apertura funzionava tutto perchè Access mi aveva in quel momento disabilitato per sicurezza le i contenuti in VBA. Una volta abilitato il contenuto è tornato come prima. Cosi mi sono messo a controllare pulsante per pulsante e ho scoperto il pulsante che fa bloccare tutto. Si trova nella sottomaschera SSpecifiche e si chiama Pulsante15. C'è una Routine evento sul clic, e cancellando l'intero codice (il pulsante non va più) ma il problema si risolve.

    Questo è il codice, comunque è strano perchè dovrebbe attivarsi solo una volta cliccato e non dare problemi e dal codice non riesco a capire cosa possa essere.
    Option Compare Database   'Utilizza il tipo di ordinamento del database per i confronti fra stringhe
    
    Private Sub Campo15_Click()
    
    End Sub
    
    Private Sub Pulsante15_Click()
    
    Dim Db As Database
    Dim Tb As Recordset
    Static XV(100) As Long
    Static YV(100) As Long
                                           
    NomeTabella = Me![Nome Tabella]
    CodiceSpecifica = Me![Codice Specifica]
    
    DoCmd.RunSQL ("DELETE DISTINCTROW [Codice Specifica], Tabella FROM [Dati Tabelle Specifiche] WHERE (([Codice Specifica]=" & CodiceSpecifica & ") AND (Tabella='" & NomeTabella & "'));")
    'Forms![Specifiche].Requery
    
    Set Db = CurrentDb()
    Set Tb = Db.OpenRecordset("Dati Tabelle Specifiche", dbOpenTable)
    
    Ri = InputBox("Colonne ?")
    Co = InputBox("Righe ?")
    
    XV(1) = 100
    For X = 1 To Co
        XV(X) = InputBox(Str$(X) & "ª" & Chr$(10) & "Riga Fino A ...", , Str$(XV(X)))
        XV(X + 1) = 2 * XV(X) - XV(X - 1)
    Next X
    
    YV(1) = 100
    For X = 1 To Ri
        YV(X) = InputBox(Str$(X) & "ª" & Chr$(10) & "Colonna Fino A ...", , Str$(YV(X)))
        YV(X + 1) = 2 * YV(X) - YV(X - 1)
    Next X
    
    For Y = 1 To Ri
        For X = 1 To Co
            Tb.AddNew
            Tb.[Codice Specifica] = CodiceSpecifica
            Tb.Tabella = NomeTabella
            Tb.[VRiga Fino A] = XV(X)
            Tb.[VColonna Fino A] = YV(Y)
            Tb.Parametro = Y - 1 + (X - 1) * Ri
            Tb.Update
        Next X
    Next Y
    
    Forms![Specifiche].[SSDatiSpecifiche].Requery
    
    End Sub
    
Devi accedere o registrarti per scrivere nel forum
11 risposte