Query a Campi Incrociati trasforma "." in "_" nelle intestazioni

di il
9 risposte

Query a Campi Incrociati trasforma "." in "_" nelle intestazioni

Buonasera,

Ho una maschera continua parametrizzata basata su una query a campi incrociati con numero di colonne variabile.

(La maschera mostra le ore lavorate con sulle righe le varie date e sulle colonne il nome del dipendente.)

Su questa maschera, sull'on click dei vari controlli, ho del codice che prende il nome del campo (nome del dipendente) dalla Proprietà Control Source del controllo per eseguire query su altre tabelle (collegate per nome del dipendente… non per ID.. non me ne parlate…).

Fin qui tutto bello e funzionante finchè alcuni dei nomi dei dipendenti (della tabella sulla quale si basa la query a campi incrociati) non contengono il carattere “.” (Ad Esempio Mario R.)

In questi casi la query trasforma il punto “.” in underscore “_” nelle intestazioni di colonna facendo perdere il collegamento con le altre tabelle.

Ho tamponato la situazione con un Replace ma mi chiedevo il motivo del comportamento di access e se ci fosse una soluzione diversa in attesa che riprogetti il db legando tutto per ID Dipendente.

9 Risposte

  • Re: Query a Campi Incrociati trasforma "." in "_" nelle intestazioni

    Non capisco che problemi hai con gli ID. Se sei riuscito a far funzionare la ricerca singola con il nome dovrebbe essere lo stesso con l'ID.

    Però al di la di questo, facciamola semplice.

    Crea una query dove recuperi i dati che ti interessano, nei criteri del nome metti ad esempio :

    [maschere]![nome maschera]![nome del controllo]

    poi sul campo della maschera dove visualizzi il nome del dipendente, sull' evento click con una macro o vb richiami la query.

    Per quanto riguarda l'aggiunta di un trattino basso, access la usa come concatenazione per trasformare il nome di un controllo, quando interpreta due parole separate, anche se sono una lettera o un punto.

    Ad esempio, Pippo sempronio, se è un nome di un controllo diventa Pippo_sempronio nelle query, oppure devi indicarcarlo come “Pippo sempronio” (cioè tra apici) nella sintassi VBA.

    Questo per evitare problemi all'interprete di access.

  • Re: Query a Campi Incrociati trasforma "." in "_" nelle intestazioni

    Non capisco che problemi hai con gli ID

    Io proprio nessuno, anzi! Mi sono trovato un DB relazionato per Nome Dipendente e non per ID e mi sta creando problemi.

    Per il resto faccio proprio come dici solo che in tutte le tabelle ho il punto  es "Mario R." mentre il nome del controllo diventa "Mario R_"

    e l'unica soluzione che ho trovato è usare Replace([NomeControllo];"_";".") nelle query verso altre tabelle e viceversa.

    poco elegante ma efficace

  • Re: Query a Campi Incrociati trasforma "." in "_" nelle intestazioni

    Non ho capito bene, ma se stai usando una Query CrossTab, con parametri devi definire i PARAMETRI… altrimenti non funziona il criterio.

    Quì una spiegazione più basic:

    http://allenbrowne.com/ser-67.html

  • Re: Query a Campi Incrociati trasforma "." in "_" nelle intestazioni

    Non sono stato troppo chiaro.

    I parametri della query CrosTab gli ho definiti come si deve e infatti il risultato viene filtrato correttamente.

    Io ho chiamato “maschera parametrizzata” una maschera continua che ho creato (che usa tale query crosstab),  che si definisce a runtime in base al numero di colonne che mi restituisce la query crossTab.

    Su questa maschera, cliccando su una cella,  da VBA prendo il ControlSource del controllo (che è il nome del dipendente) e lo uso per recuperare info da altre tabelle legate per nome dipendente.

    Mi ero incartato per il fatto che la CrossTab cambia i nomi che contengono il carattere “.”,creando le etichette di colonna, sostituendo il punto con underscore.

  • Re: Query a Campi Incrociati trasforma "." in "_" nelle intestazioni

    Vorrei capire meglio una cosa…!

    La tabella è residente o basata su un File Excel…?

    Questo Bug, era presente quando si facevano Query con Linked sa Excel, e per motivi di conversione di Type, dove l'Engine SQL del sistema per ovviare a problematiche di interpretazione Tabella.Campo, convertiva in Tabella_Campo…

  • Re: Query a Campi Incrociati trasforma "." in "_" nelle intestazioni

    La tabella che viene macinata dalla query a campi incrociati è sul db locale ed è frutto di una query create su tabelle linked di un altro db access

  • Re: Query a Campi Incrociati trasforma "." in "_" nelle intestazioni

    Si può avere un Demo da analizzare…?

  • Re: Query a Campi Incrociati trasforma "." in "_" nelle intestazioni

    https://drive.google.com/file/d/1jQ0RDq4wuqZoXQpQFJJg19xLnUDQ6Esf/view?usp=sharing

    ho copiato solo alcuni oggetti dal db originale 

    Apri la maschera Presenze ? Pulsante Giornaliere

    si apre il risultato della query cross tab che, come dicevo trasforma i carattere “.” in “_” nelle intestazioni di colonna

  • Re: Query a Campi Incrociati trasforma "." in "_" nelle intestazioni

    Ho provato, e confermo la cosa.

    Non c'è verso di visualizzare il DOT, anche con il Replace, quindi è proprio il Motore del DB che per sicuramente considera il Punto come carattere “speciale” e lo sostituisce.

    Ho provato vari Replace ma è proprio il PUNTO che lo infastidisce.

    Ora ho trovato in ogni caso una soluzione, non bellissima ma funziona:

    UserName_N: Replace([UserName];".";ChrW(8228))

    Devo essere sincero che non ho mai visto usare Nome + Cognome nello stesso campo tanto meno abbreviare uno dei 2 valori…, ciò detto il problema esiste.

Devi accedere o registrarti per scrivere nel forum
9 risposte