Newsgroup: it.comp.appl.access
Titolo: Stringa con parti variabili.

Volevo uscisse un messaggio così:
        MsgBox "Lunghezza errata di un codice fiscale " & (giusto = -1
And "in formato numerico") Or (giusto = 0 And "in formato numerico")
Cioè: a seconda del controllo che determina il valore di "giusto", la
stringa uscirebbe con la frase corrispondente.
Mi esce un errore "Tipo non corrispondente". Eppure ero sicuro di
avere già usato un trucco simile da qualche parte.
Ovviamente: dove sbaglio?
Grazie a tutti
Riccardo Baldinotti

Ciao Riccardo.
 
IMHO ti sei pescato la IIF ... ma la soluzione qua sotto non mi sembra comunque corretta, dato che nel caso proposto fai uscire "in formato numerico" tanto per (giusto=-1) quanto per (giusto=0).
 
MsgBox "Lunghezza errata di un codice fiscale " & iif(giusto = -1, "in formato numerico", "in formato numerico") 
 
HTH
Popi


Sì, il secondo dovrebbe essere "alfanumerico".
Quanto all'IIF, è proprio quello che non voglio usare (paturnie, mica
altro).
Questo è un esempio di codice che mi funziona:
Forms!menu("e" & o).ForeColor = (13209 And (Forms!menu("e" &
o).ForeColor = 13209 Or Forms!menu("e" & o).ForeColor = 255)) _
            Or (1572863 And (Forms!menu("e" & o).ForeColor = 1572863
Or Forms!menu("e" & o).ForeColor = 16777215))
Questa istruzione determina il colore di una qualsiasi etichetta, se
attivata, a seconda del suo colore precedente. Qualcosa del tipo: "se
è rossa o gialla diventa rosa, se è verde o blu diventa viola...".
Mi pare però che non funzioni con valori alfanumerici come risultato,
il che spero non sia perché questi arzigogoli mi piacciono.
Grazie
Riccardo Baldinotti

Riccardo, la risposta sta nella domanda: quale valore booleano può avere l'espressione "in formato numerico"?
 
:)
 
Popi


eh eh, hai ragione. Però allora non può avere un valore come 13209 e
invece questo me lo piglia...
Mi sa che mi darò a più miti consigli salvo giocherellare con qualche
variabile. Sai, tanto per rendere il codice un tantino più frizzante.
Grazie
Riccardo Baldinotti

Lo so, ci hai provato, ma t'è andata bene solo con 13209 perché il booleano è, alla fine, un numerico anche lui.
 
True=-1
False=0
 
L'unica cosa che potresti fare è (mi tornano in mente le pippe mentali che tanti anni fa mi facevo con il TI99!!!):
 
MsgBox "Lunghezza errata di un codice fiscale " & _
 Mid("in formato alfanumericoin formato numerico    ",Abs(giusto*23)+1,23)
 
Popi


False?
 
 
-- 
 
ac (x=y-1)

Il 27/01/2012 11.29, Popi - TheBadHabits ha scritto:

ops!
True?
 
-- 
 
ac (x=y-1)

Ops vale true.
 
"in formato numerico" non è buleàno, così come non lo è "AAA" ;)
 
Popi

 "in formato numerico" non č buleŕno, cosě come non lo č "AAA" ;)
 
Booleano e' inventato. Dovrebbe essere un bit ma siccome non si puo' 
(almeno con i linguaggi "moderni") allora e' un byte di tipo numerico, 
ma anche questa e' una convenzione, il pezzo di ferro, e intendo il 
computer solo on-off comprende
False=0
True#0
che poi access di default metta -1 (*)(altri linguaggi mettono 1) e' un 
inciso di dettaglio. Un qualsiasi bit di qualsiasi byte che sta a 1 
rende true.
 
 
(*) i.e. b"11111110" o x"FE", ergo qualsiasi dato e' "buleano"  e quindi 
anche "in formato numerico" č buleŕno, cosě come lo č "AAA" cosi come 
ops ;) e valgono triambi *True*. Che poi il tipo dato alfanumerico possa 
generare un "tipo non corrispondente" e' dovuto alla scarsa duttilita' 
di access. ;-{)
-- 
 
ac (x=y-1)

 di access. ;-{)
 
Ahàaaaah! A questo volevo arrivare: che Access non è duttile come
voglio io! eh eh eh
Può darsi che certi arzigogoli mi funzionassero in qualche Basic dei
tempi andati.
 
Bella la pippa:
Mid("in formato alfanumericoin formato numerico
",Abs(giusto*23)+1,23)
è proprio del tipo che mi piace.
Grazie a entrambi (bello anche il "triambi").
Riccardo Baldinotti