Buongiorno a tutti,
sono nuovo del forum e chiedo venia in anticipo per eventuali inesattezze o strafalcioni che vi sottoporrò.
Capite già che le conoscenze di access non sono sicuramente ai vs livelli.
Ho una maschera singola frm_modulo_2 con un controllo a schede (orc, pdc_comp, pdc_ass, p_tech). E per ora si lavora sulla prima scheda, orc. La scheda orc è organizzata anch’essa con un controllo a schede (analisi_ex, dt_pp, calcolo, tm_delta_sh, port_cs). Per far ciò ho utilizzato una sottomaschera, subform_modulo_2_orc che ha appunto il controllo a schede precedente.
Questa sottomaschera ha come origine controllo una tabella mod2_assunzioni che filtro con una “select * from mod2_assunzioni where id_assunzioni = 1;”.
I campi della select sono origine controllo di alcuni textbox nelle diverse schede della subform (non tutti in una singola scheda della subform, alcuni in analisi_ex, altri in calcolo, altri in tm_delta_sh) e inoltre ci sono molti altri controlli (soprattutto textbox) calcolati e derivati dai controlli precedenti. Le derivazioni sono a più livelli di profondità, non solo derivati dal campo in tabella, sono praticamente annidati.
Ed ora il problema. Mi serve calcolare il valore minimo assunto da un controllo (textbox) al variare di due campi presenti in tabella che alimenta la subform.
Quando apro in modalità visualizzazione la subform_modulo_2_orc (ma anche la form_modulo_2) posso variare il contenuto dei controlli textbox e la maschera (form o subform) si aggiorna correttamente (cambio il valore nella textbox e premendo invio mi aggiorna i campi, in particolare quello di mio interesse) e ciò cambiando entrambe le textbox. Nella tabella di origine i campi non sono variati finché non faccio un salva.
Poiché mi interessa calcolare il valore minimo assunto dal textbox al variare dei valori delle altre due textbox ho inserito un pulsante e da codice provo a far variare i valori e leggere quello desiderato. Ho pensato di inserire il tutto in una tabella tramite un recordset e poi analizzare la tabella creata alla ricerca del valore minimo (e dei corrispondenti valori che lo hanno determinato). Il codice utilizzato è il seguente
(TestoTM_DSH_E4 è la textbox che deve variare tra un valore minimo e un massimo letti da altri 2 controlli,
TestoTM_DSH_F4 è la seconda textbox che deve variare tra min e max letti da altri 2 controlli e un altro controllo TestoTM_DSH_L6, anch?esso calcolato e derivato tante volte, deve risultare sempre >=0; prova è la tabella dove voglio far confluire i valori delle 2 textbox variabili e della textbox di interesse, dic cui calcolare il minimo al variare delle precedenti)
Private Sub Comando738_Click()
Dim min_1, max_1, k, min_2, max_2, var1, var2 As Variant
Dim rs1 As DAO.Recordset
Set db = CurrentDb
Set rs1 = db.OpenRecordset("Select * from prova", dbOpenDynaset)
min_1 = TestoTM_DSH_B8.Value 'vincolo_1_inf.Value ' >=
max_1 = TestoTM_DSH_B9.Value 'vincolo_1_sup.Value ' <=
min_2 = TestoTM_DSH_B12.Value 'vincolo_2_inf.Value ' >=
max_2 = TestoTM_DSH_B11.Value 'vincolo_2_sup.Value ' <=
k = TestoTM_DSH_L6.Value ' vincolo_3.Value '>=
DoCmd.RunSQL ("delete from prova;") ‘svuoto la tabella prova
For var1 = min_1 To max_1 Step 0.01
TestoTM_DSH_E4.Value= var1
'DoCmd.RunSQL ("update mod2_assunzioni set tmax_tm_dsh_e4 = " & Replace(var1, ",", ".") & " WHERE ID_assunzioni=1;")
For var2 = min_2 To max_2 Step 0.01
'DoCmd.RunSQL ("update mod2_assunzioni set deltat_sh_tm_dsh_f4 = " & Replace(var2, ",", ".") & " WHERE ID_assunzioni=1;")
TestoTM_DSH_F4.Value = var2
DoCmd.RepaintObject acForm, "subform_modulo_2_orc"
k = TestoTM_DSH_L6.Value
If k >= 0 Then
rs1.AddNew
rs1.Fields(1) = TestoTM_DSH_E4.Value
rs1.Fields(2) = TestoTM_DSH_F4.Value
rs1.Fields(3) = TestoTM_DSH_H6.Value
rs1.Update
Else
End If
Next var2
Next var1
End Sub
Alcune istruzioni sono commentate e le ho riportate per mostrare i diversi tentativi.
Il problema è che quando faccio variare, o meglio provo ad assegnare via codice i valori ai controlli che rappresentano le variabili (TestoTM_DSH_E4.Value = var1 o anche impostandolo come aggiornamento della tabella di origine per poi fare un recalc, requery o repaint) la maschera o sottomaschera non si aggiorna correttamente riportandomi gli errori #Errore o #Tipo.
A cosa è dovuto il differente comportamento (variazione in modalità visualizzazione nessun errore rispetto all’attribuzione via codice)? Cosa sbaglio e come potrei intervenire? Mi scuso per la lunghezza ma volevo descrivere in modo dettagliato per evitarvi problemi di interpretazione.
Grazie in anticipo dell’attenzione che vorrete prestare.
Saluti.