Home Page
Articoli
Tips & Tricks
News
Forum
Archivio Forum
Blogs
Sondaggi
Rss
Video
Utenti
Chi Siamo
Contattaci
Username:
Password:
Login
Registrati ora!
Recupera Password
Home Page
Stanze Forum
SQL Server 2000/2005/2008, Express, Access, MySQL, Oracle
Routine che confronta i records di due tabelle o query e identifica le...
domenica 15 luglio 2012 - 18.28
Elenco Threads
Stanze Forum
Aggiungi ai Preferiti
Cerca nel forum
LORY57
Profilo
| Newbie
5
messaggi | Data Invio:
dom 15 lug 2012 - 18:28
Un saluto a tutti. Mi sono registrato da poco in questo forum e non sò se posso postare una routine di Alberto Piano preso dal sito comune.
Comunque, ci provo.( spero di non violare nessuna regola)
Piccola ma importante premessa: non sono un esperto ma mi accingo a diventarlo.
Problema:
Dalla routine seguente mi servirebbe ( termine un pò utilitaristico ) che le diffrenze esprsse dalla routine mi vengano riportate in una nuova tabella anzichè in un messaggio.
Public Sub Tabelle_a_confronto(Tab1 As string, Tab2 As String)
'Autore: Alberto Plano (albertoplano@iteco.it)
'Input: Nome delle due tabelle/query da confrontare.
'Tab1 e Tab2 devono avere la stessa struttura affinchè
' i risultati ottenuti siano sensati.
'Tab1 e Tab2 non devono contenere campi di tipo OLE.
Dim dbase As DAO.Database
Dim T1As DAO.Recordset, T2 As DAO.Recordset
Dim campo As DAO.Field
Dim aiuto1(), aiuto2() As String
Dim indice1, indice2 As Long
Set dbase = CurrentDb
Set T1 = dbase.OpenRecordset(Tab1, dbOpenSnapshot)
Set T2 = dbase.OpenRecordset(Tab2, dbOpenSnapshot)
Rem Creo le matrici aiuto1 e aiuto2
T1.MoveLast
T2.MoveLast
ReDim aiuto1(1 To T1.RecordCount)
ReDim aiuto2(1 To T2.RecordCount)
T1.MoveFirst
For indice1 = 1 To T1.RecordCount
aiuto1(indice1) = ""
For indice2 = 0 To T1.Fields.Count - 1
aiuto1(indice1) = aiuto1(indice1) + CStr(T1(indice2).Name) + " " + CStr(Null_to_zero(T1(indice2))) & Chr$(10)
Next indice2
T1.MoveNext
Next indice1
T2.MoveFirst
For indice1 = 1 To T2.RecordCount
aiuto2(indice1) = ""
For indice2 = 0 To T2.Fields.Count - 1
aiuto2(indice1) = aiuto2(indice1) + CStr(T1(indice2).Name) + " " + CStr(Null_to_zero(T2(indice2))) & Chr$(10)
Next indice2
T2.MoveNext
Next indice1
Rem Elimino le stringhe uguali che sono contenute in Aiuto1 e Aiuto2
For indice1 = 1 To T1.RecordCount
For indice2 = 1 To T2.RecordCount
If aiuto1(indice1) = aiuto2(indice2) Then
aiuto1(indice1) = ""
aiuto2(indice2) = ""
Exit For
End If
Next indice2
Next indice1
Rem Visualizzo i record di Tab1 che non sono contenuti in Tab2
Dim messaggio As String
Dim uguale As Integer
uguale = True
For indice1 = 1 To T1.RecordCount
If aiuto1(indice1) <> "" Then
messaggio = "Record presente in " & Tab1 & " e mancante in " & Tab2 & Chr$(10) & Chr$(10) & aiuto1(indice1)
MsgBox messaggio
uguale = False
End If
Next indice1
For indice2 = 1 To T2.RecordCount
If aiuto2(indice2) <> "" Then
messaggio = "Record presente in " & Tab2 & " e mancante in " & Tab1 & Chr$(10) & Chr$(10) & aiuto2(indice2)
MsgBox messaggio
uguale = False
End If
Next indice2
If uguale Then
MsgBox Tab1 & " e " & Tab2 & " sono identiche."
End If
End Sub
Un grazie per chi vorrà aiutarmi.
Torna su
Stanze Forum
Elenco Threads
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?
Dopo esserti registrato potrai chiedere
aiuto sul nostro
Forum
oppure aiutare gli altri
Consulta le
Stanze
disponibili.
Registrati ora !