Focus tra due maschere (parent e child)

di il
4 risposte

Focus tra due maschere (parent e child)

Ciao a tutti, pongo un quesito alla V. attenzione
ho una maschera Attivita ed una sottomaschera Eventi; nella maschera è presente una etichetta Etcopiavalore dove volevo visualizzare un dato presente nel campo DATA di Eventi.
Nel momento in cui creo un nuovo record di Eventi, e nella sottomaschera aggiungo le info nel campo DATA, Il valore di Etcopiavalore si aggiorna .
Avevo predisposto che un controllo avesse la proprietà visibile = false e la mia intenzione era di renderla visible se ETcopiaivalore avesse un valore diverso da "".
Non riesco a tradurlo in una istruzione efficace (ad esempio con condizione:
if not Etcopiavalore.caption = "" then miocontrollo.visibile = true
ma non funziona come dovrebbe , lo stesso con la condizione if not isnull, perché se ho compreso bene il problema resta nel fatto che in quel momento sto lavorando nella maschera principale, poi che al mio input nella sottomaschera penso si sia spostato il focus , e poi anche se mi sposto in qualsiasi altro punto di Eventi o di Attivita, miocontrollo non viene reso visibile. Se aggiungo un altro record, o mi sposto indietro di un record e poi torno al record dove avevo aggiunto le mie info, l'istruzione funziona ed il controllo passa dalla proprietà visibile = false a true.

Primariamente volevo capire quali sono i passaggi nel momento in cui dalla maschera principale do input nella sottomaschera e poi cosa succede quando ritorno col mouse sopra la maschera principale (digitandovi o meno).
Infatti, l'etichetta che utilizzavo era solo un banale ed inefficace modo di tentare di aggirare l'ostacolo, mi sarebbe bastato che al momento in cui DATA di Eventi da un valore vuoto, passava al valore >0 allora miocontrollo venisse visualizzato.
Secondariamente, capire se esiste una soluzione o devo rinunciare all'idea?

4 Risposte

  • Re: Focus tra due maschere (parent e child)

    1. Io cambierei ETcopiavalore da etichetta in textbox. Poi puoi decidere che abbia lo sfondo dello stesso colore della maschera.
    2. In ETcopiavalore ci scrivi dentro:
    =[Maschere]![Attivita]![Eventi]![DATA]
    3. All'evento "Su corrente" della maschera Attivita, scrivi
    If Len(Me!ETcopiavalore & vbNullString) <> 0 Then Me!miocontrollo.Visible = True
  • Re: Focus tra due maschere (parent e child)

    Al momento non riesco a fare il tentativo perchè inavvertitamente, devo aver modificato qualche cosa in vba e la maschera si blocca e il debug segna che l'istruzione crea un riferimento non valido nella form , istruzione che fino a quel momento aveva perfettamente funzionato.
    l'istruzione di per se funziona, ne sono certo , ma adesso non la accetta nemmeno a cannonate
     If Not IsNull([Forms]![Aziende]![Eventi]![IDEvento]) Then datoiniziale = Forms!Aziende!Eventi!IDEvento 
    ho tentato di rimodularla
    If Not IsNull(Forms!Aziende!Eventi!IDEvento)Then datoiniziale = Forms!Aziende!Eventi!IDEvento
    o di modificarla
    'If ([Forms]![Aziende]![Eventi]![IDEvento]) <> 0 Then datoiniziale = Forms!Aziende!Eventi!IDEvento 
    Niente, l'istruzione non riesce più a vedere la sottomaschera Eventi.

    Quant'è vera la Legge di Murphy: Se qualcosa può' andar male, lo farà' (specialmente i punti 1. Niente e' facile come sembra. 2. Tutto richiede piu' tempo di quanto si pensi. 3. Se c'e' una possibilità' che varie cose vadano male, quella che causa il danno maggiore sara' la prima a farlo. 7. Ogni soluzione genera nuovi problemi. 8. I cretini sono sempre più' ingegnosi delle precauzioni che si prendono per impedirgli di nuocere) ed io mi sono comportato come al punto 8.

    HO cancellato ogni record presente nelle tabelle (erano solo info di prova)
    Per scrupolo, ho visualizzato le relazioni e nulla era cambiato, ho provato a cancellarle e a rifarle, e in questa occasione però mi sono accorto di una stranezza. Rimossa la relazione specifica tra Aziende ed Eventi, creata solo per prova un'altra tabella tblInventata con IDinventato e IDAzienda numerico e campo INVENTATO, stabilita una relazione tra Aziende ed tblInventata coi rispettivi ID PK e FK , aprendo la tabella Aziende, inserendovi info nel nuovo record, la relazione per cui è possibile aggiungere il record dell'altra tabella non risulta vincolata a tblinventata ma resta incredibilmente vincolata ad Aventi. (mi consente di aggiungervi un nuovo record, di salvarlo e di visualizarlo come presente nella tabella Eventi che ribadisco dovrebbe essere priva di relazioni come mostrato da access .
    Faccio presente che nelle mie precedenti prove e simulazioni avevo fissato due relazioni con integrità referenziale (selezionando vi le tre opzioni per renderla completa) tra la PK IDAzienda e le FK IDAzienda di due diverse tabelle, e che a quel punto , sempre visualizzando la tabella (e non la form) , facendo clik sul segno "+" , access mi costringeva a scegliere la tabella da relazionare ed io avevo scelto Eventi, da quel momento in poi i record correlati erano quelli e se volevo aggiungere nuovi record nell' altra tabella (secondariamente e parallelamente relazionata con Aziende) potevo farlo solo da Maschera con sottomaschera. Successivamente avevo rimosso questa tabella ed ovviamente anche la relazion. Evidentemente Access continua a vedere come basilare la relazione Aziende con Eventi, tantè che ho visualizzato, dalla tabella, le dipendenze oggetti e, tra gli oggetti da cui dipende sono presenti la tabella Eventi e la tblinventata.
    Non trovo però il modo di cancellare, la dipendenza con la tabella Eventi. Magari non mi serve, cancellarla provvisoriamente, per poi con calma ricostituire tutto com'era prima, ma se mi spiegate come farlo, ho modo di imparare qualche cosa nuova anche su questo.
  • Re: Focus tra due maschere (parent e child)

    Non trovo però il modo di cancellare, la dipendenza con la tabella Eventi. Magari non mi serve, cancellarla provvisoriamente, per poi con calma ricostituire tutto com'era prima, ma se mi spiegate come farlo, ho modo di imparare qualche cosa nuova anche su questo.
    Relativamente al modi di cancellare la dipendenza , ho fatto ulteriori prove . si trattava della richiesta di access di inserire un foglio secondario ed io avevo stabilito di farlo con Eventi con campo secondario IDAzienda e campo master IDAzienda.
    modalità di rimozione: aprire in modalità struttura la tabella parent (Aziende) , da PROGETTAZIONE, seleziono la finestra proprietà , qui trovo Generale, dove sono presenti varie voci tra cui nome foglio dati secondario (tabella.Eventi), collega campi secondari (IDAzienda) , collega campi master (IDAzienda). Ho rimosso i due campi e la tabella del foglio dati secondario, di default è tornato su [Automatico].

    almeno questa parte del quesito, sono riuscito a risolvere e spero posa essere utile per qualcun altro. Ora cercherò di dedicarmi alla soluzione dell'improvviso mancato funzionamento delle istruzioni VBA che fino a ieri marciavano correttamente, se avete dritte in merito, vi ringrazio anticipatamente.
  • Re: Focus tra due maschere (parent e child)

    Hai fatto tutto tu...e io, senza una chiara esposizione di tutti i nomi propri di tabelle, campi e relazioni, ho capito poco e niente.
    Fai anche attenzione a non mettere troppa carne sul fuoco. Secondo me ha poco senso creare "quelle" textbox che devono mostrare dati che è giusto siano mostrati SOLO in sottomaschera. Idem dicasi per il discorso Visible.
Devi accedere o registrarti per scrivere nel forum
4 risposte