Codice valido ma non funziona. Consigli?

di il
12 risposte

Codice valido ma non funziona. Consigli?

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?

12 Risposte

  • Re: Codice valido ma non funziona. Consigli?

    Avevi postato nella sezione Access, ho spostato in Visual Basic
  • Re: Codice valido ma non funziona. Consigli?

    Ma è VBA per Access ... o Visual Basic 6 ...?

    Parli di "campi" nel senso che sono proprio campi di un DB o sono "variabili" ?
    Nel caso siano semplici variabili, chiamale così e non campi !

    Come mai lo stesso elemento PTAR(3) valorizzato 3 volte?

    PTAR(3) = 0
    KTAR(3) = 0
    PTAR(3) = Me.TASSO_UM

    Subito dopo valorizzi le variabili

    IX = 3 '; Index di Inizio taballe COEMI gr 1
    KK = 11
    IX1 = 11

    perdendo comunque i valori eventualmente impostati con le if precedenti ... che senso ha?

    E perché dei numeri li definisci Variant ? Se sono valori reali è meglio siano Double ...

    GVar è una variabile numerica? Perché confronti con "2" che è una stringa??

    Insomma ... non si capisce quasi nulla ...

    E' vero che stai portando da un linguaggio (il BAL) obsoleto ma devi conoscere il VB altrimenti non riuscirai mai ...
  • Re: Codice valido ma non funziona. Consigli?

    Toki ha scritto:


    Avevi postato nella sezione Access, ho spostato in Visual Basic
    Invece è proprio Microsoft Access, dato che una sintassi così: Me![TASSO_UMIDITA] è valida in MSAccess, ma non in Visual Basic 6.0.
  • Re: Codice valido ma non funziona. Consigli?

    Per Oregon:
    - Il campo GVAR è una variabile stringa;il contenuto deve essere "1", "2", "3", "4" o "5" e non serve per fare calcoli, ma per distinguere delle pratiche contratto.
    - il PTAR è valorizzato due volte (e non 3; l'altro è il KTAR, cioè Kg. tara) in quanto mio padre azzerava il campo prima dell'operazione, per poi lavorarci con un nuovo valore.

    In pratica, per esempio, per il Gr. Var. "2", se io inserisco il coefficiente "22", la tabella da un risultato pari a "2,5%", il che, tradotto, significa che devo decurtare dal valore primario (cioè quello prima delle tre tare) il 2,5% del peso.
    Io credevo che mio padre lavorasse su delle semplici costanti, ma da quanto ho potuto analizzare, la cosa è molto più complessa e il valore della percentuale stabilita dal tasso di umidità è frutto del calcolo aritmetico che ti ho scritto.

    Poi mi sembra di aver dimenticato di dire che vi sono anche i vettori COEMI (52 da 5 byte) e COEMA (idem come COEMI), tutte valorizzate prima del listato che ti ho scritto (sono 104 istruzioni, non ne valeva la pena scriverle tutte.

    Per tutto il resto, ho semplicemente copiato il codice sorgente del vecchio programma BAL che era di mio padre e l'ho adattato a VB, solo che non riesco a ricavare lo stesso risultato.
    Dove dovrei andare a tagliare/modificare, eventualmente?

    Se vuoi ti posso postare il codice originale, magari integrandotelo con delle spiegazioni sulle istruzioni scritte
  • Re: Codice valido ma non funziona. Consigli?

    P.s.: purtroppo, sul fatto che devo studiare bene il VB (per lo meno quello di Access) per portare il codice in BAL sotto VB, sono d'accordissimo con te e con qualcun altro che ha detto qualcosa del genere, ma dalla mia parte, quello che non ho è il tempo per poter studiare con calma.
    Lavoro per 8 ore al giorno normalmente e sto sviluppando questa procedura parallelamente con grosso dispendio di tempo libero e risorse.
    Dovrei cercare di consegnare un lavoro decente e funzionante per gennaio o max per febbraio, altrimenti devo dire addio a diversi kEuro che, in questo momento di crisi, non è consigliabile farli scappare via.
  • Re: Codice valido ma non funziona. Consigli?

    Allora condividi parte del budget con un programmatore che faccia per te quello che tu non hai tempo/voglia di fare. Certamente non ti aspettare TUTTO il lavoro da parte del forum in quanto è quello che ti serve, non solo consigli...
  • Re: Codice valido ma non funziona. Consigli?

    Io non desidero che qualcuno faccia per me quello che non ho tempo o voglia di fare io; io lo voglio fare e ce la sto mettendo tutta; non voglio che il forum mi faccia il lavoro; avevo chiesto solo un'indicazione, null'altro; ho scritto "Dove sto sbagliando"; se no avrei scritto "Me lo correggete?" o menate dello stesso tipo.

    P.s.: è dall'anno scorso che cerco qualche programmatore con cui "condividere" il budget, ed ho anche dato un congruo anticipo ad uno; solo che è sparito e non risponde nemmeno più al telefono.
    A questo punto, tanto vale che faccia da solo.
    Scusa se ti ho fatto perdere tempo
  • Re: Codice valido ma non funziona. Consigli?

    Dove stai sbagliando non si può dire come se si avesse la bacchetta magica. Si deve prendere il vecchio codice, il nuovo, i dati in input, esaminare il tutto con attenzione, effettuare un po' di debugging e mettere a posto. Per la questione del programmatore poco serio, mi dispiace ma non c'entra con quello che ti ho detto.
  • Re: Codice valido ma non funziona. Consigli?

    carlo pots ha scritto:


    P.s.: purtroppo, sul fatto che devo studiare bene il VB (per lo meno quello di Access) per portare il codice in BAL sotto VB, sono d'accordissimo con te e con qualcun altro che ha detto qualcosa del genere, ma dalla mia parte, quello che non ho è il tempo per poter studiare con calma.
    Lavoro per 8 ore al giorno normalmente e sto sviluppando questa procedura parallelamente con grosso dispendio di tempo libero e risorse.
    Dovrei cercare di consegnare un lavoro decente e funzionante per gennaio o max per febbraio, altrimenti devo dire addio a diversi kEuro
    Il problema di fondo è che ti sei impegnato a fare qualcosa che non sai fare.
    Oltretutto non si capisce nulla di quello che scrivi, e quello che hai scritto è tutto sbagliato.
  • Re: Codice valido ma non funziona. Consigli?

    gibra ha scritto:


    Il problema di fondo è che ti sei impegnato a fare qualcosa che non sai fare.
    Infatti ... è quello che gli volevo far capire ... Come se io volessi fare il bilancio di una società e chiedessi in un forum di ragionieri/commercialisti ...
  • Re: Codice valido ma non funziona. Consigli?

    Certo che, come supporto morale, siete davvero eccezionali.

    Grazie comunque; provvederò da solo (come sempre, del resto...)
    Buona notte
  • Re: Codice valido ma non funziona. Consigli?

    Non ti serve "supporto morale" o qualcuno che ti dica bugie. Ti serve solo un programmatore (e neanche bravo) che ti faccia il porting di tutta l'applicazione. Punto.
Devi accedere o registrarti per scrivere nel forum
12 risposte