Dunque, copio e incollo un codice che dovrebbe darmi un valido coefficiente di umidità secondo delle tabelle già predisposte (e già inserite con due vettori di cui parlavo ieri).
In un altro linguaggio (B.A.L.) funziona regolarmente e mi da il risultato che cerco, mentre in VB invece non me lo dà; è da ieri che sto cercando qualsiasi modo per venire al bandolo
In primis, ho dei vettori numerici:
- COEMI ()
- COEMA ()
- PTAR()
- KTAR()
Quindi:
Dim COEMI (1 to 52) as Double
Dim COEMA (1 to 52) as Double
Dim PTAR (1 to 3) as Long
Dim KTAR (1 to 3) as Long
e delle variabili numeriche semplici tutte da 5 byte:
- IX (numero normale, quindi ho effettuato un "Dim IX as Variant")
- KK (Idem: "Dim KK as Variant")
- IX1 (lo stesso)
Dim IX as Variant
Dim KK as Variant
Dim IX1 as Variant
Dim CROS As Double
Dim CROS1 As Double
Dim RG1 As Double
Dim K as Integer
Dim TASSO as double
Premesso che, per esemio, io ho già valorizzato la Me.![GVAR] con un valore "2"
A questo punto, al momento in cui valorizzo il campo "Me![TASSO_UMIDITA]", con un valore prestabilito che dev'essere maggiore di 16 e minore di 27 (sono tabelle ministeriali), dovrebbe procedere a compiere questo algoritmo:
If Me.GVAR = "2" Then
IX = 14
IX1 = 13
KK = 26
CROS1 = 20
End If
If Me.GVAR = "3" Then
IX = 27
KK = 39
IX1 = 15
CROS1 = 22
End If
If Me.GVAR = "4" Then
IX = 42
KK = 50
IX1 = 17
CROS1 = 22
End If
PTAR(3) = 0
KTAR(3) = 0
PTAR(3) = Me.TASSO_UM
IX = 3 '; Index di Inizio taballe COEMI gr 1
KK = 11
IX1 = 11 ' ; Valore del Tasso Minimo -1
CROS1 = 16 ' ; Valore cui % tara e' 0
If Me.GVAR = "2" Then
IX = 14
IX1 = 13
KK = 26
CROS1 = 20
End If
If Me.GVAR = "3" Then
IX = 27
KK = 39
IX1 = 15
CROS1 = 22
End If
If Me.GVAR = "4" Then
IX = 42
KK = 50
IX1 = 17
CROS1 = 22
End If
For k = IX To KK
IX1 = IX1 + 1
If (PTAR(3) <= COEMA(k)) And (PTAR(3) >= COEMI(k)) Then
RG1 = CDec(IX1) ' indica il tasso umidità
Tasso = IX1 ' indica il coefficiente da applicare in misura %
' PRINT=1:TAB(54,13),(-02),RG1
Me.TASSO_UM = RG1 ' valore decimale
Me.UMIDITA = Tasso ' valore in %
CROS = (RTAR(2) * (100 - RG1)) / (100 - CROS1)
REG1 = RTAR(2) - CROS
KTAR(3) = Round(REG1, 0)
RTAR(3) = RTAR(2) - KTAR(3)
Me.UMIDITA = CROS
If RG1 = CROS1 Then
KTAR(3) = 0
RTAR(3) = RTAR(2)
End If
End If
Next k
Ora, se per esempio, il GRVAR corrisponde a "2" e io inserisco in me![TASSO_UMIDITA] il valore "22", in me![UMIDITA] dovrebbe comparire "2,5" e, in un campo che io ho chiamato me![UMIDITA_KG], il risultato del calcolo dell'umidità secondo la percentuale Me![UMIDITA] di "2,5"
Per esempio:
PESO = 10
Io inserisco, in me![TASSO_UMIDITA], ad es. "22"
Me![UMIDITA] deve restituire "2,5" (cioè il 2,5%)
Me![UMIDITA_KG] deve restituire "0,25" (cioè il 2,5% di 10)
Sull'applicativo B.A.L. (che fondamentalmente usa la stessa sintassi per eseguire le stesse operazioni), funziona benissimo; io ho fatto i dovuti adattamenti, e non mi da il valore che desidero.
Dove sto sbagliando?