di barbagianni62 » 07/08/14 19:57
Ciao Alessandro
Per prima cosa scusami del ritardo.
Comunque, era proprio di questo che avevo paura:
1° - non riuscire a spiegarmi dovutamente
2° - che in SQL non esiste il concetto di "vicino" o "simile". Quindi la cosa non fosse fattibile.
I nomi dei campi sono tutti reali, in quanto sono dei coefficienti (quindi numeri) per il calcolo della variazione di volumi di alcune sostanze in base al variare della temperatura. Ho una tabella [coefVol] con i seguenti campi:
- ID
- Degrees ( campo del valore della temperatura)
- Una cinquantina di campi denominati con numeri 9800 , 9820 ,9840 ( di 20 unità che si sommano al precedente) fino a 10780.
Ho una maschera con le seguenti caselle di testo:
- valRicercato dove va immesso il valore del campo da ricercare nella tabella
- valTemperatura dove va immesso il valore della temperatura associato all’ ID
- ed una casella di testo che mi restituisce il risultato
Applicando la funzione valVariab = DLookup("[valRicercato]", "[coefVol]", "[ID] = [Degrees]") Questo valVariab oltre ad essere riportato nella maschera mi servirà per eseguire dei calcoli.
Ora se io nelle caselle di testo della maschera metto ad esempio il valore “9820” e la temperatura di riferimento, mi viene restituito il valore che io ricercavo estrapolato dalla tabella, perche la funzione “trova” il campo 9820. Ma se il valore numeri non è esattamente corrispondente ( e questa situazione capita frequentemente) ad uno dei campi della tabella il codice non funziona.
Ad esempio, se io dovessi ricercare un valore “9818” , vorrei che il codice VBA funzionasse così:
- mi dovrebbe trovare per prima cosa il campo della tabella dal valore immediatamente inferiore (cioè 9800)
- fare la differenza tra il valore ricercato e il campo immediatamente inferiore 9818-9800=18
- se la differenza ha queste condizioni 18<=10 mi deve restituire il campo 9800, mentre se la differenza 18=>11 mi deve restituire il valore 9820.
A questo punto la ricerca nel DLookUp al “[valoreRicercato]” sarebbe limitata a uno di questi due campi.
Ciao, buona serata e grazie per l'aiuto.