Newsgroup: it.comp.appl.access
Titolo: espressione troppo complessa...

ciao
stavo implementando la mia query con la selezione del campo ma dopo aver
concatenato diversi IIf mi da
Espressione Troppo complessa.
IIf(Left([NomeTabella];2)="EB";"1";IIf(Left([NomeTabella];2)="GF";"2";IIf(Left([NomeTabella];2)="GM";"3";IIf(Left([NomeTabella];2)="GZ";"4";IIf(Left([NomeTabella];2)="LB";"5";IIf(Left([NomeTabella];2)="MC";"6";IIf(Left([NomeTabella];2)="MM";"7";IIf(Left([NomeTabella];2)="PE";"4";IIf(Left([NomeTabella];2)="RT";"8";IIf(Left([NomeTabella];4)="RT03";"9";IIf(Left([NomeTabella];4)="RT06";"10";IIf(Left([NomeTabella];2)="SA";"11";IIf(Left([NomeTabella];2)="SM";"12";IIf(Left([NomeTabella];2)="TO";"13";IIf(Left([NomeTabella];4)="TO02";"14";IIf(Left([NomeTabella];4)="TO05";"15";IIf(Left([NomeTabella];4)="TO06";"15";IIf(Left([NomeTabella];4)="TO10";"16";IIf(Left([NomeTabella];2)="WB";"12")))))))))))))))))))
Mi verrebbe si spezzare in più parti la cosa, si può fare? Voglio fare però
una unica query di accodamento che mi crei una tabella temporanea sulla
quale basare un report.
Spezzando il codice però mi vengono aggiunte solo le righe interessate e non
tutte... come posso fare.
Grazie 1000
cio


Fai una funzione (in un modulo) e gli passi i paramentri...
Ciao.
-- 
Sergio MAZZA 

 Fai una funzione (in un modulo) e gli passi i paramentri...
Intendi dire una macro con un modulo? Non li ho mai usati dove trovo un 
esempio?
Come faccio a richiamare la funzione ed a passare i parametri alla query?
Grazie 1000
cio 


In un modulo (nessuna macro) crei una funzione:
(es.)
function miaFunzione(nomeParametro as string) as string
select case left(nomeParametro,2)
    case "EB"
        miaFunzione = "1"
    case "GF"
        miaFunzione = "2"
...etc. etc...
    case else
        miaFunzione = "- errore -"
end select
end function
La utilizzi in un campo calcolato cosě:
nomeCampo: miaFunzione([nomeTabella])
Ciao.
-- 
Sergio MAZZA 

 nomeCampo: miaFunzione([nomeTabella])
grazie ma non ho capito come usare la funzione che mi sono creato ovvero 
come faccio a far capire alla funzione che deve cercare nei valori contenuti 
in un dato campo di una data tabella...
Function NomeFunzione(nomeCampoOrigine As String) As String
Select Case Left(nomeCampoOrigine, 2)
    Case "EB"
        NomeFunzione = "1"
    Case "GF"
        NomeFunzione = "2"
    Case Else
        NomeFunzione = "-errore-"
End Select
End Function
Ho scritto nella query alla riga Campo la seguente
SELECT NomeFunzione([Tabella1]) AS nomeCampoOrigine FROM Tabella1;
ovviamente non era così che dovevo fare... come posso risolvere la cosa? Ho 
già fatto il Case e ho chiamato il modulo Modulo1...
Poi devo accodare il risultato al Campo1 della Tabella2. Come devo fare?
Grazie 1000
cio

 cio
L'indicazione di errore da te descritta è risolvibile come ti ho indicato; 
se il risultato non è quello voluto vuol dire che non hai descritto 
dall'inizio alla fine quello che volevi fare...
Ciao.
-- 
Sergio MAZZA 

>
ciao
scusa ma evidentemente mi sono spiegato male.
La mia query deve essere così:
Ho dei campi fatti così
EB01
EB02
ecc... fino a EB99
GF01
GF02
ecc... fino a GF99
e via così
io devo associare del testo in un altro campoper ogni occorrenza di EB*, GF* 
ecc... solo che ho troppi casi e quindi mi da espressione troppo complessa 
per farla con un IIf.
Che so ogni volta che trovi EB* metti "1" nel Campo2 della Tabella2, se 
trovi GF* metti "2" nel Campo2 della Tabella2 ecc... cosa che ho già fatto 
con altri campi sempre usando EB* e simili.
Allora ho povato a fare come mi hai detto ma non so come fare a fargli 
prendere in considerazione il campo di origine della tabella che mi serve e 
come faccio a mettere in esecuzione la cosa.
Come devo fare ad integrare la funzione che mi hai indicato nella mia quety 
di accodamento? Non so come usare questo Modulo, sempre che sia scritto in 
modo coerente...
Grazie 1000
cio 

 E questo che cos'è?
E' l'SQL della query.
Ho cercato di seguire quello che mi hai detto e ho messo
nomeCampo = nome del campo sul quale vogio eseguire la funzione
nomeFunzione = nome della funzione inserita nel modulo
noneTabella = nome della tabella nella quale è presente il nomeCampo sul 
quale voglio agire
nomeCampo: nomeFunzione([nomeTabella])
così facendo, però, non mi viene visualizzato nulla e mi chiede
Immissione valore parametro:
nomeTabella
e resta lì in attesa di qualcosa... non so come fare ad uscirne.
Nel modulo ho scritto quanto segue
Function nomeFunzione(Pippo As String) As String
Select Case Left(Pippo, 2)
    Case "EB"
        nomeFunzione = "1"
    Case "GF"
        nomeFunzione = "2"
    Case Else
        nomeFunzione = "-errore-"
End Select
End Function
Come mai ho questo risultato?
Grazie 1000
cio 

 ha scritto nel messaggio 
news:f9h6h9$lb2$1...@news2.task.gda.pl...

credo che il solo nomeTabella non descriverebbe a nessuno da quale campo 
prelevare il valore!
Devi usare il riferimento completo:
nuovoCampo: nomeFunzione([nomeTabella]![nomeAltroCampo])
...credo.
IvanDaBologna 

 cio
(ripeto)
Crea un campo calcolato ed inserisci il riferimento alla tua funzione:
nuovoCampo: miaFunzione([nomeCampoDaValutare])
Esegui la query (magari prima di selezione, poi di accodamento) e vedi che 
succede...
Ciao.
P.S. Tanto per essere precisi, la query (di selezione) risulterebbe:
Select nomeCampoDaValutare, miaFunzione([nomeCampoDaValutare]) as 
campoValutato From nometabella
Ari-Ciao.
-- 
Sergio MAZZA 

 nuovoCampo: miaFunzione([nomeCampoDaValutare])
Ciao grazie 1000
la funzione ha funzionato al primo colpo! :-)
cio