Altra soluzione all'errore #Nome? nel report principale

di il
0 risposte

Altra soluzione all'errore #Nome? nel report principale

In attesa che Microsoft metta la parola fine al bug riconosciuto come tale di cui ho parlato in questo thread

https://www.iprogrammatori.it/forum-programmazione/access/errore-sharpname-in-textbox-report-principale-con-riferimento-a-sottorep-t52198.html

recentemente mi hanno fatto conoscere una nuova soluzione che è ancor meno complicata delle due consigliate e che comporta meno rischi di incrociare nuovamente il bug in caso di modifica manuale tramite interfaccia grafica dell'origine dati del controllo sul report principale.

Breve riepilogo super semplificato. Quando nell'origine dati di una casella di testo si scrive

=[nomeControlloSottoReport].[Report].[nomeTextBox].Value

per prendere il valore di una casella di testo del report secondario, nella versione italiana di Access (e solo in quella per quanto ne so) si ottienere l'errore #Nome? perché dietro le quinte Access salva l'origine dati in questo modo:

=[nomeControlloSottoReport].[Reports].[nomeTextBox].Value

aggiungendo una "s" alla parola Report.

Il riferimento ad un controllo nel report secondario è possibile anche con questa sintassi:

=[nomeControlloSottoReport]![nomeTextBox].Value

Bisogna usare il punto esclamativo dopo il nome del controllo sottoreport (il container).

Saltando l'indicazione .[Report] il bug non può entrare in azione, non c'è niente a cui aggiungere la S.

Non è farina del mio sacco, questa sintassi mi è stata segnalata da una persona che non solo non so se è iscritta a questo forum ma non posso nemmeno citare pubblicamente per attribuire il giusto riconoscimento perché... non mi ha mai risposto, tutto qua.

E indipendentemente dal bug del report principale - report secondario, ho imparato che la sintassi canonica che ho visto praticamente ovunque come tale, cioè:

[SubReportControl].[Report]![ControlName]

si può anche scrivere

[SubReportControl]![ControlName]

Stesso ragionamento per le maschere

[SubFormControl].[Form]![ControlName]

può essere scritto così

[SubFormControl]![ControlName]

sempre facendo attenzione all'uso del punto esclamativo.

Per i curiosi: questa "nuova" sintassi non poi così nuova, visto che è stata introdotta con Access97, stando almeno a https://flylib.com/books/en/2.401.1.343/1/ 

When the form is active, the following short syntax refers to a control on a subform of the active form:

[SubformControlName]![ControlName] 

The Form property of the subform, required in Access 95 and earlier when referring to controls on a subform, now is the subform control's default property, so you don't need to include it in the reference.

(riferito alle maschere ma il principio è identico per i report).

Devi accedere o registrarti per scrivere nel forum
0 risposte