Creazione di una condizione con "SE" multipli

di il
3 risposte

Creazione di una condizione con "SE" multipli

Ciao a tutti,
sono un nuovo utente del forum e vi ringrazio in anticipo per avermi fra voi. Ho deciso di scrivervi perché ahimè ho bisogno di un aiuto e non sono riuscito a trovare una soluzione nei 3d.
Premetto che non sono un informatico, utilizzo gli strumenti di MS come utente finale e al momento sto utilizzando Access per gestire database molto grandi.
Provo a spiegare ciò che dovrei fare: sto lavorando su un Db e in una colonna esistono 4 tipologie di valori, tutte alfanumeriche ma che possono essere chiaramente identificate attraverso le prime 2 digit.
Es:
- CRxxxx
- DExxxx
- PRxxxxx
- e un’ultima solo numerica xxxxx.
-
Per ciascun valore vorrei creare una condizione capace di classificarli in 4 tipologie, appunto: ChannelR, DEMO, PROMO e PE.
Tuttavia non sono riuscito a scrivere un’espressione unica in grado di darmi questo risultato in un’unica colonna.
Sono certo che per voi è un gioco da ragazzi però al momento sono bloccato.

Vi ringrazio in anticipo non solo per questa richiesta ma soprattutto per il lavoro che svolgete!
Un saluto

3 Risposte

  • Re: Creazione di una condizione con "SE" multipli

    akronko ha scritto:


    ...utilizzo gli strumenti di MS come utente finale e al momento sto utilizzando Access per gestire database molto grandi.
    Questo significa che non puoi mettere mano alla struttura dei dati?
    Mi spiego: quello che hai chiesto potrebbe essere la conseguenza di tabelle strutturate male. Non è forse il caso di inserire un apposito campo relativo alla Tipologia? Da popolare massivamente magari con una query di aggiornamento, in prima battuta.
    Se quello che vuoi fare è invece solo (e sottolineo solo) ottenere la tipologia in base al valore di quel campo (m'è venuta la pelle d'oca leggendo colonna), io farei una UDF (User Defined Function) che analizza il primo carattere e con una Select Case restituisce il valore che ti interessa.
    Limitarsi ad analizzare il primo carattere per due motivi:
    1) si riesce ad ottenere il risultato lo stesso, non servono i primi due. Senza questa salta la 2.
    2) una volta che la numero 1 lo consente è possibile avvalersi della "velocità" di Asc (e relativa variante AscW)
    Qui trovi un esempio: Optimize string handling in VB6 - Part I nella parte indicata "Comparing the leftmost character"

    Evidenzio però che questa è una soluzione ad hoc per il caso specifico. Se dietro si nascondono altre esigenze o quello che è mai bisogna cambiare approccio.

    Come hai anche scritto nell'oggetto del thread, è possibile creare If (o IIf) nidificate direttamente in una query con un campo calcolato ma non saprei dire se è più performante della UDF creata come sopra. Per te probabilmente è più semplice.
  • Re: Creazione di una condizione con "SE" multipli

    Per me devi prevedere:
    1. Una tabella Tipologie con un solo campo Tipologia e 4 valori
    2. Un campo Tipologia nella TuaTabella
    3. Relazione Tipologie.Tipologia uno-a-molti TuaTabella.Tipologia
    4. Casella combinata sul campo TuaTabella.Tipologia

    A me non è chiaro se i valori
    CRxxxx
    DExxxx
    PRxxxxx
    solo numerica xxxxx
    li lasci così oppure vuoi buttare via il prefisso.
    Io li butterei via, ossia dopo aver assodato a quale Tipologia appartengono, poi con dei volgari
    Trova CR a inizio campo e Sostituisci con (vuoto), risolvi agevolmente.
  • Re: Creazione di una condizione con "SE" multipli

    Grazie mille, e scusate la mia terminologia povera.
    Mi studio le vostre risposte immediatamente,
    grazie di nuovo
Devi accedere o registrarti per scrivere nel forum
3 risposte