Newsgroup: it.comp.appl.access
Titolo: query case sensitive

Ciao a tutti,
mi scuso per la banalita' della domanda...
Vorrei sapere se in access e' possibile attivare un parametro che determini
la risoluzione delle query in modo che queste siano sensibili al case dei
caratteri (mi serve per distinguere le lettere maiuscole dalle minuscole).
Purtroppo mi trovo in una situazione in cui le query accedono ad un database
esterno nel quale l'utente ha codificato articoli diversi semplicemente
modificandone il case dei caratteri (per cui l'articolo "alfa" e l'articolo
"ALFA" sono due entita' diverse)...
Cattiva scelta progettuale... Peraltro difficilmente sanabile ora che tali
articoli sono stati utilizzati in modo intensivo da piu' anni...
Grazie per la risposta
---
Alessandro

 ha scritto nel messaggio
news:9oni60$ija$1...@stargate1.inet.it...

Cosa vuol dire "la risoluzione delle query in modo che queste siano
sensibili al case dei
caratteri"?
Cosa fà la query, dove la usi, da quale tabella si alimenta, che tipo di
database è quello esterno...
Le query restituiscono i valori così come li trovano scritti: alfa, ALFA,
Alfa.
Puoi essere più dettagliato?
Ciao, Carlo

 Alfa.
Hai ragione, mi sono spiegato male.
Infatti il problema non e' nella estrazione dei dati (se faccio SELECT *
FROM Table vengono proprio estratti tutti i record), ma nelle relazioni tra
i dati referenziati in tabelle diverse. Relazioni che (ovviamente) sono
definite solo come join sulla query (in quanto le tabelle sono tutte esterne
ad Access) e non come relazioni proprie del database di Access.
Faccio un esempio. Ho una relazione tra il codice articolo e il codice di
distinta base.
Se analizziamo il semplice sottocaso (perdona gli eventuali errori di
sintassi, vado a memoria):
SELECT AnagraficaArticoli.CodArticolo, AnagraficaDistintaBase.*
FROM AnagraficaArticoli, AnagraficaDistintaBase
LEFT JOIN AnagraficaArticoli.CodArticolo =
AnagraficaDistintaBase.CodDistinta;
AnagraficaArticoli.CodArticolo contiene i seguenti valori:
ALFA
alfa
AnagraficaDistintaBase.CodDistinta contiene i seguenti valori:
ALFA
alfa
La relazione di join tra CodArticolo e CodDistinta dovrebbe darmi due righe:
CodArticolo        CodDistinta    <altri dati di AnagraficaDistintaBase>
ALFA                ALFA            aaa
alfa                    alfa                  bbb
invece ne ottengo quattro:
CodArticolo    CodDistinta        <altri dati di AnagraficaDistintaBase>
ALFA            ALFA                aaa
ALFA            alfa                     bbb
alfa                ALFA                 aaa
alfa                alfa                      bbb
Posso impostare la query in modo da ottenere solo le due righe volute?
E' un parametro generale di ACCESS?
L'unica cosa che sono riuscito a capire e' dovrebbe esistere una
Option Compare Binary
che dovrebbe garantire nei confronti (e quindi presumo anche nelle join) una
distinzione tra maiuscole e minuscole. Peraltro, non sono capace di
impostare questo parametro sulle query . Forse va settato altrove?
Grazie
---
Alessandro

Caro Carlo,
ho risolto il problema alla radice, per cui... la domanda resta solamente
"teorica" per un eventuale utilizzo futuro.
Cordialmente
--
Alessandro

 "teorica" per un eventuale utilizzo futuro.
idea:
se i case possibili sono solo 2, tipo "tutto maiuscolo" e "tutto micuscolo"
ogni tabella che ha questi campi non viene usata direttamente, ma tramite
una query di selezione che crea un campo aggiuntivo che vale 0 se il case è
lower o 1 se il case è upper, e questo campo entra a far parte della chiave
delle tabella.
Se i case sono svariati bisogna creare una funzione che restituisca una
sfilza di 0 ed 1, un numero per ogni lettera della parola, 0 se la lettera è
lower, 1 se è upper.
Così genero:
Pippo-----> 10000
CaCCia--> 101100
plUTO---->00111
è così come chiave ho:
Pippo-10000    che è diverso da PIPPO-11111
la sfilza di 0 ed 1 deve essere una stringa (se fosse un numero verrebbero
eliminati gli 0 iniziali.)
Max