Ciao a tutti.
Premesso che nella vita non utilizzo Access ma insegno il suo uso basilare, infatti faccio il docente di informatica.
Il problema:
Un caro amico mi ha chiesto di creare una qualcosa che:
1) legge un peso da una tabella (CHPLIB_STATSPED!TTPES)
2) lo compara con un range di peso in una seconda tabella (Fasce_Pesi!Peso_DA & Fasce_Pesi!Peso_A)
3) quando ha trovato il range prende un valore dalla tabella e lo scrive nella prima tabella (CHPLIB_STATSPED!FASCIA = Fasce_Pesi!Fascia)
Spulciando sulla rete ho trovato qualcosa che ho "accrocchiato" così:
'###############################################
Option Compare Database
Sub showQueryData()
Dim db As dao.Database
Dim rs As dao.Recordset
Dim rs1 As dao.Recordset
Dim rs2 As dao.Recordset
Dim sqlStr As String
Set db = CurrentDb
sqlStr = "SELECT * FROM CHPLIB_STATSPED"
Set rs = db.OpenRecordset(sqlStr)
sqlStr1 = "SELECT COUNT(*) FROM Fasce_Pesi"
Set rs1 = db.OpenRecordset(sqlStr1)
RecordCount = rs1.Fields(0)
sqlStr2 = "SELECT * FROM Fasce_Pesi"
Set rs2 = db.OpenRecordset(sqlStr2)
'
' rs.MoveFirst
' Do While Not rs.EOF
' MsgBox ("FASCIA " & rs!FASCIA & " = Peso DA : " & rs!Peso_DA & " a Peso : " & rs!Peso_A)
' rs.MoveNext
' Loop
' MsgBox ("Fine Tabella Fasce_Prezzi")
rs.MoveLast
rs.MoveFirst
Do While Not rs.EOF
rs2.MoveLast
rs2.MoveFirst
RecordKey = rs!TTPRG
For a_counter = 1 To RecordCount
If (rs!TTPES >= rs2!Peso_DA And rs!TTPES <= rs2!Peso_A) Then
FASCIA = rs2!FASCIA
Else
rs2.MoveNext
End If
Next a_counter
' Msg = "PESO " & rs!TTPES & vbCrLf _
& "FASCIA " & FASCIA & vbCrLf _
& " Continuo?"
' Msg_2 = "PESO " & rs!TTPES & " FASCIA " & FASCIA & " --> RecordKey = " & RecordKey
Sql2 = "UPDATE CHPLIB_STATSPED SET FASCIA = '" & FASCIA & _
"' WHERE TTPRG = " & RecordKey & ";"
' DoCmd.RunSQL Sql2, 0
CurrentDb.Execute Sql2
' Style = vbYesNo + vbCritical + vbDefaultButton2
' Title = "MsgBox Demonstration"
' Response = MsgBox(Msg, Style, Title)
' If Response = vbYes Then
' Debug.Print Sql2
rs.MoveNext
' Else
' Exit Do
' End If
Loop
MsgBox ("End of Table")
End Sub
'############################################################
Funzionare, funziona solo che su 1.047.000 record ci mette una vita.
Come posso modificare il tutto per renderlo più veloce?
Grazie inanticipo.
Max