Probabilmente ne mastico meno di te, ma siccome provengo da Access (addiriittura 98) sono abituato ad usare questo DB, più (anche) le possibilità di utilizzo delle Query. Anch'io ho dovuto richiamare il contenuto variabile di alcune tabelle "pesanti" in tempo reale ed ho fatto più o meno così:
codice:
Private Sub caricaElenco()
Dim rcrdst_1 As New ADODB.Recordset, rcrdst_2 As New ADODB.Recordset, sSQL As String
Dim i As Integer
sSQL = "SELECT IlTuoNuovoRecord From LaTuaTabellaDiOrigine"
rcrdst_1.Open(sSQL, CnDBLocale, ADODB.CursorTypeEnum.adOpenStatic, ADODB.LockTypeEnum.adLockOptimistic)
sSQL = "SELECT IlTuoNuovoRecordDaAggiungere From LaTuaTabellaDaCaricare"
rcrdst_2.Open(sSQL, CnDBLocale, ADODB.CursorTypeEnum.adOpenStatic, ADODB.LockTypeEnum.adLockOptimistic)
For i = 0 To rcrdst_1.RecordCount - 1
rcrdst_2.AddNew()
rcrdst_2("IlTuoNuovoRecordDaAggiungere").Value = rcrdst_1("IlTuoNuovoRecord").Value
rcrdst_2.Update()
rcrdst_1.MoveNext()
Next i
End Sub
E poi, siccome non sono molto bravo con l'SQL, ho usato la funzione Query di Access: L'IDE delle Query mi permette di comporle come voglio, poi copio brutalmente il codice SQL e lo incollo in VB .NET
Per aggiornare la ListBox, semplicemente richiamo la Sub caricaElenco.