+ Rispondi al Thread
Pagina 1 di 2 12 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 12

Discussione: Problema con funzione Iif e doppie virgolette

  1. #1
    Post
    7

    Problema con funzione Iif e doppie virgolette

    Salve a tutti e grazie a chi vorrà e potrà aiutarmi. Sto impazzendo per una cosa forse stupida ma che non riesco a risolvere. Ho varie query che uso da tempo all'interno di Access per le mie attività di docenza. All'improvviso c'è un problema enorme con le doppie virgolette. Uso il generatore di espressioni di Access
    Un esempio banale: se in un campo denominato "Formula_Apertura" genero l'espressione "Gentile " & [Cognome] & " " & [Nome] tutto va alla perfezione e la concatenazione funziona.
    Ma quando vado a fare una funzione Iif anche semplicissima tipo questa: Data di consegna: IIf([Confermato]=0,"ordine non confermato",[Riepilogo ordini clienti]![Data_Ordine]+20) che mi funzione da anni, Access mi restituisce il seguente errore: "Errore di sintassi nell'espressione. È possibile che sia stato immesso un operando senza un operatore". E, cosa ancora più grave, se al posto del testo metto un numero, ad esempio IIf([Confermato]=0,0,[Riepilogo ordini clienti]![Data_Ordine]+20) con un valore 0 al posto della scritta "Ordine non confermato" mi restituisce un altro errore: Numero non valido nell'espressione.
    Penso che l'errore sia solo con l'Iif a questo punto. Qualcuno sa gentilmente quale potrebbe essere il problema? Grazie.
    Ultima modifica di roberto.guerrieri; 14-06-2020 11:27  Motivo: Errori di scrittura

  2. #2
    L'avatar di AntonioG
    AntonioG non è in linea Moderatore Globale Ultimo blog: Commodore 64 e Codemotion
    Luogo
    Roma
    Post
    16,774
    Blogs
    5
    Non ho capito cosa c'entra la prima parte (concatenazione stringhe) con il secondo (errore di sintassi nella Iif).

    E non ho capito cosa dovrebbe restituire la Iif ... una stringa o una data? La Iif fa parte di codice VBA? Mostra come la usi all'interno del codice VBA ...
    Avvisi generali e importanti, a pena CHIUSURA thread e/o BAN
    Il crossposting è vietato.
    Le richieste di "pappa pronta" sono vietate.
    Utilizzate i tag CODE per il codice.
    Leggere il Regolamento per chiarimenti PRIMA di creare nuovi thread.
    Utilizzare sempre i PM per comunicare con i moderatori.
    Non mi contattate in PM per problemi di software, usate il forum

  3. #3
    Post
    7
    La concatenazione stringhe c'entra, speravo di essere stato chiaro ma forse sono stato troppo sintetico e poco chiaro. Cercherò di essere sintetico ma esaustivo.
    Punto 1: Non sono un programmatore, sono un normale utente Access. Sono docente di Access per utenti finali non programmatori. Per questo non uso e non conosco Vba se non per le basi.
    Punto 2: tra i file che uso per le docenze (ahimè piuttosto rare rispetto ad Excel) ce ne sta uno che uso da tempo dove ci sono delle query che faccio svolgere come esercizio. Tra queste query ce ne sono alcune dove spiego l'immissione delle funzioni. Come ho già detto, per creare campi calcolati nelle query uso il generatore di espressioni.
    Problema; riaprendo il file per usarlo ho notato il seguente problema: tutte le espressioni di calcolo in cui è previsto l'uso delle stringhe di testo o come argomento della funzione o come risultato della funzione stessa vanno bene, ad eccezione degli esempi della funzione IIf. Per fare degli esempi:
    - In campo calcolato denominato "Formula di apertura" in cui ci sta l'espressione calcolata ="Gentile "&Cognome&" "&Nome il risultato della concatenazione viene normalmente ed i campi tra doppie virgolette (la parola "Gentile" iniziale e lo spazio vuoto tra nome e cognome funzionano.
    - In un campo calcolato in cui occorre ci sta l'espressione calcolata Format([SommaDiTempoTotale],"Ora breve 24h") per dare il formato ora breve 24 ore al totale orario che somma gli orari, la funzione dà il risultato desiderato e le doppie virgolette funzionano.
    - In un campo calcolato semplicissimo denominato "Data consegna" che deve restituire la parola "Ordine confermato" se nella colonna Confermato ci sta scritto 0 e deve aggiungere 20 giorni alla data dell'ordine se nella colonna Confermato non ci sta scritto 0, la funzione IIf strutturata come descritto a seguire non funziona, anche se ha sempre funzionato. Data di consegna: IIf([Confermato]=0,"ordine non confermato",[Riepilogo ordini clienti]![Data_Ordine]+20) Qui le doppie virgolette non funzionano e mi viene restituito l'errore "Errore di sintassi nell'espressione. È possibile che sia stato immesso un operando senza un operatore".
    Quindi non è questione di risultati della funzione o o altro, la questione è che nelle altre espressioni calcolate le doppie virgolette funzionano, nella sola funzione Iif invece non vanno all'improvviso, quando le ho usate 100 volte e non le ho mai modificate.
    E che ci sia qualche problema specifico legato all'improvviso alla funzione IIf lo testimonia il fatto che se sostituisco come risultato della condizione il valore 0 invece della stringa di testo "Ordine non confermato" mi restituisce un altro errore che è Numero non valido nell'espressione.
    Quindi la domanda è: che problema può avere all'improvviso la funzione Iif se non accetta più le doppie virgolette e nemmeno un valore numerico?
    Spero di essere stato chiaro e ringrazio chi vorrà aiutarmi a capire o quantomeno a risolvere questo improvviso problema che trovo molto curioso. Grazie.

  4. #4
    L'avatar di AntonioG
    AntonioG non è in linea Moderatore Globale Ultimo blog: Commodore 64 e Codemotion
    Luogo
    Roma
    Post
    16,774
    Blogs
    5
    La virgola la usi quando introduci la query in SQL ... ma con il tool devi usare il ;
    Avvisi generali e importanti, a pena CHIUSURA thread e/o BAN
    Il crossposting è vietato.
    Le richieste di "pappa pronta" sono vietate.
    Utilizzate i tag CODE per il codice.
    Leggere il Regolamento per chiarimenti PRIMA di creare nuovi thread.
    Utilizzare sempre i PM per comunicare con i moderatori.
    Non mi contattate in PM per problemi di software, usate il forum

  5. #5
    Post
    7
    grazie mille AntonioG per le tue risposte, ho provato anche con il ; come separatore degli argomenti tipo in Excel ma non funziona. E poi nelle altre espressioni calcolate che funzionano ci sta sempre la virgola eppure vanno. Questo problema mi sta facendo impazzire. Comunque ora proverò ad aprire un nuovo database vuoto e creare delle query lì, vediamo se il problema è legato in qualche modo misterioso al vecchio database.

  6. #6
    L'avatar di AntonioG
    AntonioG non è in linea Moderatore Globale Ultimo blog: Commodore 64 e Codemotion
    Luogo
    Roma
    Post
    16,774
    Blogs
    5
    No ... guarda che funzione regolarmente (e le virgolette non c'entrano nulla come ti dicevo).

    Se proprio vuoi, posta un link al tuo file in modo che lo possa scaricare.
    Avvisi generali e importanti, a pena CHIUSURA thread e/o BAN
    Il crossposting è vietato.
    Le richieste di "pappa pronta" sono vietate.
    Utilizzate i tag CODE per il codice.
    Leggere il Regolamento per chiarimenti PRIMA di creare nuovi thread.
    Utilizzare sempre i PM per comunicare con i moderatori.
    Non mi contattate in PM per problemi di software, usate il forum

  7. #7
    Post
    7
    Ok, ne estrapolo una parte (ci sono tantissime tabelle, query, maschere e report, ma metto solo ciò che serve come tabelle correlate e query) e metto il link appena possibile.

  8. #8
    Post
    7
    per ora ho risolto scrivendo le espressioni in Sql, come erano scritte nel generatore di espressioni. Avevo urgenza per preparare un esercizio. Resta strano che pertanto tempo ho scritto le espressioni nel Generatore in modalità Visualizzazione struttura di Access ed hanno funzionato ed adesso con l'IIf non funzionano più. Pazienza. Non so come si faccia a scrivere che il thread è stato risolto o comunque non è più attivo, non ho trovato come fare nelle Faq. Grazie

  9. #9
    L'avatar di AntonioG
    AntonioG non è in linea Moderatore Globale Ultimo blog: Commodore 64 e Codemotion
    Luogo
    Roma
    Post
    16,774
    Blogs
    5
    In Sql usi le virgole e va bene. Se passi alla modalità struttura vedrai che ci sono i ;

    E' solo questo il problema, come ti dicevo.

    Non mettere nulla ... lasciamo la discussione così.
    Avvisi generali e importanti, a pena CHIUSURA thread e/o BAN
    Il crossposting è vietato.
    Le richieste di "pappa pronta" sono vietate.
    Utilizzate i tag CODE per il codice.
    Leggere il Regolamento per chiarimenti PRIMA di creare nuovi thread.
    Utilizzare sempre i PM per comunicare con i moderatori.
    Non mi contattate in PM per problemi di software, usate il forum

  10. #10
    Post
    7
    Ok AntonioG, grazie. A questo punto, è meglio comunque usare la Visualizzazione Sql, penso anche quando mi capiterà di nuovo di fare i corsi avanzati, dove l'utente è bene che prenda confidenza con un minimo di linguaggio Sql. Buon proseguimento!

+ Rispondi al Thread
Pagina 1 di 2 12 ultimoultimo

Tag per questa discussione

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi