[Risolto] IF Sintassi

Discussioni sulle caratteristiche di database
Rispondi
strulga
Messaggi: 63
Iscritto il: martedì 18 luglio 2017, 11:53

[Risolto] IF Sintassi

Messaggio da strulga »

Ciao a Tutte e tutti.
Qualcuno sa indicarmi la giusta sintassi per il comando IF?

Vortrei che IF reagisse in base ad un valore booleano (se "Campo" è = a 0, succede una cosa, altrimenti ne succede un'altra).
ma non so come scriverlo.

Io ho fatto così ma non funziona:


IF ("Ricette"."IngredienteLimitante" = 'True') THEN
"Ricette"."QuantitàIniziale" AS "QuantitàParziale02"
Else
"Ricette"."QuantitàIniziale" AS "QuantitàParziale03"
End If


Allego il database, lo script è in RQuantitàTotala_Q

Grazie Mille
Allegati
strulgone_a.odb
(36.89 KiB) Scaricato 237 volte
Ultima modifica di charlie il mercoledì 26 luglio 2017, 17:09, modificato 1 volta in totale.
Motivazione: Aggiuto [Risolto] e spunta verde
LibreOffice 5.3.0.3 su Windows 7
Avatar utente
charlie
Site Admin
Site Admin
Messaggi: 8807
Iscritto il: mercoledì 19 dicembre 2012, 10:50
Contatta:

Re: IF Sintassi

Messaggio da charlie »

Ciao, IF in Base non esiste. Puoi usare CASEWHEN oppure CASE WHEN.
Poi si scrive TRUE senza apici.

Codice: Seleziona tutto

CASEWHEN ("IngredienteLimitante" = TRUE ,'STRINGA1' , 'STRINGA2') 
CASE WHEN "IngredienteLimitante" = TRUE THEN 'STRINGA1' ELSE 'STRINGA2' END 
In ogni caso non puoi usare al posto di STRINGA1 e STRINGA2 un nome campo tipo Numerico come QuantitàInziale perché stai scrivendo su un campo tipo Boolean.
charlie
macOS 14.4.1 Sonoma: Open Office 4.1.15 - LibreOffice 7.5.7.2
http://www.charlieopenoffice.altervista.org
strulga
Messaggi: 63
Iscritto il: martedì 18 luglio 2017, 11:53

Re: IF Sintassi

Messaggio da strulga »

Fammi capire.
IF non si può usare nel linguaggio sql di BASE.

Se voglio che la query mi inserisca un dato (quantità iniziale) in un campo (Stringa1) piuttosto che in un altro (stringa 2), in base al fatto che abbia o meno un "Ingrediente Limitante", non posso farlo se dò ad "ingrediente limitante" un valore booleano.
quindi sarebbe meglio attribuire ad "ingrediente limitante" un varchar tipo si/no, da scegliere poi nell'istruzione:

CASE ("IngredienteLimitante")
WHEN 'Sì' THEN ""Ricette"."QuantitàIniziale" AS "QuantitàParziale01"
WHEN 'No' THEN ""Ricette"."QuantitàIniziale" AS "QuantitàParziale02"
END

ho capito bene? Scusa ma sono un novello con sql e devo ancora imparare ad orientarmi bene.
grazie mille.
LibreOffice 5.3.0.3 su Windows 7
Avatar utente
charlie
Site Admin
Site Admin
Messaggi: 8807
Iscritto il: mercoledì 19 dicembre 2012, 10:50
Contatta:

Re: IF Sintassi

Messaggio da charlie »

Scusami, ti ho dato un'indicazione errata.
Il problema della tua sintassi è l'uso di AS che può essere fatto solo alla fine dell'espressione CASEWHEN o CASE WHEN.
Così funzionerebbe:

Codice: Seleziona tutto

SELECT "IngredienteLimitante", CASE WHEN "IngredienteLimitante" = TRUE THEN "QuantitàIniziale" ELSE "QuantitàIniziale" END AS "QuantitàParziale1" FROM "Ricette"
ma non ti servirebbe a nulla.
charlie
macOS 14.4.1 Sonoma: Open Office 4.1.15 - LibreOffice 7.5.7.2
http://www.charlieopenoffice.altervista.org
strulga
Messaggi: 63
Iscritto il: martedì 18 luglio 2017, 11:53

Re: IF Sintassi

Messaggio da strulga »

Risolto!
Grazie Charlie!
Nella Query "Quantità Totale" ho usato questo script,

CASE ("Limitante")
WHEN 'Sì' THEN "Ricette"."QuantitàIniziale" * 100 / "Ricette"."Quantità01"
WHEN 'No' THEN "Ricette"."QuantitàIniziale" * 1
END
AS "QuantitàTotale"

Poi ho usato una casella selezione nel form, in modo che quando cliccata restituisse il valore "Sì" altrimenti "No".
Così ho simulato un valore booleano, non potendo usarlo (e non riuscendo a capire bene come usarlo).
grazie mille.
LibreOffice 5.3.0.3 su Windows 7
Rispondi