Acquista i nostri libri consigliati su Amazon.it
+ Rispondi al messaggio
Visualizzazione dei risultati da 1 a 6 su 6

SQL per selezione record con condizione IIf

  1. #1
    Jocman non è in linea Scolaretto
    Ciao a tutti.
    Partendo da una semplice tabella (IDUtente, Cognome, Nome, Esterno) dove Esterno è un campo SI/NO,
    da una combobox seleziono un nome dalla tabella, con una semplice query come origine nella combo:

    
    SELECT IDUtente, Cognome & " " & Nome As NomeComp, ORDER BY Cognome Asc
    
    e tutto funziona bene

    Volevo però inserire una (E) nel caso in cui il record avesse flaggato il campo Esterno, per cui ho inserito una IIf nella query:

    
    SELECT IDUtente, IIf(Esterno=-1;Cognome & " " & Nome & "(E)" As NomeComp;Cognome & " " & Nome As NomeComp), ORDER BY Cognome Asc
    
    ma in questo caso mi riporta un errore per Operatore mancante.

    Cosa sbaglio?

    Andrea
    ℹ️ Leggi di più su Jocman ...

  2. #2
    Quote Originariamente inviato da Jocman Visualizza il messaggio
    SELECT IDUtente, Cognome & " " & Nome As NomeComp, ORDER BY Cognome Asc
    
    e tutto funziona bene
    Impossibile. Salvo che non sia un errore di copia incolla c'è una virgola di troppo dopo NomeComp, prima di ORBER BY e manca il FROM.
    Quote Originariamente inviato da Jocman Visualizza il messaggio
    Volevo però inserire una (E) nel caso in cui il record avesse flaggato il campo Esterno, per cui ho inserito una IIf nella query:
    Dove volevi inseirla quella E? come campo a sè stante?
    Sistema la virgola, anche lì è sbagliata.

  3. #3
    Jocman non è in linea Scolaretto
    Cacchio hai ragione, la virgola!
    Non so come mi sia venuto di metterla lì......

    Ma ti confermo che la prima funziona. Avevo modificato quella riga con le nuove istruzioni, poi nel copia incolla sul post avevo cancellato le nuove e riscritto le vecchie (funzionanti), ma quella virgola mi è sfuggita, cos' come ho saltato ampiamente il FROM.
    E la virgola è rimasta nella query più lunga, e non ci dovrebbe comunque essere (oltre al FROM)....

    Purtroppo oggi mi stanno pressando con 2000 cose e sto facendo le cose di fretta....E non va bene, poi faccio questi casini.....

    riguardo alla (E) vorrei ottenere in un caso Pinco Pallino (E) e nell'altro Tizio Caio.

    Aggiornamento in tempo reale.
    Mentre leggevo e rileggevo la tua risposta (anche perchè ho mandato tutti a quel paese e mi sono chiuso in ufficio a rimuginare), ho trovato i problemi:
    - il costrutto "As NomeComp" va fuori l'IIf (invece l'avevo ripetuto nelle condizioni)
    - quella maledetta virgola
    - il FROM che proprio se ne era andato a spasso per le verdi praterie....

    Corretto il tutto in :

    
    SELECT IDUtente, IIf(Esterno=-1,Cognome & " " & Nome & " (E)" ,Cognome & " " & Nome ) As NomeComp FROM tblUtenti ORDER BY Cognome Asc
    
    adesso funziona.

    Grazie sempre per la pazienza ed il supporto

    Andrea
    ℹ️ Leggi di più su Jocman ...

  4. #4
    Sgrubak non è in linea Scribacchino
    Suggerimento non richiesto: Io la modificherei così
    Cognome & " " & Nome & Iif(Esterno = -1," (E)" ,"") As NomeComp
    
    Per amore di leggibilità e di manutenibilità.

  5. #5
    Il risultato è lo stesso, la logica però così è più chiara
    SELECT IDUtente,
    (
    Cognome & " " & Nome &
    IIf(Esterno = - 1, " (E)", "")
    ) AS NomeComp
    FROM tblUtenti
    ORDER BY Cognome ASC

    (l'ho pubblicata anche se Sgrubak ha premuto il bottone prima, per dimostrare che l'abbiamo vista in due quella miglioria)

  6. #6
    Jocman non è in linea Scolaretto
    Suggerimenti sempre e comunque ben graditi, soprattutto se rendono le cose più chiare.
    E mi riferisco al fatto che, effettivamente, scritti come suggerito è mooolto meno incasinato di quello che ho scritto io....
    ℹ️ Leggi di più su Jocman ...

+ Rispondi al messaggio

Potrebbero interessarti anche ...

  1. Inserire Record nella Tabella con condizione AddNew
    Da BLUES nel forum Microsoft Access
    Risposte: 4
    Ultimo Post: 12-11-2013, 20:40
  2. Eliminare record da un elenco in base a una condizione
    Da andreas21 nel forum Microsoft Access
    Risposte: 1
    Ultimo Post: 04-02-2013, 16:43
  3. Selezione Record con condizione
    Da avilorenzo nel forum Microsoft Access
    Risposte: 4
    Ultimo Post: 25-01-2013, 17:20
  4. [access 2003] condizione su ultimo record di query
    Da joshua72 nel forum Microsoft Access
    Risposte: 6
    Ultimo Post: 21-08-2008, 22:58
  5. selezione record
    Da francof nel forum Visual Basic 6
    Risposte: 7
    Ultimo Post: 06-02-2007, 18:04