Salve a tutti
Ho questo spezzettone di codice
Tutto ciò deve essere eseguito quando viene chiuso il formcodice:Private Sub Form_QueryUnload(Cancel As Integer, UnloadMode As Integer) If Me.TextNumFatt = "" Then End If UnloadMode = 0 Then Cancel = True Else 'Devo ricalcolare magazzino e totali Set cs = New ADODB.Connection Set rs = New ADODB.Recordset Set con = New ADODB.Connection Set res = New ADODB.Recordset ' How To: Chiusura form e modifica totali: _ Stabilire le connessioni, recuperare il vecchio totale _ calcola il nuovo totale tramite quantità * prezzo ( _ quella già preventivamente scaricata. Effettua la sottrazione _ rigetta i parametri nel database, chiudi le connessioni, settale _ con valore nothing, passa al punto B (standby, DoEvents) 'Res = dettagli fatture 'Rs = anagrafica prodotti cs.Open provider rs.Open "anagprodotti", cs, 3, 3 con.Open provider res.Open "dettfatture", con, 3, 3 ' 1. Connessioni stabilite If TextNumFatt.text = "" Then TextNumFatt.text = "0" End If Set res = con.Execute("Select * from dettfatture where dett_numfatt = " & TextNumFatt.text) If res.RecordCount < 1 Then Exit Sub res.MoveFirst rs.MoveFirst ' 2. Risultati puntati al primo record While rs.EOF = False Set rs = cs.Execute("Select * from anagprodotti where cod_prodotto = '" & res.Fields("dett_codprodotto").Value & "'") vecchiototale = rs.Fields("prezzototale").Value ' 3. Totale vecchio recuperato nuovototale = CCur(rs.Fields("quantita_totale").Value) * CCur(rs.Fields("pracquistoe_prodotto").Value) ' 4. Totale nuovo recuperato newtot = vecchiototale - nuovototale ' 5. Totale da mettere in db recuperato cs.Execute ("Update anagprodotti set prezzototale = '" & newtot & "' where cod_prodotto = '" & res.Fields("dett_codprodotto").Value & "'") ' 6. Totale rigettato in database ' 6.1 Per quanto riguarda le quantità MsgBox "Update anagprodotti set quantita_magazzino = '" & rs.Fields("quantita_magazzino").Value - res.Fields("dett_quantita").Value & "'" cs.Execute ("Update anagprodotti set quantita_magazzino = '" & rs.Fields("quantita_magazzino").Value - res.Fields("dett_quantita").Value & "'") ' 7. Non chiudo le coonnessioni perchè è un ciclo res.MoveNext Wend ' 8. Rifaccio il ciclo finchè non finiscono i record della fattura indicata End If
Accorgendomi che non funzionava, ho messo delle msgbox sparse per tutta la sub per capire cosa eseguiva e cosa no.
Mi sono accorto che tutto va bene fino al ciclio con while
Infatti non lo esegue per niente. Ho provato a cambiarlo con do until res.eof ma niente da fare il compilatore non lo calcola per niente, non prende via di eseguirlo, il che, dopo averlo letto varie volte, pare alquanto strano. Avete qualche idea?

Rispondi quotando
