Query valori fissi e variabili

di il
10 risposte

Query valori fissi e variabili

Salve, devo creare un codice in base a dei valori fissi ed alcuni variabili.
Il codice è formato da 10 caratteri: 18 fisso, A o D variabile (campo tipo), numero di zeri (0, 1, 2, 3) in base al numero successivo che è il codice utente (campo cod_utente) che può essere di 2, 3, 4 o 5 caratteri. Uno 0 e poi il campo sub se diverso da 0, se no 00.
Spero di essere stato chiaro.
Sono riuscito a fare una query funzionante:
SELECT [cognome] & " " & [nome] AS Nominativo, Nuovi_Badge.cod_utente, [indirizzo] & "," & [n_civico] AS Via, Nuovi_Badge.UNIMM, IIf(Len([Cod_utente])=4 And [sub]>"0","18" & [tipo] & "0" & [Cod_utente] & "0" & [sub],"18" & [tipo] & "0" & [Cod_utente] & "00") AS Codifica, Count(Nuovi_Badge.cod_utente) AS ConteggioDicod_utente, Count(Nuovi_Badge.Codifica) AS ConteggioDiCodifica, Len([Codifica]) AS NumCod, Nuovi_Badge.sub
FROM Nuovi_Badge
GROUP BY [cognome] & " " & [nome], Nuovi_Badge.cod_utente, [indirizzo] & "," & [n_civico], Nuovi_Badge.UNIMM, IIf(Len([Cod_utente])=4 And [sub]>"0","18" & [tipo] & "0" & [Cod_utente] & "0" & [sub],"18" & [tipo] & "0" & [Cod_utente] & "00"), Len([Codifica]), Nuovi_Badge.sub;

Non riesco a cambiare il valore del cod_utente, non sò come fare quando il valore del cod_utente è di 5, 3 o 2 caratteri.
Grazie

10 Risposte

  • Re: Query valori fissi e variabili

    In casi come questi ti consiglio di ragionare a pezzetti per poi riunire tutto e creare il tuo campo con 10 caratteri. Almeno io, dalla SELECT che hai scritto, non ci ho capito nulla. Preferirei che tu indicassi tutti i nomi dei campi relativi a questo discorso qua:

    rabis ha scritto:


    Il codice è formato da 10 caratteri: 18 fisso, A o D variabile (campo tipo), numero di zeri (0, 1, 2, 3) in base al numero successivo che è il codice utente (campo cod_utente) che può essere di 2, 3, 4 o 5 caratteri. Uno 0 e poi il campo sub se diverso da 0, se no 00.
    quindi:
    CampoA: "18"
    CampoB: "A" o "D"
    CampoC: .....
    .....continua tu...anzi riscrivi tutto...che non ho afferrato.
  • Re: Query valori fissi e variabili

    Salve, il valore del badge deve essere di 10 caratteri.
    I primi 2 (18) è un valore fisso che identifica il "luogo" e non è in nessun campo.
    Il terzo (A o D) e nel campo "tipo".
    Poi c'è il codice utente campo, "cod_utente", che può essere di 2, 3, 4 o 5 numeri.
    Poi c'è il campo "sub" che ha come valore null oppure un numero da 1 a 9, questi sono gli ultimi due valori del badge.
    Se il cod_utente è 5 ed il campo sub è null la somma è 8 caratteri, 18+A+12345+null ed in questo caso aggiungo alla fine un valore fisso di "00".
    Si complica quando il cod_uutente è diverso da 5 ed il campo sub non è null.
    Se avete bisogno di altri dati chiedete pure.
    Grazie
    PS. in questo momento mi è venuta un'idea, se aggiorno tutti i null del campo sub a "0" potrebbe semplificare le cose?
  • Re: Query valori fissi e variabili

    Prova a sostituire il tuo codice:
    IIf(Len([Cod_utente])=4 And [sub]>"0","18" & [tipo] & "0" & [Cod_utente] & "0" & [sub],"18" & [tipo] & "0" & [Cod_utente] & "00") AS Codifica
    con questo:
    "18" & [tipo] & (Left(“00000”;5-Nz([ Cod_utente])) & [ Cod_utente]) & (Left(“00”;2-Nz([sub])) & [sub]) AS Codifica
    Ciao
  • Re: Query valori fissi e variabili

    Salve
    Chiamata di routine non valida.
    Questa è un po' "articolata" ma funziona:
    Codifica: IIf(Len([Cod_utente])=4;"18" & [tipo] & "0" & [Cod_utente] & "0" & [sub];IIf(Len([Cod_utente])=3;"18" & [tipo] & "00" & [Cod_utente] & "0" & [sub];IIf(Len([Cod_utente])=2;"18" & [tipo] & "000" & [Cod_utente] & "0" & [sub];IIf(Len([Cod_utente])=5;"18" & [tipo] & [Cod_utente] & "0" & [sub]))))
    Grazie
  • Re: Query valori fissi e variabili

    Chiamata di routine non valida.
    Ma che significa?
    Anche la mia funziona.
  • Re: Query valori fissi e variabili

    Non posso allegare file mdb o accdb?
    Ciao
  • Re: Query valori fissi e variabili

    Posta il codice della query con la sostituzione che ti avevo suggerito, magari si riesce a capire qual è il problema.
  • Re: Query valori fissi e variabili

    SELECT "18" & [tipo] & (Left("00000",5-Nz([cod_utente])) & [cod_utente]) & (Left("00",2-Nz([sub])) & [sub]) AS Codifica
    FROM Nuovi_Badge
    GROUP BY "18" & [tipo] & (Left("00000",5-Nz([cod_utente])) & [cod_utente]) & (Left("00",2-Nz([sub])) & [sub]);
    Se tolgo il GROUP BY, non da il messaggio "chiamata di routine non valida", però nel risultato esce: #Errore.
    Grazie
    Ciao
  • Re: Query valori fissi e variabili

    E ci credo che non funziona!!
    In pratica hai sostituito con il mio codice tutti i campi della tua query ed essendo un campo calcolato basato sugli altri campi era impossibile che restituisse qualcosa.
    Eppure ti avevo indicato esattamente quale parte del codice sostituire, lasciando inalterata la restante parte.
    Devi sostituire per due volte solo il codice del campo calcolato Codifica.
  • Re: Query valori fissi e variabili

    Ok fatto, alla prossima .
    Grazie
    Ciao
Devi accedere o registrarti per scrivere nel forum
10 risposte