Visualizzare recordset in sottomaschera

di il
16 risposte

Visualizzare recordset in sottomaschera

Buongiorno a tutti, ho una maschera con un contatore di record di una sottomaschera che non funziona piu da quando ho trasformato il Dbase da db a accdb
la stringa usata era =[Maschere]![M_Venditori].[SM_Venditori].[Form].[Recordset].[RecordCount]
e ancora oggi su un pc con la vecchia versione di Access funziona, mentre nella versione piu recente accade questo:

l'immobile di xxxxxxxxx è stato proposto o visitato XXX volte (come da esempio) appare #Nome?

allego per maggior chiarezza lo screen della maschera.
Grazie a chi vorrà rispondere
Allegati:
13777_888c81e0c03ea529a284255cb9cf3900.png
13777_888c81e0c03ea529a284255cb9cf3900.png

16 Risposte

  • Re: Visualizzare recordset in sottomaschera

    Sicuramente tra [M_Venditori] e [SMVenditori] ci vuole il punto esclamativo.
    Poi, .Form.Recordset.RecordCount direi senza le parentesi quadre (almeno che non sia Access che le mette in automatico). Riepilogando:
    =[Maschere]![M_Venditori]![SM_Venditori].Form.Recordset.RecordCount
  • Re: Visualizzare recordset in sottomaschera

    mgabrio ha scritto:


    ...contatore di record di una sottomaschera che non funziona piu da quando ho trasformato il Dbase da db a accdb
    ...
    e ancora oggi su un pc con la vecchia versione di Access funziona, mentre nella versione piu recente accade questo:
    La memoria è subito andata a questo:
    https://www.iprogrammatori.it/forum-programmazione/access/somma-sottoreport-report-t26211.html
    Lì si parla di report, qui di maschere, ma il concetto del "passaggio di valori" tra sottomaschera (e sottoreport) e maschera principale (e report principale) è identico.
    Dopo le prove del caso, se succede come in quel thread, non ti resta che passare all'uso di VBA.
  • Re: Visualizzare recordset in sottomaschera

    Io sto facendo vari test e curiosamente quella espressione che ho suggerito funziona solo in VBA se per esempio faccio un clic di pulsante e un MsgBox, ma non come espressione dentro casella di testo.
    Ho trovato quest'altra soluzione leggendo qui
    https://forum.html.it/forum/showthread/t-1181644.htm
    =DCount("[CampoPKsottomaschera]";"NomeTabellaRelativaAllaSottomaschera";"[CampoFKsottomaschera] = [Maschere]![M_Venditori]![ID]")

    Però pare ci siano problemi quando nella sottomaschera non ci sono record. Ho trovato quest'altra soluzione
    https://www.seisette.it/dcount-contare-i-record-della-sottomaschera/
  • Re: Visualizzare recordset in sottomaschera

    OsvaldoLaviosa ha scritto:


    Però pare ci siano problemi quando nella sottomaschera non ci sono record.
    Senza usare il DCount ma con il RecordCount e VBA hai problemi in caso di sottomaschera senza record? (non ho provato)
  • Re: Visualizzare recordset in sottomaschera

    Philcattivocarattere ha scritto:


    Senza usare il DCount ma con il RecordCount e VBA hai problemi in caso di sottomaschera senza record? (non ho provato)
    Non lo so.
    Invece ho notato che con l'espressione DCount funziona anche quando non ci sono record, mostrando correttamente 0. Trovo che sia la soluzione ideale.
  • Re: Visualizzare recordset in sottomaschera

    OsvaldoLaviosa ha scritto:


    Non lo so.
    A cosa ti riferisci allora quando hai detto

    OsvaldoLaviosa ha scritto:


    Però pare ci siano problemi quando nella sottomaschera non ci sono record.
    ?
    Prima di lanciarmi in prove, vorrei capire, tutti qui Osvaldo. Mi spiego: dal momento in cui ho a che fare con un oggetto (la maschera) che in un modo o nell'altro nativamente contiene il numero di record preferisco evitare l'uso di DCount.
  • Re: Visualizzare recordset in sottomaschera

    OsvaldoLaviosa ha scritto:


    Però pare ci siano problemi quando nella sottomaschera non ci sono record.
    L'ho scritta (prima) solo perchè così diceva nel link da me indicato. Poi un test mi ha detto altro.

    Philcattivocarattere ha scritto:


    Prima di lanciarmi in prove, vorrei capire, tutti qui Osvaldo. Mi spiego: dal momento in cui ho a che fare con un oggetto (la maschera) che in un modo o nell'altro nativamente contiene il numero di record preferisco evitare l'uso di DCount.
    Anche io ho fatto lo stesso ragionamento. Ho provato tutte le sintassi possibili immaginabili con le sintassi [Maschere]!ecc dentro la casella di testo, ma mi dava sempre #Errore.
    Anzi, nota pure la sintassi del 3° argomento DCount da me proposto. Se la scrivo tutta dentro apici doppi, OK. Se uso la sintassi tipica con la concatenazione &, non ne vuol sapere.
    Boh!
  • Re: Visualizzare recordset in sottomaschera

    mgabrio ha scritto:


    Buongiorno a tutti, ho una maschera con un contatore di record di una sottomaschera che non funziona piu da quando ho trasformato il Dbase da db a accdb
    la stringa usata era =[Maschere]![M_Venditori].[SM_Venditori].[Form].[Recordset].[RecordCount]
    e ancora oggi su un pc con la vecchia versione di Access funziona, mentre nella versione piu recente accade questo:

    l'immobile di xxxxxxxxx è stato proposto o visitato XXX volte (come da esempio) appare #Nome?

    allego per maggior chiarezza lo screen della maschera.
    Grazie a chi vorrà rispondere
    Si mette nel piedipagina Maschera della SubForm una textbox chiamata [txtsfCount] con ControlSource
    
    =Conteggio(*)
    Poi nella Form [SM_Venditori] metti una textBox che chiami come vuoi con ControlSource
    
    =[SM_Venditori]![txtsfCount]
    Ricordo di aver letto che a partire da una certa versione ci fossero problemi con l'accesso alla proprietà del Recordset di maschera... ma non trovo l'articolo.

    In ogni caso da EVITARE DCOUNT, perchè se filtri non è sincronizzato in quanto tu conti in Tabella ma visualizzi dati Filtrati, quindi rischi di avere un Numero NON REALE da dover gestire in modo complicato, e questo vale sia se usi una Query che la proprietà Filter...!

    Purtroppo nei vari siti si leggono anche cose errate in quanto le scrivono persone poco competenti...!
  • Re: Visualizzare recordset in sottomaschera

    Purtroppo sono piuttosto inesperto....
    sono nel piè di pagina maschera, creo una casella di testo non associata , ma com faccio a mettere il controlSource?
  • Re: Visualizzare recordset in sottomaschera

    Se vai in visualizzazione struttura maschera/sottomaschera, punta la tua attenzione sulla sottomaschera. Selezionala e vai giù. Molto probabilmente il suo Piè di pagina non c'è, devi mettere il mouse sull'ultima barretta in basso e trascinare in giù un po' di zona piè di pagina. Qui dentro ci metti la textbox [txtsfCount] con scritto dentro =Conteggio(*).
    Poi, credo @Alex si sia sbagliato, la tua casella di testo sta nella maschera principale e dentro ci scrivi
    =[SM_Venditori]![txtsfCount]
    ControlSource sarebbe la proprietà "Origine controllo" equivalente a dire "scrivici dentro".

    Il suggerimento di @Alex mira a mantenere l'esatto conteggio record visibili "sul momento" della sottomaschera, risolvendo l'eventuale possibilità di applicazione filtri successivi.
    La soluzione DCount ignora questa possibilità e mostra sempre e comunque lo stesso numero di record totale delle "visite".
  • Re: Visualizzare recordset in sottomaschera

    Nella maschera princilale ho inserito =[SM_Venditori]![txtsfCount] e fin qui tutto bene...
    ma la textbox che inserisco a piè pagina non è una casella di testo
    come creo una textbox?
  • Re: Visualizzare recordset in sottomaschera

    Textbox = casella di testo
    Così come hai creato manualmente la casella di testo dove c'è scritto =[SM_Venditori]![txtsfCount] fai la stessa cosa per quella che devi creare nel piè di pagina sottomaschera. Nella peggiore delle ipotesi fai un copia/incolla della casella di testo precedente e cambi le seguenti proprietà:
    Nome elemento: txtsfCount
    Origine controllo: =Conteggio(*)
  • Re: Visualizzare recordset in sottomaschera

    Fatto ma mi da errore....
  • Re: Visualizzare recordset in sottomaschera

    Nella immagine "prova contatore" sei andato nel Piè di pagina MASCHERA PRINCIPALE. Eliminalo.
    1. Clicca dentro la SOTTOMASCHERA.
    2. Clicca con il mouse destro sulla barretta Piè di pagina e scegli Proprietà
    3. Troverai Altezza: 0 cm. Devi cambiarlo in 1 cm.
    4. È dentro questo Piè di pagina che devi mettere la casella di testo

    Considera che tu hai una sottomaschera in foglio dati. Il Conteggio sotto non lo vedrai mai, ma serve metterlo lì per calcolarlo e darlo in pasto alla casella di testo in alto.
Devi accedere o registrarti per scrivere nel forum
16 risposte