Torna al Thread

Public Sub AggNum() Dim maxNum As Long Dim Dbx As DAO.Database Dim Rs1 As DAO.Recordset Dim Rs2 As DAO.Recordset Set Dbx = DBEngine(0)(0) ' apriamo 1° recordset dove non c'è Num Set Rs1 = Dbx.OpenRecordset("SELECT DISTINCT CLng(Data) AS IntDat FROM T1 WHERE (Num Is Null);", dbOpenDynaset) If Rs1.RecordCount = 0 Then Exit Sub Rs1.MoveFirst Do Until Rs1.EOF ' ci fissiamo la Data del 1° in una variabile (io preferisco numerica) ...... maxNum = Nz((DMax("Num", "T1", "CLng(Data)=" & Rs1.Fields("IntDat").Value & "")), 0) ' ..... e apriamo il 2° recorset filtrando sulla data del 1° Set Rs2 = Dbx.OpenRecordset("SELECT Num FROM T1 WHERE ((Num Is Null) AND (CLng(Data)=" & Rs1.Fields("IntDat").Value & ")) ORDER BY Id;", dbOpenDynaset) Rs2.MoveFirst ' questo non servirebbe perche abbiamo l'ordinamento, ma!!! siamo prudenti :)) Do Until Rs2.EOF ' Mettiamo il numero solo dove manca sulla base del maxNum che avevamo trovato Rs2.Edit Rs2.Fields("Num").Value = maxNum + 1 Rs2.Update ' incrementiamo maxNum di 1 per prepararlo al prossimo UPDATE maxNum = maxNum + 1 Rs2.MoveNext Loop Rs1.MoveNext Loop Rs1.Close Rs2.Close Dbx.Close Set Rs1 = Nothing Set Rs2 = Nothing Set Dbx = Nothing End Sub
Copyright © dotNetHell.it 2002-2024
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5